整理了一下一些與 BPF(Business Process Flow)相關的 JS 操做:
爲 Stage 添加 changed 或者 selected 事件:react
function fnOnLoad() { Xrm.Page.data.process.addOnStageChange(fnStageChanged);//change 事件,跳轉到當前 Stage 時觸發 Xrm.Page.data.process.addOnStageSelected(fnStageSelected);//select事件,選中當前 Stage 時觸發 } function fnStageChanged(execContext){ var currentStage = execContext.getEventArgs().getStage();//獲取當前Stage //其餘操做 }
獲取當前 Stage:api
var activeStage = Xrm.Page.data.process.getActiveStage();
獲取當前 Stage 的名稱:wordpress
var sName = activeStage.getName();
獲取當前 Stage 的狀態:函數
var oStatus = activeStage.getStatus(); //active or inactive
更多相關的 api 能夠參考:url
https://adisys.wordpress.com/2017/01/03/dynamics-crm-scripting-for-business-process-flows/spa
獲取 Stage 下的字段名(step):.net
//"header_process_sFiledName",可用F12查看,若存在同名step,系統會自動在後面累加數字,好比:"header_process_sFiledName_1"
對 Stage 中的字段加鎖(設置只讀):code
Xrm.Page.getControl("header_process_sFiledName_1").setDisabled(true);
設置 BPF 的狀態:orm
Xrm.Page.data.process.setStatus("finished");//set finished,BPF流程已經完成
獲取 BPF 的狀態:blog
var oStatus = Xrm.Page.data.process.getStatus(); oStatus == "active"; //BPF處於active狀態,未finished oStatus == "finished"; //BPF處於finished狀態 oStatus == "aborted"; //BPF處於abandon狀態,灰色不可編輯
abandon 一個 BPF,整個流程會變成灰色,不可操做:
Xrm.Page.data.process.abandonProcess(); //BPF處於finished狀態時,不能夠執行abandon操做,會報錯
reactivate 一個 BPF,將已經 abandon 的 BPF 恢復到 active 狀態,可編輯和操做:
Xrm.Page.data.process.reactivateProcess();
Note:利用 JavaScript 對 Business Process Flow 進行 abandon 或者 reactivate 須要在 Form 的 OnSave 事件執行完畢以後,能夠利用回調函數(call back)來完成。