4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-07-29

調査したアクティビティ

公式では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

弊社ブログへも同様の記事を投稿しております。

4
3
0

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
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?