4.3.3.2 通知を含めたワークフローの定義例

ワークフローの任意のタイミングで通知を行う場合の定義例を示します。
通知の"type"が"onDemand"の場合、ワークフローで指定した任意のタイミングで通知を行えます。
通知の内容に、ワークフローのフィールドの値や、WorkflowのYAMLファイルで設定したパラメータを以下により埋め込むことができます。

  • .GetValueを使用
    使用できる値は「(表)Notificationで使用可能なオブジェクト・フィールド」を参照してください。
  • Ops I提供部品「oi.notify」を使用
    WorkflowのYAMLファイルで定義したパラメータを埋め込めます。メッセージ内容や宛先をワークフロー定義で動的に変更することができます。

WorkflowのYAMLファイルおよびNotificationのYAMLファイルの定義例を以下に示します。
WorkflowのYAML定義については「Workflow」を、Ops I提供部品「oi.notify」については「(表)actionのリスト(Ops I提供部品)」を参照してください。
NotificationとNotifierのYAML定義の詳細については「Notification、Notifier」を参照してください。

注意事項注意事項

WorkflowのYAMLファイルで定義したnotificationの値は、NotificationのYAMLファイルで定義したnameの値と一致する必要があります。また、Ops I提供部品「oi.notify」を使用する場合はNotificationのYAMLファイルに以下のように設定してください。

  • event.resourceは"workflow"に指定する。
  • event.typeは"onDemand"に指定する。
  • conditionsは指定しない。
  • WorkflowのYAMLファイルで定義した「oi.notify」のパラメータをNotificationのYAMLファイルに埋め込む場合、次のように指定する。

    {{ .OINotify.params.key }}


【ユースケース:メッセージのタイトルおよび内容の一部をWorkflowのYAMLファイルに定義する】

再申請の通知内容を、WorkflowのYAMLファイルに定義し、その内容に基づいたNotificationのYAMLファイルを作成します。

<WorkflowのYAMLのtasks定義例>

  notify_vm_wf_02:
    action: oi.notify
    input:
      notification: lend_request_notification
      params:
        type: 再申請
        document: 申し送り事項
    next:
      - when: <% succeeded() %>
        do: next_step
      - when: <% failed() %>
        do: fail


<NotificationのYAMLの定義例>

apiVersion: 1.0
kind: notification

## Meta data
type: resource
name: lend_request_notification
label: 貸出申請通知
description: 担当者に貸出申請通知を行うYAML定義です

## Notification contents
event:
  resource: workflow
  type: onDemand

notifications:
  - message:
      title: VM貸出の{{ .OINotify.params.type }}通知
      body: |
           VM貸出の{{ .OINotify.params.type }}通知が到着しています。{{ .OINotify.params.document }}を確認の上、対応お願いします。
              申請日時:{{ .GetValue ".Context.createdOn" }}
              申請者:{{ .GetValue ".Context.createdBy" }}
      referTo: https://{{ .System.domain }}/sys_request/workflow_list/workflow_detail/{{ .GetValue ".Context.id" }}
      severity: Information
    destinations:
      - type: user
        value: '{{ .GetValue ".Context.create_vm_wf_02.assignedTo" }}'