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
  • workitem
  • workflow
  type: Yes イベントのタイプ
  • update:対象リソースが作成/更新されたときに指定
  • delete:対象リソースが削除されたときに指定
  • time:対象リソースを定期的に評価したいときに指定
イベントのリソースがworkitemの場合、timeは使用不可。workflowの場合、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" }}"
  <operator>: Yes 条件のオペレータとオペランドを<key>: <value>で指定する。
<key>
オペレータを指定する。以下のタイプがある。
  • eq、ne (==、!=)
  • gt、ge (>、>=)
  • lt、le (<、<=)
  • in、notIn、wildcard、regex
  • remaining
    typeがtimeの場合のみ指定可能。この場合valueには分数として-10080(7日後)~10080(7日前)の値を指定する。
    resourceに日時のフィールドを指定し、value分前かどうか判断する。
<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に対するアクセス権を持っていることを事前に確認する。
例)
Ops IのURL/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.assignedGroup"}}"
  notifiers: No 宛先への通知手段の指定。Notifierのnameを配列で指定する。
指定しない場合はデフォルトのsystem通知のみ実行される。

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

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

オブジェクト フィールド 説明
workflow createdOn ワークフローの作成日時
workflow updatedOn ワークフローの更新日時
workflow createdBy ワークフローの作成者
workflow id ワークフローのID
workflow name ワークフローの名前
workflow schedule 直属のscheduleオブジェクト
workflow 任意 所属する任意のscheduleオブジェクト
workflow title ワークフローのタイトル
workflow status ワークフローのステータス
workflow customer 顧客
schedule id スケジュールのID
schedule workflow スケジュールにひもづいているworkflowオブジェクト
schedule activity スケジュールにひもづいているアクティビティ
schedule parent 親スケジュールのscheduleオブジェクト
schedule assignedTo 割り当て先ユーザーのuserオブジェクト
ワークフローの各ステップの担当者や、予定表にひもづかないスケジュールの担当者に通知する場合はこのフィールドの指定が必要です。
schedule assignedGroup 割り当て先グループのgroupオブジェクト
schedule assignedUsers 割り当て先のuserオブジェクトのリスト
作業項目の担当者(複数指定可能)を用いて通知する場合はこのフィールドの指定が必要です。
複数指定の場合は","で連結されます。
operatorにin/notInを使用する場合は以下の評価を行います。
  • valueに指定した値がassignedUsers内のいずれかのuserと一致する/一致しないか
  • valueの値は","を区切り文字として扱い、valueのいずれかの値がassignedUsersのいずれかに一致する/いずれにも一致しないか
schedule status スケジュールのステータス
値は「JP1 Cloud Service 運用統合 APIリファレンス」の「APIリファレンス詳細>標準提供API>Schemas>dtos.ScheduleDTO>status」を参照してください。
schedule workflowStatus スケジュールにひもづいているworkflowアクティビティのステータス
値は「JP1 Cloud Service 運用統合 APIリファレンス」の「APIリファレンス詳細>標準提供API>Schemas>dtos.ScheduleDTO>workflowStatus」を参照してください。
schedule plannedStart スケジュールの計画された開始日時
schedule plannedEnd スケジュールの計画された終了日時
schedule calendar スケジュールにひもづく作業項目が属する予定表
schedule title スケジュールのタイトル
schedule scheduleType スケジュールの種別
次の値が設定される。
  • daily:定期的な作業(日次)
  • weekly:定期的な作業(週次)
  • monthly:定期的な作業(月次)
  • yearly:定期的な作業(年次)
  • oneTime:単一の作業
  • on-demand:ワークフロー起動時に作成されるスケジュール
schedule workitem 関連する作業項目のオブジェクト
schedule canceled スケジュールの削除、復旧
schedule changedFromWorkItemDefinition 作業項目生成時からの変更フラグ
user id ユーザーID
user name ユーザー名
user email ユーザーのメールアドレス
user number 電話番号
group id グループID
group name グループ名
group email グループのメールアドレス
calendar id 予定表のID
calendar name 予定表の名前
calendar assignedGroups 割り当て先のgroupオブジェクトのリスト
複数指定の場合は","で連結されます。
operatorにin/notInを使用する場合は以下の評価を行います。
  • valueに指定した値がassignedGroups内のいずれかのgroupと一致する/一致しないか
  • valueの値は","を区切り文字として扱い、valueのいずれかの値がassignedGroupsのいずれかに一致する/いずれにも一致しないか
workitem id 作業項目のID
workitem calendar 予定表オブジェクト
workitem name 作業項目の名前
workitem createdOn 作業項目の作成日時
workitem createdBy 作業項目の作成者
workitem updatedOn 作業項目の更新日時
workitem updatedBy 作業項目の更新者
workitem workflowExecUser ワークフロー実行者
workitem assignedUsers 割り当て先のuserオブジェクトのリスト
作業項目の担当者(複数指定可能)を用いて通知する場合はこのフィールドの指定が必要です。
複数指定の場合は","で連結されます。
operatorにin/notInを使用する場合は以下の評価を行います。
  • valueに指定した値がassignedUsers内のいずれかのuserと一致する/一致しないか
  • valueの値は","を区切り文字として扱い、valueのいずれかの値がassignedUsersのいずれかに一致する/いずれにも一致しないか
workitem assignedGroup 割り当て先グループのgroupオブジェクト
workitem plannedStart 作業項目の予定開始時刻
workitem duration 作業項目の予定期間(分)
workitem scheduleType スケジュールの種別
次の値が設定される。
  • daily:定期的な作業(日次)
  • weekly:定期的な作業(週次)
  • monthly:定期的な作業(月次)
  • yearly:定期的な作業(年次)
  • oneTime:単一の作業
workitem recurrenceNum 作業項目の繰り返し回数
workitem startDate 作業項目の開始日
workitem endDate 作業項目の終了日

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 }}
  <operator>: 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
conditions:
  -
    - resource: '{{ .GetValue ".Context.activity" }}'
      eq: create_vm_wf_04

    - 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: Ops IのURL/sys_request/task_workflow?contextId={{ .GetValue ".Context.workflow" }}
      severity: Information
    destinations:
      - type: user
        value: '{{ .GetValue ".Context.createdBy" }}'

<定義例> 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
  port: 587
  to: '{{ .Context.receiver.email }}'
  from: noreply.opsi@itg.hitachi.co.jp
  subject: '{{ .Context.message.title }}'
  message: |
    {{ .Context.message.body }}