6.10 Notification、Notifier
以下にNotification、Notifier定義と定義例を示します。Notification、Notifierの詳細については「通知の設計」を参照してください。
NotificationのYAML定義は以下です。
ラベル | デフォルト値 | 必須 | 説明 | ||
---|---|---|---|---|---|
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 | イベントのリソース リソースとして以下を指定可能。
|
|||
type: | Yes | イベントのタイプ
|
|||
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: 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の重大度 以下の値が利用可能
| ||
destinations: | Yes | メッセージの宛先のリスト messageオブジェクトの内容を複数の宛先に送付できる。 |
|||
- type: | Yes | 宛先のタイプ 次から選択できる。
| |||
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を使用する場合は以下の評価を行います。
|
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 | スケジュールの種別 次の値が設定される。
|
schedule | workitem | 関連する作業項目のオブジェクト |
schedule | canceled | スケジュールの削除、復旧 |
schedule | changedFromWorkItemDefinition | 作業項目生成時からの変更フラグ |
user | id | ユーザーID |
user | name | ユーザー名 |
user | ユーザーのメールアドレス | |
user | number | 電話番号 |
group | id | グループID |
group | name | グループ名 |
group | グループのメールアドレス | |
calendar | id | 予定表のID |
calendar | name | 予定表の名前 |
calendar | assignedGroups | 割り当て先のgroupオブジェクトのリスト 複数指定の場合は","で連結されます。 operatorにin/notInを使用する場合は以下の評価を行います。
|
workitem | id | 作業項目のID |
workitem | calendar | 予定表オブジェクト |
workitem | name | 作業項目の名前 |
workitem | createdOn | 作業項目の作成日時 |
workitem | createdBy | 作業項目の作成者 |
workitem | updatedOn | 作業項目の更新日時 |
workitem | updatedBy | 作業項目の更新者 |
workitem | workflowExecUser | ワークフロー実行者 |
workitem | assignedUsers | 割り当て先のuserオブジェクトのリスト 作業項目の担当者(複数指定可能)を用いて通知する場合はこのフィールドの指定が必要です。 複数指定の場合は","で連結されます。 operatorにin/notInを使用する場合は以下の評価を行います。
|
workitem | assignedGroup | 割り当て先グループのgroupオブジェクト |
workitem | plannedStart | 作業項目の予定開始時刻 |
workitem | duration | 作業項目の予定期間(分) |
workitem | scheduleType | スケジュールの種別 次の値が設定される。
|
workitem | recurrenceNum | 作業項目の繰り返し回数 |
workitem | startDate | 作業項目の開始日 |
workitem | endDate | 作業項目の終了日 |
NotifierのYAML定義は以下です。
ラベル | デフォルト値 | 必須 | 説明 | |||
---|---|---|---|---|---|---|
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 | 通知手段の使用プロトコル 以下のプロトコルが使用可能
|
||||
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> オペレータを指定する。以下のタイプがある。
オペランドを指定する。 例) regex: ^∗@hitachi.com$ |
Notifierの定義内で使用可能なオブジェクト・フィールドは以下です。
オブジェクト | フィールド | 説明 |
---|---|---|
message | title | メッセージのタイトル |
message | severity | メッセージの重要度 |
message | body | メッセージの内容 |
message | referTo | メッセージの参照先 |
receiver | 送信先のメールアドレス |
<定義例> 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 }}