整理了一下一些与 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. JS中如何进行对象的深拷贝

    在JS中,一般的=号传递的都是对象/数组的引用,并没有真正地拷贝一个对象,那如何进行对象的深度拷贝呢?如果你对此也有疑问,这篇文章或许能够帮助到你 一.对象引用.浅层拷贝与深层拷贝的区别 js的对象引 ...

  2. Hadoop Yarn框架原理解析

    在说Hadoop Yarn的原理之前,我们先来看看Yarn是怎样出现的.在古老的Hadoop1.0中,MapReduce的JobTracker负责了太多的工作,包括资源调度,管理众多的TaskTrac ...

  3. PO,VO,TO,BO,DAO,POJO的解释

    java的(PO,VO,TO,BO,DAO,POJO)解释  O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定 ...

  4. 用 Python 描述 Cookie 和 Session

    这篇文章我们来聊聊Cookie和Session,网上有很多关于这两个知识点的描述,可惜的是大部分都没有示例代码,因此本文的重点在于示例代码. 环境 Python3.6.0 Bottle0.12.15 ...

  5. MySQL8.0 on Windows下重置root密码的BUG

    很多人都知道MySQL忘记root密码之后可以通过skip-grant-tables来暂时免密登录MySQL,从而修改root密码,但是这种方式一方面有安全隐患,另一方面也并不怎么适用于Windows ...

  6. tmux resurrect 配置

    概述 tmux 用了很长时间了, 快捷键定制了不少, 唯一的遗憾是没法保存 session, 每次关机重开之后, 恢复不到之前的 tmux session. 虽然也能忍受, 但是每天都手动打开之前的 ...

  7. 一个简易的kmp教学并给出java实现

    简单介绍一下问题 给定source字符串,找出target字符串出现的首位 例如 source   为“abddabddabc” target 为 “abddabc” 从第一位开始比较 |a b d ...

  8. vue 利用mockJs 模拟数据

    工作这几年一直用Java 开发,前端的技术自己也忘得差不多了(实际上自己也不怎么会),最近参与的项目是用VUE +  Element-ui + springboot 写的,由于需求没有定,先画一个de ...

  9. SpringBoot中使用JNnit4(一)之Mockito的使用

    经过入门篇,可以编写出一个简单的测试用例. 这篇讲的是BDDMockito的使用. BDDMockito用于测试时进行打桩处理:通过它可以指定某个类的某个方法在什么情况下返回什么样的值. 在单元测试时 ...

  10. c++11の关联容器

    一.关联容器 C++的容器类型可以分为顺序容器和关联容器两大类.对于关联容器,主要有map和set,对于这两种,根据不同的维度,衍生出了8种容器 map                        ...