再申請時、フローを差戻した人までスキップする
最終更新日: 2021年12月14日
R8 | R9
例として "順次・順次・順次フロー" で説明します。申請者を "higa", 承認者を "miyagi", 決裁者を "kinjo" とします。
"higa" が申請し、"miyagi" が承認しましたが、決裁者である "kinjo" が差し戻しを行いました。(このワークフローは差し戻し時には申請者へ戻す、としています。)
申請者 "higa" が諸条件を変更し、再び申請処理を行います。
先ほど承認済みであった "miyagi" は自動承認されます。再び決裁者 "kinjo" まで進みます。
また、このタイミングで "miyagi" には自動承認を行なったというメールが送信されています。
アカウント "miyagi" でログオンし、このデータを確認します。自動承認であるため、ワークフロー「承認」ボタンは表示されません。
アカウント "kinjo" でログオンし、このデータを確認します。決裁待ちであることがわかります。
ワークフロー処理でメール送信を行うため、juserモデルへメールアドレス項目を追加します。
上の例で示した物品購入伺いモデルを用意します。
「フロー状態」項目はワークフロー関数 FLOWSTATUS を適用します。データベースには保存しない項目としてください。
「次のメールアドレス」項目はワークフロー関数 WF_NEXT_USERID_MAIL を適用します。データベースには保存しない項目としてください。
このワークフローでは、申請ノードでの申請イベント時に、スクリプトを実行するようにします。スクリプトで自動承認処理を記述します。
設定したフローイベントスクリプトの例を示します。
上のフローイベントスクリプトでは、送信するメールのテンプレートは常に固定でした。
次に示すサンプルでは、ワークフローデータの申請状況を取得し、データが2件以上ある場合は「再申請」と判断するようにしています。再申請についての詳細は "ワークフロー決裁後に、フローイベントをリセットして再申請させる" をお読みください。
ここでは再申請の場合は "kianReapplyMailTemplate" のメールテンプレートが利用され、新規の申請の場合は "kianApplyMailTemplate" が利用されるようにしています。
WorkFlowManagerのskipToBackEventLayerId関数の第三引数にコメント文を指定できるようにしました。自動承認時に、指定したコメント文が付与されます。(10行目の第三引数が、これになります。)
実行例
定義方法
juserモデルへのメールアドレス項目の追加
物品購入伺いモデルを用意する
WF_NEXT_USERID_MAIL("juser","userid","mailaddress")
フローイベントスクリプトを用意する
フローイベントスクリプト (1)
var applicantUserId = wman.getApplicantUserId(modelname, modelpkey, p);
//print("applicantUserId:["+applicantUserId+"]");
var WorkFlowMail = Java.type("jp.jasminesoft.wagby.app.WorkFlowMail");
var MyWorkFlowMail = Java.extend(WorkFlowMail, {
replaceMapItem: function(replaceMap, mailAddress) {
replaceMap['${kian_p.nextuseridmail}'] = mailAddress;
//replaceMap['${kian_p.applicant}'] = applicantUserId;
}
});
wman.skipToBackEventLayerId(modelname, modelpkey, p, new MyWorkFlowMail(
modelname,
modelpkey,
"kianReapplyMailTemplate",
"juser",
"userid",
"mailaddress",
p
));
フローイベントスクリプト (2)
var WorkFlowMail = Java.type("jp.jasminesoft.wagby.app.WorkFlowMail");
var MyWorkFlowMail = Java.extend(WorkFlowMail, {
replaceMapItem: function(replaceMap, mailAddress) {
replaceMap['${kian_p.nextuseridmail}'] = mailAddress;
}
});
var workstateList = wman.getJfcworkstateList(modelname, modelpkey, p);
if (workstateList && workstateList.length > 2) {
mailTemplateId = "kianReapplyMailTemplate";
wman.skipToBackEventLayerId(modelname, modelpkey, p, new MyWorkFlowMail(
modelname,
modelpkey,
"kianReapplyMailTemplate",
"juser",
"userid",
"mailaddress",
p
));
} else {
var myWorkFlowMail = new MyWorkFlowMail(
modelname,
modelpkey,
"kianApplyMailTemplate",
"juser",
"userid",
"mailaddress",
p
);
myWorkFlowMail.send();
}
フローイベントスクリプト (3) コメントの設定
var WorkFlowMail = Java.type("jp.jasminesoft.wagby.app.WorkFlowMail");
var MyWorkFlowMail = Java.extend(WorkFlowMail, {
replaceMapItem: function(replaceMap, mailAddress) {
replaceMap['${kian_p.nextuseridmail}'] = mailAddress;
}
});
var workstateList = wman.getJfcworkstateList(modelname, modelpkey, p);
if (workstateList && workstateList.length > 2) {
mailTemplateId = "kianReapplyMailTemplate";
wman.skipToBackEventLayerId(modelname, modelpkey, "自動承認されました", p, new MyWorkFlowMail(
modelname,
modelpkey,
"kianReapplyMailTemplate",
"juser",
"userid",
"mailaddress",
p
));
} else {
var myWorkFlowMail = new MyWorkFlowMail(
modelname,
modelpkey,
"kianApplyMailTemplate",
"juser",
"userid",
"mailaddress",
p
);
myWorkFlowMail.send();
}