6.10 Notification、Notifier

以下にNotification、Notifier定義と定義例を示します。Notification、Notifierの詳細については「通知の設計」を参照してください。

NotificationタイプのYAML内容は以下です。

(表)Notification定義

ラベル デフォルト値 必須 説明
apiVersion: 1.0 Yes APIバージョン
kind: Yes Notificationの際はnotificationを指定する
type: No Notificationの際はresourceのみ指定可能
name: Yes Notification定義の内部名。本YAML定義のディレクトリ名を指定
label: Yes YAMLファイルの表示名
includes: No このYAMLファイルで利用する関連YAMLファイルを記載
- kind: Yes 読み込むYAMLファイルの種類
  name: Yes 読み込むYAMLファイルの内部名
description: No このYAMLファイルに対する詳細説明
event: Yes 通知のイベント条件
  resource: Yes イベントのリソース
指定できるリソースとして以下を指定可能
- schedule
- workflow
  type: Yes イベントのタイプ
- update: 対象リソースが作成/更新されたときに指定
- delete: 対象リソースが削除されたときに指定
- time: 対象リソースを定期的に評価したいときに指定
timeを指定した場合、未完了のワークフローが対象リソースとなる。
conditions: No 通知する条件を記述する。
- No 複数の条件があった場合は、or条件で判定される。この下のレベルの条件はand条件で判定される。
- resource: Yes 通知のイベント条件(event部分)で指定したオブジェクトを起点にして条件判定するフィールドを指定する。
なお、オブジェクト・フィールドは、判定対象のデータの現在の値を.Context、変更前の値を.PrevContextと表記する。
イベントのタイプ(type)がupdateの場合は、現在の値を.Context、変更前の値を.PrevContextで取得可能。
イベントのタイプ(type)がdeleteの場合は、削除前の値を.PrevContextで取得可能で、.Contextは使用不可。
例)
“{{ .GetValue ".Context.workflow.name" }}”
“{{ .GetValue ".PrevContext.status" }}”
  <key>: Yes 条件のオペレータとオペランドを<key>: <value>で指定する。
<key>
オペレータを指定する。以下のタイプがある。
  - eq, ne (==,!=)
  - gt, ge (>, >=)
  - lt, le (<, <=)
  - in, notIn, wildcard, regex
<value>
オペランドを指定する。
例)
“eq: WorkflowNameAAA”
notifications: Yes 送信する通知オブジェクトのリスト
- message: Yes 送信する通知オブジェクトのメッセージ
title: Yes メッセージのタイトル
通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。なお、現在の値(.Context)のみ使用可能。変更前の値(.PrevContext)は使用不可
例)
“There is an request for {{ .GetValue ".Context.activity" }}.”
body: Yes メッセージのボディ。
通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能
例)
“There is an request for {{ .GetValue ".Context.workflow.name" }}.”
referTo: No メッセージの参照先。
通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。
Ops IのURLを記載する場合、通知の宛先に設定しているユーザーが、記載したURLに対するアクセス権を持っていることを事前に確認する。
例)
https://<テナント名>.ops-integration.com/sys_request/task_workflow?contextId={{ .GetValue ".Context.workflow.id" }}
severity: Information No Notificationの重大度
以下の値が利用可能
  - Critical
  - Warning
  - Information
destinations: Yes メッセージの宛先のリスト
messageオブジェクトの内容を複数の宛先に送付できる。
- type: Yes 宛先のタイプ
次から選択できる。
  - user(Ops Iユーザー宛て)
  - group(Ops Iグループ宛て)
  - groupMember(Ops Iグループの所属メンバー宛て)
  value: Yes 宛先の値
通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。なお、現在の値(.Context)のみ使用可能。変更前の値(.PrevContext)は使用不可
例)
“{{ .GetValue “.Context.assingedGroup”}}”
  notifiers: No 宛先への通知手段の指定。Notifierのnameを配列で指定する。
指定しない場合はデフォルトのsystem通知のみ実行される。

Notificationの定義内で使用可能なオブジェクト・フィールドは以下です。

(表)Notificationで使用可能なオブジェクト・フィールド

オブジェクト フィールド 説明
workflow createdOn ワークフローの作成日時
workflow updatedOn ワークフローの更新日時
workflow createdBy ワークフローの作成者
workflow id ワークフローのID
workflow name ワークフローの名前
workflow schedule 直属のscheduleオブジェクト
workflow <任意> 所属する任意のscheduleオブジェクト
schedule id スケジュールのid
schedule workflow スケジュールにひもづいているworkflowオブジェクト
schedule workflowStatus スケジュールにひもづいているworkflowアクティビティのステータス
値は「JP1 Cloud Service_Operations Integration API Reference」のdtos.ScheduleDTOのworkflowStatusを参照してください。
schedule activity スケジュールにひもづいているアクティビティ
schedule parent 親スケジュールのscheduleオブジェクト
schedule assignedTo 割当先ユーザーのuserオブジェクト
schedule assignedGroup 割当先グループのgroupオブジェクト
schedule status ステータス
値は「JP1 Cloud Service_Operations Integration API Reference」のdtos.ScheduleDTOのstatusを参照してください。
user id ユーザーid
user name ユーザー名
user email メールアドレス
user number 電話番号
group id グループid
group name グループ名
group email メールアドレス

