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アクションで承認レコードが作成されないみたいです。