サポート > リポジトリ > ワークフロー > スクリプトからワークフローを操作するスクリプト

スクリプトから直接、ワークフローの申請処理を行う方法を説明します。

年休申請モデルを例に説明します。Wagbyの標準では年休申請モデルの新規登録後に(画面からの操作で)ワークフローの申請を行います。ここではスクリプトを用いて、新規登録と同時にワークフローの申請を行ってみます。

スクリプトの実行タイミングは、コントローラ > 登録 > 登録の実行 とします。

var workstateService = p.appctx.getBean("JfcworkstateService");
var insertJfcworkstateController = p.appctx.getBean("insertJfcworkstateController");

// 新しい workstate を用意する。
var leaveId = leave.appid;
var workstate = workstateService.getStartJfcworkstate("leave", leaveId, p);
workstate.event = "Application";// 申請を意味する
workstate.comment = "TEST";// 任意のコメント文
workstate.mainModelname = "leave";// モデルID

// 画面からの操作と同じように insertJfcworkstateController クラスを使う。
p.request.setAttribute("__jfc_retrieveData_entity", workstate);
p.o = insertJfcworkstateController.retrieveData(p);
insertJfcworkstateController.do_insert(p);
  • JfcworkstateServiceクラスが提供するgetStartJfcworkstateメソッドを用いることで新しい workstate オブジェクトを取得することができます。このオブジェクトに event, comment, mailModelname をセットします。それぞれフローイベントの種類、コメント、モデルIDとなります。
  • この workstate オブジェクトを内部で利用している特別なキー __jfc_retrieveData_entity で request オブジェクトにセットしたあと、insertJfcworkstateController クラスが提供する retrieveData メソッドを呼び出します。戻り値を p.o にセットします。
  • 同じく insertJfcworkstateController クラスが提供する do_insert メソッドを呼び出すとワークフローイベントがシステムに登録されます。これらの処理は画面からワークフローの申請処理を行なったときと同じ操作となっています。