※本投稿は過去に弊社のHatena blog MKIが解説するServiceNow開発blog に掲載した内容を再編集したものです。
はじめに
突然ですが、ServiceNowのWorkflowでどんなアクティビティが存在するか、指定したスクリプトが使われているアクティビティがどれかを調べるのに苦労したことはありませんか?
基本的には1つ1つアクティビティを開かないと確認できず、複数のアクティビティを一括で検索するツールも標準では用意されていません。
そこで、今回は現在PublishとなっているWorkflowに含まれるアクティビティを一覧表示するDatabase View(複数のテーブル間の結合を表す擬似テーブル)を作成し、Workflowに使用されているアクティビティやそのアクティビティで設定されている値やスクリプトを検索する方法をご紹介させて頂きます。
今回利用する機能
Database View
テーブル構成
Workflowの情報は複数のテーブルで管理されており、今回利用するテーブルとテーブル同士の関係性は以下になっております。
wf_workflow_version
Workflowの特定のバージョン (公開されたバージョンまたはチェックアウトされたバージョン)を管理する
wf_activity
Workflowで使用されているアクティビティを管理する
sys_variable_value
様々なテーブルの変数(WorkflowやFlow Designerなどに設定された情報)を管理する
設定方法
Database View全体としては以下となり、View Tableを4つ使用しています。
Orderが100となっているwf_workflow_versionのView Tableは以下の設定となっています。
Orderが200となっているwf_workflow_versionのView Tableは以下の設定となっています。
ここで再度wf_workflow_versionのView Tableを作成している理由は、wf_workflow_versionのレコードのうちpublish=trueのみというフィルターをかけたいのですが、View Table単体では使用できないため、同一テーブルを参照したView Tableを2つ作成してjoinしています。
wf_activityのView Tableは以下の設定となっています。
WorkflowとWorkflowで使用しているアクティビティを結びつけています。
sys_variable_valueのView Tableは以下の設定となっています。
Workflowアクティビティと変数を結びつけています。
これでDatabase Viewの作成は完了です。Database Viewを実行し、Workflow名や指定したスクリプトでフィルタリングしてWorkflowで使用しているアクティビティがヒットすれば成功です。
以下は弊社インスタンスで稟議申請の中でBoxと連携を行っているスクリプトを含んでいるアクティビティをフィルタリングした結果になります。
おわりに
今回の検証により、Database Viewを利用しWorkflowに存在するアクティビティを調査することができるようになりました。
最後まで読んでいただき、ありがとうございました。
三井情報株式会社
ソリューション技術本部
ITマネジメント技術部
第一技術室
甲田善寛