整理了一下一些与 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)来完成。