4.3.3 通知の設計
通知の設計は、NotificationとNotifierの2つのタイプのYAML定義を行います。
項目 | 定義手段 | 設計のポイント |
---|---|---|
・Notification ・Notifier |
YAMLによる定義 (GitLab) |
ワークフローのステップごとに通知する担当者の割り当てや、申請完了時の申請者への通知を設定します。通知手段はGUIまたはメールで行います。 |
Ops Iでは自身に関連するイベントについての通知設定を定義することができます。YAMLを用いて通知を送るイベントの条件やメッセージ、送信先や送信手段などを定義することで、ユーザーが実行したいアクティビティの担当者に通知を送ったり、申請者が申請受理/完了の報告を受けたりすることができます。
また依頼を行ってから一定時間内に実行されない場合に、自動でフォロー通知を送ることができます。
通知先は、scheduleオブジェクトのassignedToに申請者などを設定することで指定できます。scheduleオブジェクトについては「(表)Notificationで使用可能なオブジェクト・フィールド」を参照してください。
また、assignedToに通知先を設定するにあたって、いくつか必要な手順があります。
通知の送信先を設定する手順については、「JP1 Cloud Service 運用統合 APIリファレンス」の「APIリファレンス概要>APIを使うユースケースと作業の流れ>(表)「ワークフローの特定のステップに対応するアクティビティの担当者を変更する」の流れ」を参照してください。
以下に例として、通知先として申請者を設定するYAML定義の概念図と定義例を示します。
<定義例>
(中省略)
tasks:
# Practice-contextの一覧から現在のワークフローのExecution IDを使用してContext IDを取得する
fetch_context_id:
action: core.http
input:
url: <% ctx().oiapi_location %>/practice-contexts?filterBy=executionId%3Aeq%3A<% ctx().parent_execution_id %>
method: GET
headers:
Content-Type: application/json
Authorization: Bearer <% ctx().oi_access_token %>
next:
- when: <% succeeded() %>
publish:
#practice-contextを取得する
- context: <% result().body.data.content.first(null) %>
- context_id: <% ctx().context.id %>
do: fetch_context
- when: <% failed() %>
do: fail
#ワークフローの詳細情報を取得する
fetch_context:
action: core.http
input:
url: <% ctx().oiapi_location %>/practice-contexts/<% ctx().context_id %>
method: GET
headers:
Content-Type: application/json
Authorization: Bearer <% ctx().oi_access_token %>
next:
- when: <% succeeded() %>
publish:
- parent_schedule_id: <% result().body.data.schedule %>
do: fetch_schedule
- when: <% failed() %>
do: fail
#スケジュールの情報を取得する
fetch_schedule:
action: core.http
input:
url: <% ctx().oiapi_location %>/schedules/<% ctx().parent_schedule_id %>
method: GET
headers:
Content-Type: application/json
Authorization: Bearer <% ctx().oi_access_token %>
next:
- when: <% succeeded() %>
publish:
- target_schedule: <% result().body.data.children.where($.activity = "create_vm_wf_01").first(null) %>
- target_schedule_id: <% ctx().target_schedule.id %>
- update_schedule_body: <% ctx().target_schedule.set("assignedTo", ctx().user_id) %>
do: update_schedule
- when: <% failed() %>
do: fail
#スケジュールの情報からワークフローの担当者を変更する
update_schedule:
action: core.http
input:
url: <% ctx().oiapi_location %>/schedules/<% ctx().target_schedule_id %>
method: PUT
headers:
Content-Type: application/json
Authorization: Bearer <% ctx().oi_access_token %>
body:
<% str(ctx().update_schedule_body) %>
next:
#変数の初期化およびcreate_vm_wf_01へ遷移#
- when: <% succeeded() %>
publish:
- target_schedule: null
- update_schedule_body: null
do: create_vm_wf_01
- when: <% failed() %>
do: fail
(中省略)
その他のWorkflowのYAML定義に関しては、「中省略」としています。WorkflowのYAML定義については「Workflow」を参照してください。
以下に、VM貸出業務を行った場合の各アクティビティに対する通知例を示します。
作業名 | ワークフロー ステップ |
通知先 | タイトル | 本文 |
---|---|---|---|---|
VM貸出 | 申請 | 運用担当者 | [<ワークフロー番号(直リンク)>]VM貸出の申請通知 | VM貸出の申請通知が到着しています。対応お願いします。 申請日時:<申請日時> 申請者:<申請者> |
申請内容の確認 | 申請者 | [<ワークフロー番号(直リンク)>]VM貸出の却下通知 | VM貸出の却下通知が到着しています。申し送り事項を確認の上、対応お願いします。 申請日時:<申請日時> 申請者:<申請者> |
|
VM生成の確認 | 申請者 | [<ワークフロー番号(直リンク)>]VM貸出のキャンセル通知 | VM貸出のキャンセル通知が到着しています。申し送り事項を確認の上、対応お願いします。 申請日時:<申請日時> 申請者:<申請者> |
|
VM生成の確認 | 運用管理者 | [<ワークフロー番号(直リンク)>]VM貸出の承認通知 | VM貸出の承認通知が到着しています。対応お願いします。 申請日時:<申請日時> 申請者:<申請者> |
|
承認 | 運用担当者 | [<ワークフロー番号(直リンク)>]VM貸出の承認却下通知 | VM貸出の承認却下通知が到着しています。申し送り事項を確認の上、対応お願いします。 申請日時:<申請日時> 申請者:<申請者> |
|
承認 | 申請者 | [<ワークフロー番号(直リンク)>]VM貸出の完了通知 | Mが貸し出されました。貸出VM台帳を参照してください。 申請日時:<申請日時> 申請者:<申請者> |
通知イベントが発生した際、送信元は通知オブジェクトを作成し、Notifierによって送信先に届けられます。
通知の中身を表す通知オブジェクトはNotificationタイプのYAMLファイルによって管理されます。通知オブジェクトには、通知の宛先や、通知の送信手段、通知メッセージの情報が含まれます。通知の宛先は、Ops Iのユーザー、またはグループへの通知を選択できます。
通知の手段はNotifierタイプのYAMLファイルによって管理されます。
NotificationとNotifierのYAML定義の詳細については「Notification、Notifier」を参照してください。