NotifierタイプのYAML内容は以下です。

(表)Notifier定義

ラベル デフォルト値 必須 説明
apiVersion: 1.0 Yes APIバージョン
kind: Yes Notifierの際はnotifierを指定する
type: No Notifierの際はcontainerのみ指定可能
name: Yes Notifier定義の内部名。本YAMLファイルのディレクトリ名を指定
label: Yes YAMLファイルの表示名
includes: No このYAMLファイルで利用する関連YAMLファイルを記載
- kind: Yes 読み込むYAMLファイルの種類
  name: Yes 読み込むYAMLファイルの内部名
description: No このYAMLファイルに対する詳細説明
protocol: Yes 通知手段の使用プロトコル
以下のプロトコルが使用可能
- smtp
property: Yes smtpのプロパティ
credential: Yes smtpサーバへの認証情報。
“default”固定
url: Yes smtpサーバのアドレス。
“email-smtp.ap-northeast-1.amazonaws.com”固定
port: Yes smtpサーバのポート。
“587”固定
to: Yes メールの送信先アドレスを指定する。指定したメールアドレスは通知メールのBccヘッダーに指定され、送信される。
現在の値(.Context)を起点にしてNotifierで使用可能なオブジェクトのフィールドを埋め込むことも可能。使用可能なオブジェクト・フィールドは「(表)Notifierで使用可能なオブジェクト・フィールド」参照
例)
{{ .Context.receiver.email }}
from: No smtpの送信元アドレス。
“noreply.opsi@itg.hitachi.co.jp”固定
subject: No メールのタイトル。
現在の値(.Context)を起点にしてNotifierで使用可能なオブジェクトのフィールドを埋め込むことも可能。使用可能なオブジェクト・フィールドは「(表)Notifierで使用可能なオブジェクト・フィールド」参照
例)
{{ .Context.message.title }}
message: No メールの本文。
現在の値(.Context)を起点にしてNotifierで使用可能なオブジェクトのフィールドを埋め込むことも可能。使用可能なオブジェクト・フィールドは「(表)Notifierで使用可能なオブジェクト・フィールド」参照
例)
{{ .Context.message.body }}
conditions No この定義の条件に合致した場合に、このNotifierを使って通知される。
- No 複数の条件があった場合は、or条件で判定される。この下のレベルの条件はand条件で判定される。
- resource: Yes 条件
現在の値(.Context)を起点にしてNotifierで使用可能なオブジェクトのフィールドを埋め込むことも可能。使用可能なオブジェクト・フィールドは「(表)Notifierで使用可能なオブジェクト・フィールド」参照
例)
{{ .Context.receiver.email }}
  <key>: Yes 条件のオペレータとオペランドを<key>: <value>で指定する。
<key>
オペレータを指定する。以下のタイプがある。
  - eq, ne (==,!=)
  - gt, ge (>, >=)
  - lt, le (<, <=)
  - in, notIn, wildcard, regex
<value>
  オペランドを指定する。
  例)
  regex:  ^∗@hitachi.com$

Notifierの定義内で使用可能なオブジェクト・フィールドは以下です。

(表)Notifierで使用可能なオブジェクト・フィールド

オブジェクト フィールド 説明
message title メッセージのタイトル
message severity メッセージの重要度
message body メッセージの内容
message referTo メッセージの参照先
receiver email 送信先のメールアドレス

<定義例> Notification

apiVersion: 1.0
kind: notification

## Meta data
type: resource
name: lend_reject_notification
label: lend_reject_notification
description: 申請者に却下通知を行うYAML定義です

## Notification contents
event:
  resource: schedule
  type: update #[update/delete]
conditions:
  -
    - resource: '{{ .GetValue ".Context.activity" }}'
      eq: create_vm_wf_01

    - resource: '{{ .GetValue ".Context.workflowStatus" }}'
      eq: pending

    - resource: '{{ .GetValue ".PrevContext.workflowStatus" }}'
      eq: succeeded
      
notifications:
  - message:
      title: VM貸出の却下通知
      body: |
             VM貸出の却下通知が到着しています。申し送り事項を確認の上、対応お願いします。
              申請日時:{{ .GetValue ".Context.createdOn" }}
              申請者:{{ .GetValue ".Context.createdBy" }}
      referTo: https://<テナント名>.ops-integration.com/sys_request/task_workflow?contextId={{ .GetValue ".Context.workflow" }}
      severity: Information
    destinations:
      - type: user #select from [user, group, groupMember, external]
        value: '{{ .GetValue ".Context.assignedTo" }}'

<定義例> Notifier

apiVersion: 1.0
kind: notifier

## Meta data
type: resource
name: email
label: Normal case
description: Normal case

protocol: smtp
property:
  credential: default
  url: email-smtp.ap-northeast-1.amazonaws.com