イベント駆動通知と条件通知の違いを整理|ServiceNow通知設計の考え方

ServiceNow

まず押さえる前提:通知のSend whenは複数ある

メール通知(Email Notification)の設定では、通知が「いつ送られるか」をSend whenで選びます。代表的には次のような選択肢があります。

  • When a record is inserted or updated(レコードの登録・更新)
  • When a particular event is fired(特定イベント)
  • When Notification step in Flow Designer(Flowの通知ステップ)

この記事はこのうち、特に混乱しやすい 「レコード条件」「イベント」 の違いに集中します。


本番形式で慣れるのが合格への近道。UdemyのServiceNow模擬問題集を人気順で一覧比較できます👇

条件通知の考え方

条件通知とは何か

条件通知は、Send when を Record inserted or updated にして、
「いつ(Inserted/Updated)」「どんな条件のとき(Conditions)」を画面の条件ビルダー中心で組み立てる方式です。

例えば、インシデントで次のような要件があるとします。

  • 優先度が Critical のとき
  • 重要な更新が入ったときだけ
  • 担当グループに通知したい

この場合、通知レコード側で Updated changes のような条件を含めて、発火を“レコードの変化”に寄せて作れます。公式ドキュメントにも、インシデントの条件例が載っています。

条件通知の強み

条件通知が得意なことは、次のとおりです。

  • 単一テーブルのレコード変化に素直に追従できる
  • GUI中心で作れるので、保守が読みやすい
  • 「登録時だけ」「更新時だけ」が分かりやすい(Inserted/Updatedのチェックで表現できる)

条件通知の弱み

一方で、実務で詰まりやすいポイントもあります。

  • 条件が複雑になると、通知レコードだけで表現しづらい
  • 「ある処理の完了後に一度だけ通知したい」など、ビジネスプロセス起点の要件と相性が悪い
  • レコード更新が複数回走る処理だと、意図せず通知が増えやすい(条件がゆるいと特に)

ここで登場するのがイベント駆動です。


イベント駆動通知の考え方

イベント駆動通知とは何か

イベント駆動通知は、Send when を Event is fired にして、Event name(イベント名)を指定して送る方式です。

重要なのは、イベントは「何かが起きた」という“合図”であり、レコード更新とは独立して扱える点です。
ServiceNowのイベントは Event Registry に登録されたイベントを使って、通知やスクリプトアクションなどを自動化できます。

イベントはどうやって発火させるのか

代表例はビジネスルール等から gs.eventQueue() を呼び出してイベントをキューに積む形です。
公式ドキュメントでも、イベント作成とビジネスルールからの発火(gs.eventQueue)という流れが説明されています。

イメージはこんな感じです。

  • ある条件を満たしたら、ビジネスルールがイベントを発火
  • イベントが記録される
  • そのイベント名に紐づいた通知が処理される

また、イベントは通知だけでなく、イベントスクリプト等にもつなげられます。

イベント駆動通知の強み

イベント駆動の良さは、言い換えると「設計の部品化」です。

  • 通知の発火タイミングを“イベント名”として共通化できる
    • 同じイベントに対して複数の通知をぶら下げたり、逆に通知側の条件を薄くできる
  • 複雑な条件判定をビジネスルール側に寄せられる
  • 「レコード更新」以外のきっかけ(証明書期限、受信メールアクションなど)にもつながる

イベント駆動通知の弱み

ただし、イベント駆動は万能ではありません。

  • Event Registry、発火元(ビジネスルール等)、通知の3点セットになり、構成が増える
  • イベント名の設計が雑だと、後から誰も追えなくなる(命名規則が大事)
  • 非同期的に処理される前提になりやすく、**「今この画面操作で即時に出したい」**の要件とは合わないことがある

このあたりは、イベントを「ログに記録される出来事」として捉えると理解が安定します。


どう使い分けるか:判断の軸を持つ

ここが一番大事です。実務でも試験でも、丸暗記より「選定理由」が問われやすいテーマです。

条件通知が向いているケース

次のようなときは、条件通知が自然です。

  • 単純に「このテーブルのこの条件のとき送る」で完結する
  • 発火タイミングが「登録時/更新時」で十分に表現できる
  • 通知のルールがGUIの条件で読みやすく、運用も想像できる

例:

  • インシデントが作成されたら担当グループへ通知
  • 優先度がCriticalに変わったときだけ通知(更新条件で制御)

イベント駆動通知が向いているケース

次のようなときは、イベント駆動が効いてきます。

  • 条件が複雑で、通知の条件ビルダーだけだと破綻しそう
  • 「ある処理の完了」を1つの合図にして通知したい(処理起点)
  • 1つの出来事に対して、通知先や通知内容の種類が複数ある
  • 後から「この出来事が起きたら通知以外もしたい」可能性がある(拡張性)

例:

  • 親インシデントがクローズしたら、子インシデントの担当者全員へ通知
  • 変更要求の登録・更新時にイベントを発火して、イベント名を基点に複数の処理を連携する(サンプルでも change.inserted などのイベント発火例がある)

迷ったときの実務的なコツ

  • 「通知がレコード更新に素直に乗る」なら条件通知から検討
  • 「通知が業務イベントに乗る」ならイベント駆動を検討
  • “通知の都合”でイベントを乱造しない。業務として意味のある出来事をイベント名にする
  • 複雑化しそうなら、最初からイベント駆動で拡張余地を残すのも手

CSA学習にどう効くか:点を線にする勉強法

CSAを学んでいると、通知は「メールを送る設定」として覚えがちですが、理解が伸びるのはここからです。

  • 通知には Send when があり、
    • レコード起点(条件通知)
    • イベント起点(イベント駆動通知)
    • Flow起点(Flow Designer)
      という入口がある
  • イベント起点を選ぶと、Event Registry、イベント発火(gs.eventQueue)、通知がつながる

この「つながり」を理解していると、現場でも試験でも混乱が減ります。
暗記ではなく、「なぜイベントにするのか」「なぜ条件通知で足りるのか」を自分の言葉で説明できる状態を目指すのが近道です。

学習の進め方の一例

  • まずは条件通知で、Inserted/Updated/Conditionsを触って全体像を掴む
  • 次にイベント駆動で、Event Registry → gs.eventQueue → Notification の流れを一度作ってみる
  • 最後に「同じ要件を2通りで作るとどう違うか」を比べる(設計の勘所が身につく)

Udemy講座を使うなら、「通知」「ビジネスルール」「イベント」「Flow Designer」をまとめて触れるカリキュラムのものを、体系的に学べる教材の一例として選ぶと効率が上がります。画面操作と用語が結びつくので、理解が“知識”から“技能”に変わりやすいです。


本番形式で慣れるのが合格への近道。UdemyのServiceNow模擬問題集を人気順で一覧比較できます👇

まとめ:違いは発火の責任をどこに置くか

  • 条件通知は、レコードの登録・更新という事実に対して、通知側の条件で送信判断をする
  • イベント駆動通知は、業務上の出来事をイベントとして定義し、そのイベントが起きたことを合図に通知する
  • 使い分けは「レコード変化に素直か」「業務イベントとして共通化したいか」で判断すると迷いにくい
  • CSA学習では、通知単体ではなく、イベントやビジネスルール、Flowとのつながりで理解すると定着が早い

タイトルとURLをコピーしました