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ファイルで指定します。

  1. 顧客別のアクセス制御
    顧客ユーザーに対して有効な制御です。顧客ユーザーの詳細については「ユーザー」を参照してください。
    設定はCatalogのYAMLファイルのcustomersラベルで行います。customerラベルを設定すると、顧客ユーザー以外と、指定した顧客ユーザーに対して表示されます。設定しない場合は、すべてのユーザーに表示されます。詳細は「Catalog」を参照してください。

    (表)顧客によるアクセス制御
    ユーザー customersラベル
    設定なし 顧客Aを指定
    顧客ユーザー以外 表示 表示
    顧客Aに所属する顧客ユーザー 表示 表示
    顧客Bに所属する顧客ユーザー 表示 非表示

  2. グループ別のアクセス制御
    すべてのユーザーに対して有効な制御です。
    設定は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の詳細は以下を参照してください。