4.3.1 サービスカタログの設計
サービスカタログの設計では、サービスカタログの作成を行います。
| 項目 | 定義手段 | 設計のポイント |
|---|---|---|
| Catalog | YAMLファイル | 必要となるカタログアイテムを洗い出した上で、申請やデータレコード呼び出しなどのパターンで分類します。また、カタログアイテムの表示・非表示と、表示順を整理します。 |
サービスカタログは複数のカタログアイテムで構成されます。またカタログアイテムは、カテゴリーで分類されます。
ユーザーはカタログアイテムから、ワークフローを実行することができます。またワークフローからUIのYAMLファイルで定義した画面を表示し、データレコードなどの作成や編集が行えます。
このようにサービスカタログによって、ユーザーは任意のタスクを管理することができます。
カテゴリーやカタログアイテムはCatalogのYAMLファイルで定義します。詳細は「Catalog」を参照してください。
(1)カテゴリーとカタログアイテムの表示設定
CatalogのYAMLファイルには、ファイルごとに複数のカテゴリーを設定できます。また、カテゴリーごとに複数のカタログアイテムを設定できます。
カテゴリーやカタログアイテムは、CatalogのYAMLファイルに記載された順に表示されます。
サービスカタログを複数のCatalogのYAMLファイルで設定している場合、YAMLファイルをGitアプリケーションに登録した順に表示されます。登録済のYAMLファイルを更新しても表示順に影響しません。
YAMLファイルを登録した順番以外で表示する場合は、表示の優先順位を設定します。詳細は「カテゴリーの表示順(YAMLファイル単位)の優先順位」を参照してください。
また、カタログの表示・非表示を顧客やグループごとに制限できます。詳細は「アクセス制御」を参照してください。
【カテゴリーの表示順(YAMLファイル単位)の優先順位】
カテゴリエリアでは、カテゴリーの表示順を以下の方法で指定することができます。
カテゴリーを複数のCatalogのYAMLファイルに分けて記載している場合、CatalogのYAMLファイルのラベル「order」で表示の優先順位を設定できます。同じ値を設定した場合は順不同に表示し、指定しない場合は指定した場合よりも後に表示されます。また、同一のYAMLファイルに記載されているカテゴリーの表示順は、CatalogのYAMLファイルの記載順に従います。
【アクセス制御】
アクセス制御により、カタログアイテムを参照できるユーザーをCatalogのYAMLファイル単位で指定することができます。指定しない場合はすべてのユーザーが参照できます。
アクセス制御は、顧客別とグループ別の2種類の方法があります。顧客別アクセス制御とグループ別アクセス制御を同時に使用する場合は、両方の条件を満たしたユーザーが参照できます。
注意事項
カタログアイテムを参照できるユーザーの設定は本機能で行うため、CatalogのYAMLファイルで指定しますが、カタログアイテムにひもづくワークフローの申請、承認、およびタスク実行などの各アクティビティを実行できるユーザーの設定は、WorkflowのYAMLファイルで指定します。
- 顧客別のアクセス制御
顧客ユーザーに対して有効な制御です。顧客ユーザーの詳細については「ユーザー」を参照してください。
設定はCatalogのYAMLファイルのcustomersラベルで行います。customerラベルを設定すると、顧客ユーザー以外と、指定した顧客ユーザーに対して表示されます。設定しない場合は、すべてのユーザーに表示されます。詳細は「Catalog」を参照してください。
(表)顧客によるアクセス制御
ユーザー customersラベル 設定なし 顧客Aを指定 顧客ユーザー以外 表示 表示 顧客Aに所属する顧客ユーザー 表示 表示 顧客Bに所属する顧客ユーザー 表示 非表示
- グループ別のアクセス制御
すべてのユーザーに対して有効な制御です。
設定はCatalogのYAMLファイルのgroupsラベルで行います。
groupsラベルを設定すると、指定したグループに対して表示されます。設定しない場合は、すべてのグループに表示されます。詳細は「Catalog」を参照してください。
(表)グループによるアクセス制御
ユーザー groupsラベル 設定なし グループAを指定 グループAに所属するユーザー 表示 表示 グループBに所属するユーザー 表示 非表示 登録したカタログアイテムをすべて参照できるのは、各YAMLファイルのgroupsラベルに指定したグループすべてに所属しているユーザーです。
【サービスカタログ情報の取得】
サービスカタログの情報を取得する場合、API「GET /api/v1/service-catalogs」を使用します。APIおよび実行するためのロールについての詳細は「APIとOps I上ロールの対応関係」および「JP1 Cloud Service 運用統合 APIリファレンス」の「APIリファレンス詳細>標準提供API」を参照してください。
(2)ワークフロー実行パラメータの事前設定
カタログアイテムからワークフローを実行する際に、CatalogのYAMLファイルで設定したパラメータを、WorkflowのYAMLファイルやJavaScriptファイルから参照できます。
これにより、パラメータによって挙動が変化するワークフローを定義できます。
例えば、内容が似ている複数のワークフローを同一のWorkflowのYAMLファイルとJavaScriptファイルで表現し、個別処理をパラメータによって分岐させるようにしておくことで、ワークフローごとにYAMLファイルやJavaScriptファイルを作成する手間を省くことができます。
ワークフロー実行時にパラメータを渡したい場合は、カタログアイテムのparametersラベルに渡したい値を記述します。
パラメータを定義するファイルは以下になります。
workflow_typeというパラメータの値によって個別の処理を行う例を示します。この定義例では、ワークフローのタイプが問い合わせ(contact)の場合に、回答期限フィールド(response_deadline)フィールドを有効化します。
| ファイル | 説明 |
|---|---|
| Catalogの YAMLファイル |
itemsのparameterラベルにKey-Value形式で、パラメータと指定する値を設定します。パラメータはWorkflowのYAMLファイルのparametersラベルで設定済みの必要があります。 CatalogのYAML定義の詳細は「Catalog」を参照してください。 <定義例> categories: - name: main_category label: WF起動パラメータ確認 items: - workflow: main_category_wf label: Request description: 申請 parameters: workflow_type: request - workflow: main_category_wf label: Contact description: 問い合わせ parameters: workflow_type: contact - workflow: main_category_wf label: Notification description: 通知 parameters: workflow_type: notification |
| Workflowの YAMLファイル |
parametersラベルに、パラメータ(Key)を設定します。 WorkflowのYAML定義の詳細は「Workflow」を参照してください。 また、ワークフローのパラメータを埋め込む箇所は「<% ctx().パラメータ %>」の形式で記述します。 <定義例> parameters: workflow_type: required: false type: string default: '' input: - workflow_type tasks: start: label: start step: start action: core.noop ui: catalog_start_ui next: - when: <% ctx().workflow_type = 'request' %> do: taskA - when: <% ctx().workflow_type = 'contact' %> do: taskB - when: <% ctx().workflow_type != 'request' and ctx().workflow_type != 'contact' %> do: taskOther - when: <% failed() %> do: fail |
| UIの YAMLファイル |
使用するUIはUIバージョン1.1である必要があります。また、ワークフローで使用するUIはtypeにuipath、valueにworkflow_detail_by_context_idを指定します。 <定義例> apiVersion: 1.1 kind: ui type: resource name: test_ui label: test_ui description: test_ui context: type: uipath value: workflow_detail_by_context_id |
| JavaScript ファイル |
アクションスクリプト「OIWorkflow.getParams」を用いて、WorkflowのYAMLファイルで設定したパラメータの取得を行い、ユーザーの目的に合わせパラメータに応じた動作を行うよう設定します。 <定義例> async function handleAfterLoadData() { // パラメータの取得 const params = await OIWorkflow.getParams(); // 変数に応じてフォームのフィールドの表示/非表示の切替 if (params["workflow_type"] === "contact") { const form = new OIForm("contact_form"); await form.setFieldVisible("response_deadline", true); } } JavaScriptファイルに指定するアクションスクリプトの詳細は「アクションのスクリプト(UIバージョン1.1)」を参照してください。 |
本機能を使用する場合、UIのYAMLファイル、ScriptのYAMLファイルで指定するJavaScriptファイルは、UIバージョン1.1で記述してください。UIバージョン1.1の詳細は以下を参照してください。