search
LoginSignup
3

posted at

updated at

ServiceNow ワークフローの承認アクティビティの挙動調査

調査したアクティビティ

公式ではWorkflowの後継機能であるFlow Designerの使用を推奨されていますが、
使い勝手や過去資源の存在からWorkflowもまだまだ現役という環境が多いのではないかと思います。
今回はCore ActivitiesのApprovalsにある

・Approval Group
・Approval User
・Approval Action
・Approval Coordinator

の動作について調べました。尚、これらのアクティビティはTaskテーブルを拡張したテーブルでのみ仕様可能です。
wf-pic1.png

Approval Actionの設定

Approval Actionの設定項目はシンプルで、Actionを4つの中から選ぶだけです。
wf-pic2.png

①Mark task approved
対象レコードのApproval値を「Approved」にします
②Mark task rejected
対象レコードのApproval値を「Rejected」にします
③Mark task requested
対象レコードのApproval値を「Requested」にします
④Disregard pending approvals
このActivityが実施された時点でRequested状態になっている承認レコードを強制的に「Cancelled」にします
※公式Docではno longer requiredとなっていますが、実際に動かしてみたところCancelledになるようです

①~③はSet Valueアクティビティを用いてApprovalに値をセットするのと同じ動きになります

Approval Userの設定

①Approversの設定

Approversで誰の承認が必要かを指定します。承認者が固定されていればUserテーブルから選択。
Advancedにチェックをつければスクリプトで指定する事も可能で、下図のようにanswer配列に承認を行わせたいuser情報をpushすればOKです。
wf-pic3.png

answer=[];
answer.push(current.assigned_to);
②Condition for approvalの設定

複数人承認者がいた場合、誰か1人でも承認すればよいのか、あるいは全員の承認が必要なのかや、承認拒否された際にActivity自体をRejectにするのか、他の承認者の承認を待つのか等の設定をWait forとWhen anyone rejectsで指定します。下図の設定ですと誰か1人でも承認すれば承認完了、逆に誰か1人でも拒否すれば承認拒否となります(つまり最初に承認or拒否された内容で処理が完了します)。

また、Approval ColumnとApproval Journal Columnは対象テーブルで承認情報が記録されるカラムを指定します。ここを変更する事は少ないかと思います。
wf-pic4.png

③Scheduleの設定

承認レコードの期限(Due Dateにセットされます)、スケジュール(期限のカウント条件)及び使用するタイムゾーンを設定できます。
下図の設定ですとタイムゾーンは日本時間、期限は2時間、スケジュールは平日8時~17時となります。つまり月曜16時に承認レコードが作成された場合、営業時間が考慮され期限は火曜9時となります。
ちなみに期限が切れた後でも普通に承認可能で、期限を特に設定しない場合Due Dateには承認レコードの作成日時が入るようです。
wf-pic5.png

Approval Groupの設定

Approversに入るのがGroupsになるだけで、基本的な使い方はApproval Userと同じです
wf-pic6.png

Approval Conditionの設定

このActivityは子Activityとして

・Approval-Group
・Manual Approvals
・Approval-User

を持たせる事ができ、Wait forで子Activityの承認/拒否に応じた処理を設定します。子Activityの設定内容は単体でActivityを追加する時と同じです。
wf-pic7.png
wf-pic8.png

サンプルフロー

サンプルとして下図のようなFlowを作成しました。以下3パターンで実際に動かしてみます

①Assignment Groupが承認を行う
②Assignment Groupが承認拒否する
③Descriptionに「skip」と入力する
wf-pic9.png
サンプルフローの挙動① Assignment Groupが承認を行う

ワークフロー対象テーブルのフォームからAssignment groupにTest Groupを指定し、Submit。(使用テーブルはTaskテーブルを拡張した試験用テーブルです)
wf-pic10.png

尚、Test Groupには以下4名を所属させています。
wf-pic11.png

Group approvalsにTest Groupが入り…
wf-pic12.png

ApproversにはTest Group所属の4名が入ります。
wf-pic13.png

自身(System Administrator)宛の承認レコードを選び、Approveしてみます
wf-pic14.png

サンプルフロー全体図①からのフローが動き、親レコードのApprovalがApproved、StateがClosed Completeとなりました。
wf-pic15.png

サンプルフローの挙動② Assignment Groupが承認拒否する

今度は、先程ApproveしたところでRejectしてみます
wf-pic16.png

サンプルフロー全体図②からのフローが動き、親レコードのApprovalがRejected、StateがClosed Incompleteとなりました。
wf-pic17.png

サンプルフローの挙動③ Descriptionに「skip」と入力する

最後に承認データ作成後、承認行為を行う前にDescriptionに「skip」と入力してみます。
wf-pic18.png

サンプルフロー全体図③からのフローが動き、承認レコードのApprovalがCancelledとなりました。
wf-pic19.png

参考リンク

公式Document

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3