
【ServiceNow PDI】REST API トリガーを使い、フロー専用APIを実装する手順まとめ
今回の投稿では、ServiceNowのフロー実行専用のAPIを作成してみます。
その名も「REST API トリガー(※英語はAsynchronous Trigger)」です。
機能は、Workflow Data FabricのIntegration Hub Enterprise Packに含まれています。
外部システムを起点にServiceNowフローをAPI経由で起動制御させることで、外部システム側またはServiceNow側のフロー機能を呼び出すカスタムな作り込みを避け、保守性の高い仕組みを提供できるなかなか使い勝手の良い技術となっています。
今回作成するアプリの完成形は、以下となる予定です。
・REST APIでServiceNowのカスタムアプリ内に実装したフローを実行
・フローには、Integration Hubの他システム連携機能アクションを使い、金融機関コード入力により金融機関名などを受領できるステップを含む
・更にフローステップには、受領した値でレコードのフィールドを更新するステップが含まれる
1.アプリ作成前の前提および下準備
本アプリの作成は、PDIのZurichバージョンで行っています。
PDI環境に、Integration Hub Enterprise パッケージのインストールを忘れないようにしてください。
※ZurichからDeveloper Portalサイトが新しい構成になっています。

また今回は、以前の投稿でご案内したIntegration Hubのカスタム連携機能で金融機関コードを入力して金融機関名を牽引してフィールドに表示するアプリのフローをREST API トリガーで起動・実行させる試みとなります。
以下2つの投稿をご覧いただき、下準備を進めておいてください。
①Workflow Studioで他システム連携の機能をカスタムスポークで作成済み
②AESでカスタムテーブルとWorkspaceまでを作成済み
※フローの作成は必要ありません。
ここまでの下準備作業にて以下のようなアプリが完成されているところが、本作業のスタートラインとなります。


2.REST APIトリガーのフロー作成
では、さっそく作成してゆきます。AESでカスタムアプリを開き、ロジックと自動化メニューより、[追加]を押下します。

フローを選択します。

フローの設定を行います。
・名前:REST API Trigger Demo
※フロー名は英数文字列で指定します。
・実行方法:システムユーザー

Flow Designer画面で、[フローを編集]を押下して、編集モードに切り替えます。

トリガーで、[アプリケーション] > [REST API - 非同期]

外部からフローを発動させるREST要求設定を入れてゆきます。
用意されているメソッドは様々な様式が選択できるようになっています。例えば、POSTを選択すると、JSONオブジェクトを本文で受領が行えるようになるなどの柔軟な設定をフロー制御のAPI側として用意できるようになっています。これは色々な形で外部システム側とメッセージ連携が行えるので便利です。
今回は、簡易的にクエリパラメーターに金融機関コードを要求されるGETメソッドを構成します。HTTPメソッドよりGETを選択します。

※保有ロールによる接続許可を指定することもできますが、今回は割愛します。
続いて、金融機関コードを受領するためのクエリパラメーターを設定します。[要求パラメータ]にて[クエリパラメーター]を設定します。
・ラベル:bankcode
・名前:bankcode ※自動で入力される値をそのまま受け入れます。
・タイプ:String

続いて、カスタムテーブルにレコードを新規作成するアクションステップを設定します。
[アクション]より[レコードの作成]を選択し、以下を設定します。
・テーブル:カスタムテーブルを指定
・フィールド:金融機関コード
・フィールド値:データピルのトリガーのREST API要求のクエリパラメーターに含まれる[bankcode]をドラッグ&ドロップで挿入。

続いて金融機関名などを取得する他システム連携用機能部品のカスタムスポークを呼びだすアクションステップを作成します。
[アクション]より、[Get Bank Name]を選択します。
Get Bank Nameアクションは、入力変数として金融機関コードを求める仕様となっています。したがって、この入力変数に、REST APIで送信されてきたクエリパラメーターを引き渡す定義を行います。
アクションの入力変数:データピルより、REST APIトリガー要求のクエリパラメーターに含まれるbankcodeをドラッグ&ドロップで指定します。

最後のステップとして、カスタムスポークから受領した値でレコードの各フィールドを更新するステップを作成します。
[アクション]より[レコードを更新]を選択します。アクションの定義を以下のように行います。
各項目をデータピルよりドラッグ&ドロップで指定します。
・レコード:レコード作成ステップのRecord
・金融機関名:Get Bank NameのBankName
・金融ローマ字:Get Bank NameのBankRoma
・金融カナ:Get Bank NameのBankKana

これで、フローステップが完成しました。

フローのアクティブ化を行います。
3.REST APIエクスプローラーで動作確認を実施
アプリケーションの動作確認を行います。
ServiceNowのPlatform機能にある、REST APIの電文を発行できる簡易ツールを使ってゆきます。
すべてのメニューより、[REST API]と入力し、REST APIエクスプローラーメニューを検索します。[REST APIエクスプローラー]をクリックします。

REST APIエクスプローラーの画面で、以下を指定します。
・名前空間:アプリケーションスコープ
・API名:Rest Trigger for flow

※ServiceNowインスタンスの外側からREST APIのGETを発行する場合にはこのURLパスを指定します。

[要求を準備]にて、クエリパラメーターに以下を指定します。
パラメーター名:bankcode
値:0001

設定後に、[送信]をクリックします。
要求と応答が確認できます。

AESのアプリホームより、Workspaceを[プレビュー]より押下します。

登録されたレコードを開きます。
フローが正しく実行され、金融機関名などがフィールドへ正しく更新されていることが分かります。

如何でしたでしょうか。フローを起動実行する仕組みをフロー専用のAPIをREST APIトリガーで作成してみました。
ノーコードで簡単に作成でき、API化させることで、簡易な要求電文の形で外部からフローを起動制御できるようになりますので、他システム連携の高速開発が可能となる点、現場での活用を是非ご検討いただければと。