ダッシュボード API - ServiceNow Fluent
ダッシュボード API は、データを視覚的に整理および共有するためのダッシュボード [par_dashboard] を定義します。
ダッシュボードは、タブ、ウィジェット、可視化、および権限で構成されます。各タブには、データの可視化、見出し、リッチテキスト、およびその他のコンポーネントを表示するウィジェットが含まれています。
ダッシュボードは、ダッシュボードオブジェクトの可視化アレイから 1 つ以上のワークスペースを参照することによって、ワークスペースのホームページとして使用できます。 ワークスペースを作成するには、「 ワークスペース API - ServiceNow Fluent」を参照してください。
ダッシュボードに関する一般的な情報については、「Dashboards in Platform Analytics」を参照してください。
ダッシュボードオブジェクト
データの可視化、フィルター、タブ、ウィジェット、権限、およびヴィジビリティルールを含む共有可能なダッシュボード [par_dashboard] を作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。メタデータオブジェクトの一意の ID。アプリケーションをビルドすると、この ID は一意のsys_idにハッシュされます。詳細については、「ServiceNow Fluent 言語構成」を参照してください。 形式: |
| name | 文字列 | 必須。ダッシュボードに表示する名前。 |
| アクティブ | ブール | ダッシュボードがアクティブかどうかを示すフラグ。 デフォルト:true |
| タブ | アレイ | ダッシュボードに表示するタブのリスト。詳細については、「タブアレイ」を参照してください。 |
| permissions | アレイ | ダッシュボードへのアクセスに必要なユーザー権限のリスト。詳細については、「権限アレイ」を参照してください。 |
| ヴィジビリティ | アレイ | ダッシュボードを表示する UX エクスペリエンスを制御するヴィジビリティルールのリスト。詳細については、「ヴィジビリティアレイ」を参照してください。 デフォルト:sys_id 08c73d60537101100834ddeeff7b1287 のデフォルトのヴィジビリティルールが使用されます。 |
| $meta | オブジェクト | アプリケーションメタデータのメタデータ。 installMethod プロパティを使用すると、特定の状況でのみロードされる出力ディレクトリにアプリケーションメタデータをマップできます。 installMethod の有効な値:
|
import { Dashboard } from "@servicenow/sdk/core";
Dashboard({
$id: Now.ID["incident_management_dashboard"],
name: "Incident Management Dashboard",
tabs: [
{
$id: Now.ID["incident_overview_tab"],
name: "Overview",
widgets: [
// Single Score: Total Open Incidents
{
$id: Now.ID["total_open_incidents_widget"],
component: "single-score",
componentProps: {
dataSources: [
{
label: "Incident",
sourceType: "table",
tableOrViewName: "incident",
filterQuery: "",
reportSourceSysId: "d94d6f62d7632100b96d45a3ce6103d2",
id: "dGFibGVpbmNpZGVudDE3NjMzOTI0OTY5ODE="
}
],
headerTitle: "Open Incidents",
metrics: [
{
dataSource: "dGFibGVpbmNpZGVudDE3NjMzOTI0OTY5ODE=",
id: "ZEdGaWJHVnBibU5wWkdWdWRERTNOak16T1RJME9UWTVPREU9MTc2MzM5MjQ5Nzc5OQ==",
aggregateFunction: "COUNT",
axisId: "primary"
}
],
sortBy: "value"
},
height: 14,
width: 14,
position: { x: 0, y: 0 }
},
// Vertical Bar: Incidents by Priority
{
$id: Now.ID["incidents_by_priority_widget"],
component: "vertical-bar",
componentProps: {
dataSources: [
{
label: "Incident",
sourceType: "table",
tableOrViewName: "incident",
filterQuery: "",
reportSourceSysId: "d94d6f62d7632100b96d45a3ce6103d2",
id: "dGFibGVpbmNpZGVudDE3NjI3OTU4OTg3NDA="
}
],
headerTitle: "Incidents by Priority",
metrics: [
{
dataSource: "dGFibGVpbmNpZGVudDE3NjI3OTU4OTg3NDA=",
id: "ZEdGaWJHVnBibU5wWkdWdWRERTNOakkzT1RVNE9UZzNOREE9MTc2Mjc5NTg5OTM5OA==",
aggregateFunction: "COUNT",
axisId: "primary"
}
],
groupBy: [
{
groupBy: [
{
dataSource: "dGFibGVpbmNpZGVudDE3NjI3OTU4OTg3NDA=",
groupByField: "priority"
}
],
maxNumberOfGroups: 10,
numberOfGroupsBasedOn: "NO_OF_GROUP_BASED_ON_PER_METRIC",
showOthers: false,
disableRanges: false
}
],
sortBy: "value"
},
height: 14,
width: 17,
position: { x: 14, y: 0 }
},
// Vertical Bar: Incidents by State
{
$id: Now.ID["incidents_by_state_widget"],
component: "vertical-bar",
componentProps: {
dataSources: [
{
label: "Incident",
sourceType: "table",
tableOrViewName: "incident",
filterQuery: "",
reportSourceSysId: "d94d6f62d7632100b96d45a3ce6103d2",
id: "dGFibGVpbmNpZGVudDE3NjI3OTU4OTg3NDA="
}
],
headerTitle: "Incidents by State",
metrics: [
{
dataSource: "dGFibGVpbmNpZGVudDE3NjI3OTU4OTg3NDA=",
id: "ZEdGaWJHVnBibU5wWkdWdWRERTNOakkzT1RVNE9UZzNOREE9MTc2Mjc5NTg5OTM5OA==",
aggregateFunction: "COUNT",
axisId: "primary"
}
],
groupBy: [
{
groupBy: [
{
dataSource: "dGFibGVpbmNpZGVudDE3NjI3OTU4OTg3NDA=",
groupByField: "state"
}
],
maxNumberOfGroups: 10,
numberOfGroupsBasedOn: "NO_OF_GROUP_BASED_ON_PER_METRIC",
showOthers: false,
disableRanges: false
}
],
sortBy: "value"
},
height: 14,
width: 17,
position: { x: 31, y: 0 }
}
]
},
{
$id: Now.ID["incident_trends_tab"],
name: "Trends",
widgets: [] // Can be populated later or left empty
}
],
visibilities: [
{
$id: Now.ID["incident_dashboard_visibility"],
experience: incidentWorkspace
}
],
permissions: []
})
import { Workspace } from "@servicenow/sdk/core";
export const myWorkspace = Workspace({
$id: Now.ID["my_workspace"],
title: "My Workspace",
path: "my-workspace",
tables: ["incident"],
listConfig: myListConfig
})タブアレイ
ダッシュボードのウィジェットを含むタブ [par_dashboard_tab] を作成します。
ダッシュボード内では、タブはアレイ内の位置に基づいて順序付けされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。メタデータオブジェクトの一意の ID。アプリケーションをビルドすると、この ID は一意のsys_idにハッシュされます。詳細については、「ServiceNow Fluent 言語構成」を参照してください。 形式: |
| name | 文字列 | 必須。タブに表示する名前。 |
| アクティブ | ブール | タブがアクティブかどうかを示すフラグ。 デフォルト:true |
| ウィジェット | アレイ | タブに表示するウィジェットのリスト。詳細については、「ウィジェットアレイ」を参照してください。 |
tabs: [
{
$id: Now.ID["my_dashboard_tab1"],
name: "Overview",
widgets: [
{
$id: Now.ID["my_dashboard_widget_1"],
component: "single-score",
componentProps: {
dataSources: [
{
label: "Incident",
sourceType: "table",
tableOrViewName: "incident",
filterQuery: "",
reportSourceSysId: "d94d6f62d7632100b96d45a3ce6103d2",
id: "dGFibGVpbmNpZGVudDE3NjMzOTI0OTY5ODE="
}
],
headerTitle: "Open Incidents",
metrics: [
{
dataSource: "dGFibGVpbmNpZGVudDE3NjMzOTI0OTY5ODE=",
id: "ZEdGaWJHVnBibU5wWkdWdWRERTNOak16T1RJME9UWTVPREU9MTc2MzM5MjQ5Nzc5OQ==",
aggregateFunction: "COUNT",
axisId: "primary"
}
],
sortBy: "value"
},
height: 14,
width: 14,
position: { x: 0, y: 0 }
}
]
}
]
ウィジェットアレイ
グリッドレイアウトのタブ内にウィジェット [par_dashboard_widget] を作成します。
ダッシュボードは、ウィジェットの配置に 48 ポイントのグリッドシステムを使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。メタデータオブジェクトの一意の ID。アプリケーションをビルドすると、この ID は一意のsys_idにハッシュされます。詳細については、「ServiceNow Fluent 言語構成」を参照してください。 形式: |
| component | 参照または文字列 | 必須。ウィジェットとして表示するコンポーネントの名前 (線や単一スコアなど) または UX macroponent 定義 [sys_ux_macroponent] テーブルからのコンポーネントのsys_id。 コンポーネント名は大文字と小文字を区別せず、ビルドプロセス中にsys_idsに解決されます。 |
| 高さ | 番号 | 必須。ウィジェットの高さ (グリッド単位)。 |
| 幅 | 番号 | 必須。ウィジェットの幅 (グリッド単位)。 最大値:48 |
| 位置 | オブジェクト | 必須。x および y プロパティを持つグリッドレイアウト内のウィジェットの位置。たとえば、 値が { x: 0, y: 0 } の場合、ウィジェットはグリッドの左上隅に配置されます。 |
| componentProps | オブジェクト | コンポーネントのプロパティ構成。詳細については、「componentProps オブジェクト」を参照してください。 |
widgets: [
{
$id: Now.ID['incident-count-chart'],
component: 'vertical-bar', // Vertical bar chart
componentProps: {
title: 'Incident Count',
dataSource: 'incident',
aggregation: 'count'
},
height: 8,
width: 6,
position: { x: 0, y: 0 },
},
{
$id: Now.ID['recent-incidents-list'],
component: 'list', // List component
componentProps: {
table: 'incident',
filter: 'active=true',
limit: 10,
columns: ['number', 'short_description', 'priority', 'state']
},
height: 8,
width: 6,
position: { x: 6, y: 0 },
}
],
},
{
$id: Now.ID['analytics'],
name: 'Analytics',
widgets: [
{
$id: Now.ID['metrics-widget'],
component: 'single-score', // Single score component
componentProps: {
title: 'Key Metrics',
scoreSize: 'large'
},
height: 12,
width: 12,
position: { x: 0, y: 0 },
}
]
componentProps オブジェクト
ウィジェット [par_dashboard_widget] のプロパティを設定します。
使用可能なプロパティは、ダッシュボードオブジェクトのコンポーネントプロパティで指定されたコンポーネントによって決まります。
- 傾向データコンポーネントには、 dataSources、 metrics、および trendBy プロパティが必要です。groupBy プロパティはオプションです。
- グループデータコンポーネントには、 dataSource、 metrics、および groupBy プロパティが必要です。これらの可視化では、 trendBy プロパティはサポートされていません。
- 単純なデータコンポーネントには、 dataSources プロパティと metrics プロパティが必要です。groupBy プロパティと trendBy プロパティは、これらの可視化ではサポートされていません。
| 名前 | タイプ | 説明 |
|---|---|---|
| データソース | アレイ | コンポーネントのデータソースのリスト。たとえば、次のようになります: |
| headerTitle | 文字列 | ウィジェットとともに表示するタイトル。 |
| メトリクス | アレイ | データソースについて測定するメトリクスのリスト。たとえば、次のようになります: |
| groupBy | アレイ | データをデータソース別にグループ化および整理するための構成のリスト。たとえば、次のようになります: |
| 傾向別 | オブジェクト | 傾向図の構成。たとえば、次のようになります: |
| sortBy | 文字列 | データをソートする方法。 有効な値:
|
線コンポーネント を使用して、メトリクスが時間の経過とともにどのように変化するかを示しています。{
component: 'line',
componentProps: {
dataSources: [
{
label: 'Incident',
sourceType: 'table',
tableOrViewName: 'incident',
filterQuery: '',
id: 'data_source_1',
},
],
headerTitle: 'Incidents by State',
metrics: [
{
dataSource: 'data_source_1',
id: 'metric_1',
aggregateFunction: 'COUNT',
axisId: 'primary',
},
],
trendBy: {
trendByFrequency: "year",
trendByFields: [
{
field: "sys_created_on",
metric: "metric_1"
}
]
},
},
height: 14,
width: 17,
position: { x: 0, y: 0 },
}単一スコア コンポーネントを使用して、単一のカウントメトリクスを示しています。{
component: 'single-score',
componentProps: {
dataSources: [
{
label: 'Incident',
sourceType: 'table',
tableOrViewName: 'incident',
filterQuery: '',
id: 'data_source_1',
},
],
headerTitle: 'Open Incidents',
metrics: [
{
dataSource: 'data_source_1',
id: 'metric_1',
aggregateFunction: 'COUNT',
axisId: 'primary',
},
]
},
height: 14,
width: 14,
position: { x: 0, y: 0 },
}権限アレイ
ダッシュボードを読み取り、編集、および共有するための権限 [par_dashboard_permission] を定義します。
アレイ内の権限ごとに、 ユーザー、 グループ、または ロール のプロパティの少なくとも 1 つを指定する必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。メタデータオブジェクトの一意の ID。アプリケーションをビルドすると、この ID は一意のsys_idにハッシュされます。詳細については、「ServiceNow Fluent 言語構成」を参照してください。 形式: |
| user | 参照または文字列 | 権限を付与するユーザー [sys_user] の変数識別子またはsys_id。ユーザーを定義するには、 レコード API - ServiceNow Fluentを使用します。 |
| グループ | 参照または文字列 | 権限を付与するユーザーグループ [sys_user_group] の変数識別子またはsys_id。ユーザーを定義するには、 レコード API - ServiceNow Fluentを使用します。 |
| ロール | 参照または文字列 | 権限を付与するロール [sys_user_role] の変数識別子またはsys_id。ユーザーを定義するには、 ロール API - ServiceNow Fluentを使用します。 |
| canRead | ブール | ユーザー、グループ、またはロールがダッシュボードを表示できるかどうかを示すフラグ。 デフォルト:true |
| canWrite | ブール | ユーザー、グループ、またはロールがダッシュボードを編集できるかどうかを示すフラグ。 デフォルト値:false |
| canShare | ブール | ユーザー、グループ、またはロールがダッシュボードを共有できるかどうかを示すフラグ。 デフォルト値:false |
| 所有者 | ブール | ユーザー、グループ、またはロールがダッシュボードの所有者であるかどうかを示すフラグ。少なくとも 1 人のユーザーについては、 owner プロパティを true に設定する必要があります。 デフォルト値:false |
permissions: [
{
$id: Now.ID['manager-user-permission'],
user: 'a8f98bb0eb32010045e1a5115206fe3a', // sys_id of manager user
canRead: true,
canWrite: true,
owner: true,
},
{
$id: Now.ID['itil-role-permission'],
role: '2831a114c611228501d4ea6c309d626d', // sys_id of itil role
canRead: true,
canWrite: false,
},
{
$id: Now.ID['support-group-permission'],
group: 'd625dccec0a8016700a222a0f7900d06', // sys_id of Service Desk group
canRead: true,
canWrite: false,
}
]
ヴィジビリティアレイ
UX エクスペリエンスにダッシュボードが表示される可視化ルール [par_dashboard_visibility] を定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。メタデータオブジェクトの一意の ID。アプリケーションをビルドすると、この ID は一意のsys_idにハッシュされます。詳細については、「ServiceNow Fluent 言語構成」を参照してください。 形式: |
| エクスペリエンス | 参照または文字列 | 必須。ワークスペースオブジェクトの変数識別子または UX アプリケーションのsys_id [sys_ux_page_registry]。詳細については、「ワークスペース API - ServiceNow Fluent」を参照してください。 |
visibilities: [
{
$id: Now.ID["dashboard_visibility_1"],
experience: myWorkspace // Reference to Workspace object
}
]