6.10 Notification、Notifier
以下にNotification、Notifier定義と定義例を示します。Notification、Notifierの詳細については「通知の設計」を参照してください。
NotificationのYAML定義は以下です。
| ラベル | デフォルト値 | 必須※ | 説明 | ||
|---|---|---|---|---|---|
| apiVersion: | Yes | APIバージョン 1.0を指定する |
|||
| kind: | Yes | notificationを指定する | |||
| type: | No | resourceを指定する Ops Iの運用機能に追加する新しい定義であることを示す |
|||
| name: | Yes | Notification定義の内部名 nameは以下のルールに従う必要があります。
|
|||
| label: | Yes | YAMLファイルに記載する運用機能の表示名 | |||
| includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載
メモ
|
|||
| - kind: | Yes | 読み込むYAMLファイルの種類 | |||
| name: | Yes | 読み込むYAMLファイルの内部名 | |||
| description: | No | このYAMLファイルに対する詳細説明 テンプレート機能を利用して記述することができる |
|||
| event: | Yes | 通知のイベント条件 | |||
| resource: | Yes | 以下の2つの役割がある。
|
|||
| type: | Yes | イベントのタイプ どのイベントに対して通知するかを設定する。
onDemandはイベントのリソースがworkflowの場合に、指定できる。記載例は「通知を含めたワークフローの定義例」を参照。 |
|||
| conditions: | No | 通知する条件を記述する。 イベントのタイプ がonDemandの場合は指定しない。 |
|||
| - | No | 複数の条件があった場合は、or条件で判定される。この下のレベルの条件はand条件で判定される。 | |||
| - resource: | Yes | 条件の判定に使用するオブジェクト・フィールドを指定する。オブジェクト・フィールドは、「event:.resource:」に指定したリソースから参照できるオブジェクト・フィールドを指定できる。 なお、オブジェクト・フィールドは、判定対象のデータの現在の値を.Context、変更前の値を.PrevContextと表記する。 イベントのタイプ(type)がupdateの場合は、現在の値を.Context、変更前の値を.PrevContextで取得可能。 イベントのタイプ(type)がdeleteの場合は、削除前の値を.PrevContextで取得可能で、.Contextは使用不可。 イベントのタイプ(type)がtimeの場合は、.Contextが使用可能で、.PrevContextは使用不可。 例) "{{ .GetValue ".Context.workflow.name" }}" "{{ .GetValue ".PrevContext.status" }}" Notificationの定義内で使用できるオブジェクト・フィールドの詳細は、「(表)Notificationで使用可能なオブジェクト・フィールド」を参照。 |
|||
| <operator>: | Yes | 条件のオペレータとオペランドを<key>: <value>で指定する。 <key> オペレータを指定する。以下のタイプがある。
オペランドを指定する。 例) "eq: WorkflowNameAAA" |
|||
| notifications: | Yes | 送信する通知オブジェクトのリスト | |||
| - message: | Yes | 送信する通知オブジェクトのメッセージ | |||
| title: | Yes | メッセージのタイトル 通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。なお、現在の値(.Context)のみ使用可能。変更前の値(.PrevContext)は使用不可 例) "There is an request for {{ .GetValue ".Context.activity" }}." イベントのタイプがonDemandの場合は、WorkflowのYAMLファイルのoi.notifyのparamsで指定したパラメータを、以下の構文で指定することで値を取得できる。 例) "{{ .OINotify.params.パラメータ }}" |
|||
| body: | Yes | メッセージのボディ。 通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能 例) "There is an request for {{ .GetValue ".Context.workflow.name" }}." イベントのタイプがonDemandの場合は、WorkflowのYAMLファイルのoi.notifyのparamsで指定したパラメータを、以下の構文で指定することで値を取得できる。 例) "{{ .OINotify.params.パラメータ }}" |
|||
| referTo: | No | メッセージの参照先。 通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。 Ops IのURLを記載する場合、通知の宛先に設定しているユーザーが、記載したURLに対するアクセス権を持っていることを事前に確認する。 例) https://{{ .System.domain }}/sys_request/workflow_list/workflow_detail/{{ .GetValue ".Context.workflow" }} イベントのタイプがonDemandの場合は、WorkflowのYAMLファイルのoi.notifyのparamsで指定したパラメータを、以下の構文で指定することで値を取得できる。 例) "{{ .OINotify.params.パラメータ }}" |
|||
| severity: | Information | No | Notificationの重大度 以下の値が利用可能
| ||
| destinations: | Yes | メッセージの宛先のリスト messageオブジェクトの内容を複数の宛先に送付できる。 |
|||
| - type: | Yes | 宛先のタイプ 次から選択できる。
| |||
| value: | Yes | 宛先の値 通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。なお、現在の値(.Context)のみ使用可能。変更前の値(.PrevContext)は使用不可 例) "{{ .GetValue ".Context.assignedGroup"}}" イベントのタイプがonDemandの場合は、WorkflowのYAMLファイルのoi.notifyのparamsで指定したパラメータを、以下の構文で指定することで値を取得できる。 例) "{{ .OINotify.params.パラメータ }}" |
|||
| notifiers: | No | 宛先への通知手段の指定。Notifierのnameを配列で指定する。 配列の指定例は「<定義例> Notifier(作業項目の削除通知)」を参照。 メモ指定の有無にかかわらず、Ops IのGUIによる通知は実行される。 |
|||
Notificationの定義内で使用可能なオブジェクト・フィールドは以下です。
(表)Notificationで使用可能なオブジェクト・フィールド
| オブジェクト | フィールド | データ型※1 | 出力される値 | 補足 | 値が取得可能な条件 |
|---|---|---|---|---|---|
| workflow | createdOn※3 | Date※4 | ワークフローの作成日時 | - | 常に取得可能 |
| workflow | updatedOn | Date※4 | ワークフローの更新日時 | - | 常に取得可能 ただしワークフロー起動直後は1970/1/1 00:00:00が設定され、ワークフローのステータスが変化したり、ワークフローのタイトルを変更すると更新された値が取得される |
| workflow | createdBy※3 | str | ワークフローの作成者のユーザー名 | userオブジェクト※2 ユーザーIDを参照する場合:"{{ .GetValue ".Context.createdBy"}}" ユーザー名を参照する場合:"{{ .GetValue ".Context.createdBy.name"}}" |
常に取得可能 |
| workflow | id※3 | uuid | ワークフローのID | - | 常に取得可能 |
| workflow | name | str | ワークフローの名前 | WorkflowのYAML定義の「name」ラベルの値 | 常に取得可能 |
| workflow | schedule※3 | uuid | ワークフロー直属のスケジュールのID | scheduleオブジェクト※2 | 常に取得可能 |
| workflow | Any task name | uuid | 指定したタスク名のスケジュールのID | scheduleオブジェクト※2 ワークフローに所属する任意のスケジュールを指定できる。 |
常に取得可能 |
| workflow | title | str | ワークフローのタイトル | - | 常に取得可能 |
| workflow | status※3 | str | ワークフローのステータス | - | 常に取得可能 |
| workflow | customer※3 | str | 顧客ID | customerオブジェクト※2 顧客IDを参照する場合:"{{ .GetValue ".Context.customer"}}" 顧客名を参照する場合:"{{ .GetValue ".Context.customer.name"}}" |
オブジェクトが顧客ユーザーが起票したワークフローの場合 |
| workflow | parentContext | uuid | 親のワークフローのID | workflowオブジェクト※2 | サブフローの場合 |
| workflow | rootContext | uuid | ルートのワークフローのID | workflowオブジェクト※2 | 常に取得可能 |
| workflow | label | str | ラベル | WorkflowのYAML定義の「label」ラベルの値 ヒアリングシートで指定した言語で出力される。 |
常に取得可能 |
| workflow | currentSchedule | uuid | 現在実行中(Pending状態を含む)のスケジュールのID | scheduleオブジェクト※2 ワークフローの担当者を参照する場合: "{{workflow.currentSchedule.assignedTo.name}}" ワークフローの担当グループを参照する場合: "{{workflow.currentSchedule.assignedGroup.name}}" |
実行中のスケジュールが存在する場合 |
| workflow | schedules.Any task name | uuid | 指定したタスク名のスケジュールのID | scheduleオブジェクト※2 ワークフローに所属する任意のスケジュールを指定できる。 |
常に取得可能 |
| workflow | description | str | 説明 | - | ユーザーが設定した場合※5 |
| workflow | category | str | 分類 | - | ユーザーが設定した場合※5 |
| workflow | dueDate | Date※4 | 期限 | - | ユーザーが設定した場合※5 |
| workflow | note1 | str | 備考 | - | ユーザーが設定した場合※5 |
| workflow | note2 | str | 備考2 | - | ユーザーが設定した場合※5 |
| workflow | note3 | str | 備考3 | - | ユーザーが設定した場合※5 |
| schedule | id※3 | uuid | スケジュールのID | - | 常に取得可能 |
| schedule | workflow | Date※4 | スケジュールにひもづいているワークフローのID | workflowオブジェクト※2 | オブジェクトがワークフローの起票により生成されたスケジュールの場合 |
| schedule | activity※3 | str | スケジュールにひもづいているアクティビティの名前 | - | 常に取得可能 |
| schedule | parent※3 | uuid | 親スケジュールのID | scheduleオブジェクト※2 | オブジェクトがワークフローのアクティビティに対するスケジュールの場合 |
| schedule | assignedTo※3 | uuid | 割り当て先ユーザーのID | userオブジェクト※2 ワークフローの各ステップの担当者や、予定表にひもづかないスケジュールの担当者に通知する場合はこのフィールドの指定が必要。 |
オブジェクトが以下のいずれかの条件を満たすスケジュールの場合
|
| schedule | assignedGroup※3 | uuid | 割り当て先グループのID | groupオブジェクト※2 | オブジェクトが以下のいずれかの条件を満たすスケジュールの場合
|
| schedule | assignedUsers※3 | uuidリスト | 割り当て先のユーザーのIDのリスト | userオブジェクト※2 作業項目の担当者(複数指定可能)を用いて通知する場合はこのフィールドの指定が必要。 複数指定の場合はカンマ(,)で連結される。 operatorにin/notInを使用する場合は以下の評価を行う。
|
オブジェクトが担当者が設定された作業項目に対するスケジュールの場合 |
| schedule | status※3 | str | スケジュールのステータス | 値は「JP1 Cloud Service 運用統合 APIリファレンス」の「APIリファレンス詳細>標準提供API>Schemas>dtos.ScheduleDTO>status」を参照。 | 常に取得可能 |
| schedule | workflowStatus※3 | str | スケジュールにひもづいているworkflowアクティビティのステータス | 値は「JP1 Cloud Service 運用統合 APIリファレンス」の「APIリファレンス詳細>標準提供API>Schemas>dtos.ScheduleDTO>workflowStatus」を参照。 | オブジェクトがワークフローのアクティビティに対するスケジュールの場合 |
| schedule | plannedStart※3 | Date※4 | スケジュールの計画された開始日時 | - | オブジェクトが開始予定の日時が設定されたスケジュールの場合 |
| schedule | plannedEnd※3 | Date※4 | スケジュールの計画された終了日時 | - | オブジェクトが終了予定の日時が設定されたスケジュールの場合 |
| schedule | calendar※3 | uuid | スケジュールにひもづく作業項目が属する予定表のID | calendarオブジェクト※2 | オブジェクトが作業項目に対するスケジュールの場合 |
| schedule | title※3 | str | スケジュールのタイトル | - | オブジェクトが以下のいずれかの条件を満たすスケジュールの場合
|
| schedule | scheduleType※3 | str | スケジュールの種別 | 次の値が設定される。
|
オブジェクトが作業項目に対するスケジュールの場合 |
| schedule | workitem※3 | uuid | 関連する作業項目のID | workitemオブジェクト※2 | オブジェクトが作業項目に対するスケジュールの場合 |
| schedule | canceled※3 | bool | スケジュールの削除、復旧 | - | オブジェクトが作業項目に対するスケジュールの場合 |
| schedule | changedFromWorkItemDefinition※3 | bool | 作業項目生成時からの変更フラグ | - | オブジェクトが作業項目に対するスケジュールの場合 |
| user | id | uuid | ユーザーID | - | 常に取得可能 |
| user | name | str | ユーザー名 | - | 常に取得可能 |
| user | str | ユーザーのメールアドレス | - | 常に取得可能 | |
| user | number | str | 電話番号 | - | オブジェクトが電話番号が設定されたユーザーの場合 |
| user | displayName | str | ユーザーの表示名 | 言語(日英)による姓名の順序が変わる。ヒアリングシートで指定した言語に従う。 | 常に取得可能 |
| group | id | uuid | グループID | - | 常に取得可能 |
| group | name | str | グループ名 | - | 常に取得可能 |
| group | str | グループのメールアドレス | - | オブジェクトがメールアドレスが設定されたグループの場合 | |
| calendar | id | uuid | 予定表のID | - | 常に取得可能 |
| calendar | name | str | 予定表の名前 | - | 常に取得可能 |
| calendar | assignedGroups | uuidリスト | 割り当て先のgroupのIDのリスト | groupオブジェクト※2 複数指定の場合はカンマ(,)で連結される。 operatorにin/notInを使用する場合は以下の評価を行う。
|
常に取得可能 |
| workitem | id※3 | uuid | 作業項目のID | - | 常に取得可能 |
| workitem | calendar※3 | uuid | 予定表のID | calendarオブジェクト※2 | 常に取得可能 |
| workitem | name※3 | str | 作業項目の名前 | - | 常に取得可能 |
| workitem | createdOn※3 | Date※4 | 作業項目の作成日時 | - | 常に取得可能 |
| workitem | createdBy※3 | uuid | 作業項目の作成者のID | userオブジェクト※2 | 常に取得可能 |
| workitem | updatedOn | Date※4 | 作業項目の更新日時 | - | オブジェクトの作業項目が1回以上更新されている場合 |
| workitem | updatedBy | uuid | 作業項目の更新者のID | userオブジェクト※2 | オブジェクトの作業項目が1回以上更新されている場合 |
| workitem | workflowExecUser※3 | uuid | ワークフロー実行者 | userオブジェクト※2 | オブジェクトがワークフローの自動実行が設定された作業項目の場合 |
| workitem | assignedUsers※3 | uuidリスト | 割り当て先のユーザーのIDのリスト | userオブジェクト※2 作業項目の担当者(複数指定可能)を用いて通知する場合はこのフィールドの指定が必要。 複数指定の場合はカンマ(,)で連結される。 operatorにin/notInを使用する場合は以下の評価を行う。
|
オブジェクトが担当者が設定された作業項目の場合 |
| workitem | assignedGroup※3 | uuid | 割り当て先グループのID | groupオブジェクト※2 | オブジェクトが担当グループが設定された作業項目の場合 |
| workitem | plannedStart※3 | str | 作業項目の予定開始時刻 | 形式:HH:MM:SS | 常に取得可能 |
| workitem | duration※3 | int | 作業項目の予定期間(分) | - | 常に取得可能 |
| workitem | scheduleType※3 | str | スケジュールの種別 | 次の値が設定される。
|
常に取得可能 |
| workitem | recurrenceNum※3 | int | 作業項目の繰り返し回数 | - |
|
| workitem | startDate※4 | str | 作業項目の開始日 | 形式:YYYY-MM-DD | オブジェクトが開始日を設定した作業項目の場合 |
| workitem | endDate※3 | str | 作業項目の終了日 | 形式:YYYY-MM-DD | オブジェクトが定期的な作業でかつ終了日が指定された作業項目の場合 |
| customer | id | str | 顧客ID | - | 常に取得可能 |
| customer | name | str | 顧客名 | - | 常に取得可能 |
例: .Context.schedule.assignedTo
またevent.typeが「update」または「delete」の場合、「.PrevContext」を使用することで変更前の値を取得できます。
| 項目 | 形式 | 具体例 |
|---|---|---|
| condition部 | YYYY-MM-DDTHH:mm:ss±hh:mm | 2025-01-02T03:04:05+09:00 |
| message部 | YYYY-MM-DD HH:mm:ss タイムゾーン | 2025-01-02 03:04:05 JST |
NotifierのYAML定義は以下です。
| ラベル | デフォルト値 | 必須※ | 説明 | |||
|---|---|---|---|---|---|---|
| apiVersion: | Yes | APIバージョン 1.0を指定する |
||||
| kind: | Yes | notifierを指定する | ||||
| type: | No | resourceを指定する Ops Iの運用機能に追加する新しい定義であることを示す |
||||
| name: | Yes | Notifier定義の内部名 nameは以下のルールに従う必要があります。
|
||||
| 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ヘッダーに指定され、送信される。 複数の宛先に送付する場合は、カンマ(,)で連結して指定する。 通知(Notification)に含まれるオブジェクトのフィールドを埋め込むことで、GUIで通知される内容をメールでも通知可能。指定する際は、.Contextに埋め込みたいオブジェクトとフィールドを連結して指定する。 使用可能なオブジェクト・フィールドは「(表)Notifierで使用可能なオブジェクト・フィールド」参照 例) {{ .Context.receiver.email }} |
||||
| from: | No | smtpの送信元アドレス。 "noreply@ops-integration.com"固定 |
||||
| subject: | No | メールのタイトル。 通知(Notification)に含まれるオブジェクトのフィールドを埋め込むことで、GUIで通知される内容をメールでも通知可能。指定する際は、.Contextに埋め込みたいオブジェクトとフィールドを連結して指定する。 使用可能なオブジェクト・フィールドは「(表)Notifierで使用可能なオブジェクト・フィールド」参照 例) {{ .Context.message.title }} |
||||
| message: | No | メールの本文。 通知(Notification)に含まれるオブジェクトのフィールドを埋め込むことで、GUIで通知される内容をメールでも通知可能。指定する際は、.Contextに埋め込みたいオブジェクトとフィールドを連結して指定する。 使用可能なオブジェクト・フィールドは「(表)Notifierで使用可能なオブジェクト・フィールド」参照 例) {{ .Context.message.body }} |
||||
| conditions: | No | この定義の条件に合致した場合に、このNotifierを使って通知される。 | ||||
| - | No | 複数の条件があった場合は、or条件で判定される。この下のレベルの条件はand条件で判定される。 | ||||
| - resource: | Yes | 条件 通知(Notification)に含まれるオブジェクトのフィールドを埋め込むことも可能。指定する際は、.Contextに埋め込みたいオブジェクトとフィールドを連結して指定する。 使用可能なオブジェクト・フィールドは「(表)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: https://{{ .System.domain }}/sys_request/workflow_list/workflow_detail/{{ .GetValue ".Context.workflow" }}
severity: Information
destinations:
- type: user
value: '{{ .GetValue ".Context.createdBy" }}'
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@ops-integration.com
subject: '{{ .Context.message.title }}'
message: |
{{ .Context.message.body }}
apiVersion: 1.0
kind: notification
## Meta data
type: resource
name: workitem_notification
label: workitem_notification
description: |
作業項目の削除通知
## Notification contents
event:
resource: workitem
type: delete
notifications:
- message:
title: '[{{ .GetValue ".PrevContext.name" }}] が削除されました。'
body: |
作業項目「{{ .GetValue ".PrevContext.name" }}」が削除されました。
severity: Information
destinations:
- type: user
value: '{{ .GetValue ".PrevContext.assignedUsers" }}'
notifiers:
- email
メモ