2
1

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 Flow Designerを再起動させる方法

Last updated at Posted at 2023-01-27

Flow Designerを再起動させる方法

Workflowの後継であるFlow Designerですが、
Flow Designerの処理は一方通行で処理を前段階に戻すという事が出来なくなっています。
Workflowはその辺自由に設定できたので、少し不便です。
どうしてもFlow Designerで処理を戻したい場合、稼働中のFlowを一旦終了してから
再起動させる、というスクリプトで強引ですが対処は可能です。
(再起動時はフラグ等セットしておいてifアクティビティと組み合わせる事で任意の箇所からスタートさせる、といったFlow側制御は必要になってくるかと思います) 弊社ブログへも同様の記事を投稿しております。

以下、スクリプト例です。

		// 稼働中フローの終了
		var flow = new GlideRecord("sys_flow_context");
		flow.addQuery("source_record", "フローを修了させたいレコードのsys_id");
		flow.addQuery("state", "WAITING");
		flow.query();
		if (flow.next()) {
			sn_fd.FlowAPI.cancel(flow.getUniqueValue(), 'Canceling Flows');
		} 

		// フローを再稼働
		try {

			// 引数inputsはフローのTriggerごとに異なる。TriggerがService Catalogであれば以下をセット
			var inputs = {};
			inputs['request_item'] = "フローを再稼働させたいsc_req_itemのGlide Record";
			inputs['table_name'] = "sc_req_item";

			var contextId = sn_fd.FlowAPI.startFlow("稼働させたいFlowのname", inputs);	

		} catch (ex) {
			var message = ex.getMessage();
			gs.info(message);  
		}
 }

引数inputsが詳細な解説ページが無いのでちょっとわかりづらいですが、おそらく公式Doc
「Data pills available by trigger type」に記載されているものをセットすればよさそうです。

また、もしFlow内でAsk for Approvalアクションを用いてグループ承認レコード(sysapproval_group)を作成している場合、フローキャンセルとあわせてそのレコードの承認状況(approval)もrejectedに更新してあげる必要がありました。どうやらフロー再起動時、生きている状態のグループ承認レコードが残っているとAsk for Approvalアクションで承認レコードが作成されないみたいです。

参考
Flow Designer trigger types
FlowAPI - Scoped, Global

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?