整理了一下一些与 BPF(Business Process Flow)相关的 JS 操作:

为 Stage 添加 changed 或者 selected 事件:

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:

var activeStage = Xrm.Page.data.process.getActiveStage();

获取当前 Stage 的名称:

var sName = activeStage.getName();

获取当前 Stage 的状态:

var oStatus = activeStage.getStatus();    //active or inactive

更多相关的 api 可以参考:

https://adisys.wordpress.com/2017/01/03/dynamics-crm-scripting-for-business-process-flows/

获取 Stage 下的字段名(step):

//"header_process_sFiledName",可用F12查看,若存在同名step,系统会自动在后面累加数字,比如:"header_process_sFiledName_1"

对 Stage 中的字段加锁(设置只读):

Xrm.Page.getControl("header_process_sFiledName_1").setDisabled(true);

设置 BPF 的状态:

Xrm.Page.data.process.setStatus("finished");//set finished,BPF流程已经完成

获取 BPF 的状态:

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)来完成。

Dynamics CRM 日常使用JS整理(二)的更多相关文章

  1. Dynamics CRM 日常使用JS整理(一)

    整理下平时CRM开发中用到的一些基本的js操作 取值: var oResult = Xrm.Page.getAttribute(sFieldName).getValue(); var oResult ...

  2. Dynamics CRM 日常使用JS整理(三)

    一.指定 Partylist 类型字段能 lookup 的实体(以 Appointment 中某个字段为例子): var control = Xrm.Page.getControl("req ...

  3. Dynamics CRM不发布JS调试

    本博客已迁移至   http://www.krely.cn/ 上个项目做了一年多,大多是在做JS的开发,由于开发人数比较多,着实被坑的不轻.因为JS修改完成之后必须要发布,对于我们动辄几千行的JS的调 ...

  4. Dynamics CRM 常用的JS

    常用JS(一) Xrm.Page.context.getUserId():       //获取当前用户id Xrm.Page.context.getUserName():       //获取当前用 ...

  5. Microsoft Dynamics CRM 2011/2013 JS操作集锦

    1.Xrm.Page.context用户ID:getUserId()用户角色:getUserRoles()用户语言:getUserLcid()组织名称:getOrgUniqueName()组织语言:g ...

  6. Microsoft Dynamics CRM 2011 常用JS 按F12 改动窗体上数据的方法

    1.按F12打开控制台输入下面代码: contentIFrame.Xrm.Page.getAttribute("new_status").setValue(50);//设值cont ...

  7. Dynamics CRM 365常用js记录。

    var entityname =window.parent.Xrm.Page.data.entity.getEntityName();//获取实体名称 var sampid = window.pare ...

  8. 在Dynamics CRM中使用Bootstrap

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  9. Dynamics CRM中的操作(action)是否是一个事务(transaction)?

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复168或者20151104可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 以前的博文 微软Dynamics ...

随机推荐

  1. Testlink1.9.17使用方法( 第四章 测试需求管理 )

    第四章 测试需求管理 QQ交流群:585499566 需求规格说明书是我们开展测试的依据.首先,我们可以对项目(产品)的需求规格说明书进行分解和整理,将其拆分为多个需求,一个项目可以包含多个需求,一个 ...

  2. IDEA启动tomcat乱码

    1.找到IDEA安装目录 2.找到2个文件 3.编辑,在最后一行加入 -Dfile.encoding=UTF-8 4.修改IDEA里tomcat内得编码 5.修改IDEA中tomcat中,startu ...

  3. 返回表对象的方法之一--bulk collect into

    1.创建表对象的类型(oracle Types类目录下) create or replace type obj_table1 as object( xzq nvarchar2(19), mj numb ...

  4. emacs 只读打开文件

    emacs 只读打开文件 : C-x C-r emacs 让buffer区变成只读 : C-x C-q emacs 让只读buffer区变成可以保存修改 : C-x C-q

  5. ANT property三种使用方式

    方式一:引入*.properties文件 1.在cms.properties文件中定义属性 userName=admin 2.在build.xml中引入属性 <property file=&qu ...

  6. 桌面远程连接阿里云服务器(windows)后丧失了双向文件复制粘贴功能的解决方案(第一条博客!)

    近日应公司要求,需在windows服务器上架设一个交易中介软件. 过程之一:将软件压缩文件传到服务器上. 问题:在“运行”对话框通过输入'mstsc' 创建远程连接以后,出现本地桌面与服务器之间无法物 ...

  7. Django Template(模板)

    一.模板组成 组成:HTML代码 + 逻辑控制代码 二.逻辑控制代码的组成 1.变量 语法格式 : {{ name }} # 使用双大括号来引用变量 1.Template和Context对象(不推荐使 ...

  8. python操作Excel、openpyxl 之图表,折线图、饼图、柱状图等

    一.准备 需要模块: from openpyxl.workbook import Workbook from openpyxl.chart import Series,LineChart, Refer ...

  9. Make a Person 闭包

    用下面给定的方法构造一个对象. 方法有 getFirstName(), getLastName(), getFullName(), setFirstName(first), setLastName(l ...

  10. linux环境下vim创建java文件,并编译运行

    一.前提 安装Java 二.创建工作目录并编辑java文件 三.编译 四.运行