階層 1 ランディングページでのドーナツの構成
階層 1 ランディングページの [概要 (Overview)] セクションでドーナツに表示されるデータを構成します。
始める前に
必要なロール:admin
このタスクについて
手順
- 移動先 すべて > サービスオペレーションワークスペースアドミンセンター > 概要.
- [概要 (Overview)] タブの [初期設定 (Initial Setup)] セクションから、[ランディングページを構成 (Configure the landing page)] オプションを選択します。
- ランディングページフォームの [階層 1 (Tier 1)] セクションで、[ドーナツ構成 (Donut configurations)] の横にある [構成 (Configure)] を選択します。
- オプション:
ランディングページで PAR ダッシュボードがアクティブな場合は、次の手順を実行します。
- 階層 2 のドーナツ構成を構成を構成します。注:ダッシュボードを作成する場合は、保存された可視化を使用してダッシュボードのカードを作成できます。データの可視化は、それぞれのロールに基づいてユーザーにのみ表示されます。
ダッシュボードの可視化にサービスオペレーションワークスペース値を追加したことを確認します。
- [ランディングページにロードされたダッシュボード] ドロップダウンオプションから、SOW ランディングページのデフォルトダッシュボードを選択します。[保存] を選択します。
- ダッシュボードの要素を変更したら、[保存] を選択します。
- 階層 2 のドーナツ構成を構成を構成します。
- オプション:
ランディングページで PAR ダッシュボードがアクティブでない場合は、[スクリプト (Script)] フィールドを編集してクラス ServiceDeskLandingPageUtils内にコードを追加します。
注:このメソッドは SowIncidentLandingPageUtilsSNC からコピーされます。新しいドーナツを追加したり、既存のドーナツを削除したりするには、メソッド getVisualizationConfig コピーして SowIncidentLandingPageUtils し、要件に従って変更する必要があります。
static async getVisualizationConfig(helpers, mode, conditionalRecordCount=0) { const evamDef = this.getEvamDef(); const visualizationConfig = [{ "id": "incident_assigned", "tableName": "incident", "tableDisplayValue": "Incident", "myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe^state!=6", "myTeamQuery": "active=true^assigned_toISNOTEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744^state!=6", "listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page", "header": mode == 'your_work' ? await helpers.translate("Incidents assigned to you") : await helpers.translate("Incidents assigned to your team"), "groupByField": "state", "evamId": evamDef['incidentEvamDefinitionId'], "updated_on": "^ORDERBYDESCsys_updated_on", "roles":mode == "your_work" ? ["itil","sn_incident_write"] : ["itil","sn_incident_read"], }, { "id": "incident_sla", "tableName": "task_sla", "tableDisplayValue": "Task SLA", "myWorkQuery": "task.sys_class_name=incident^task.assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe^task.active=true^sla.type=SLA^ORsla.type=OLA^active=true^time_left<=1970-01-08 00:00:00", "myTeamQuery": "task.sys_class_name=incident^task.assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744^task.active=true^sla.type=SLA^ORsla.type=OLA^active=true^time_left<=1970-01-08 00:00:00", "listView": 'sow_landing_page', "header": await helpers.translate("Incident SLAs"), "groupByField": "time_left", "evamId": evamDef['incidentSlaEvamDefinitionId'], "updated_on": "^ORDERBYtime_left", "roles":mode == "your_work" ? ["itil","sn_incident_write"] : ["itil","sn_incident_read"], }, { "id": "unassigned_incidents", "tableName": "incident", "tableDisplayValue": "Incident", "myWorkQuery": "active=true^assigned_toISEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744", "myTeamQuery": "active=true^assigned_toISEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744", "listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page", "header": await helpers.translate("Unassigned incidents"), "groupByField": "priority", "evamId": evamDef['incidentEvamDefinitionId'], "updated_on": "^ORDERBYDESCsys_updated_on", "roles":mode == "your_work" ? ["itil","sn_incident_read"] : ["itil","sn_incident_read"], }, { "id": "catalog_tasks", "tableName": "sc_task", "tableDisplayValue": "Catalog Task", "myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe", "myTeamQuery": "active=true^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744", "listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page", "header": mode == 'your_work' ? await helpers.translate("Catalog tasks assigned to you") : await helpers.translate("Catalog tasks assigned to your team"), "groupByField": "state", "evamId": evamDef["catalogTaskEvamDefinitionId"], "updated_on": "^ORDERBYDESCsys_updated_on", "roles":mode == "your_work" ? ["itil","sn_request_write"] : ["itil","sn_request_read"], } ]; if(mode=='your_work' && conditionalRecordCount>0){ const conditionalConfig = await this.getConditionalVisualizationConfig(helpers); visualizationConfig.push(conditionalConfig); } return visualizationConfig; }階層 1 のランディングページに問題ドーナツを追加するには、以下に説明するコードスニペットのような、要件に従ってスニペットを追加します。
{ "id": "problemsAssigned", "tableName": "problem", "tableDisplayValue": "Problem", "myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe", "myTeamQuery": "active=true^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744", "header": mode == 'your_work' ? await helpers.translate("Problems assigned to you") : await helpers.translate("Problems assigned to your team"), "groupByField": "state", "evamId": "5f0697b8f49bc510f8773ad5bd0ae292", "updated_on": "^ORDERBYDESCsys_updated_on", "roles":mode == "your_work" ? ["itil","problem_coordinator"] : ["itil","sn_problem_read","problem_task_analyst"] }SowIncidentLandingPageUtilsSNCからfetchTitleメソッドをコピーして、ドーナツをクリックしたときに表示されるリストのラベルを追加します。
static async fetchTitle(table, selectedField, groupByField, groupMode = false) { if(selectedField == undefined){ selectedField = 'all'; } const labelMap = { 'incident': { 'state': { 'all':'Incidents', '1': 'New incidents', '2': 'In Progress incidents', '3': 'On Hold incidents', '6': 'Resolved incidents' }, 'priority': { 'all':'Unassigned incidents', '1': 'P1 unassigned incidents', '2': 'P2 unassigned incidents', '3': 'P3 unassigned incidents', '4': 'P4 unassigned incidents', '5': 'P5 unassigned incidents' } }, 'sc_task': { 'state': { 'all':'Catalog tasks', '-5': 'Pending catalog tasks', '1': 'Open catalog tasks', '2': 'Work in progress catalog tasks' } }, 'task': { 'sys_class_name': { 'sc_task': 'Catalog tasks delegated to you', 'incident': 'Incidents delegated to you' } } }; if((table == 'incident' && groupByField == 'priority') || table == 'task') return labelMap[table][groupByField][selectedField]; if (groupMode) return labelMap[table][groupByField][selectedField] + ' assigned to your team'; return labelMap[table][groupByField][selectedField] + ' assigned to you'; }以下のコードブロック例で説明されているようにラベルを追加して、ドーナツをクリックしたときにラベルをリスト見出しとして表示します。
'problem': { 'state' :{ '101': 'New problems', '102': 'Assess problems', '106': 'Resolved problems', '104': 'Fix in Progress problems', '103': 'Root Cause Analysis problems', 'all':'Problems' } }, - [Update (更新)] を選択します。