LanHai12

一、工作流

       含义:在执行一个实体操作时,更新另一个实体的字段中的信息,该操作为异步更新!

       创建步骤:设置--》流程--》新建流程--》设置触发条件--》选择字段--》选择操作--》激活--》转化为实时工作流(同步操作)

 

 

 类别:选择为工作流

在后台运行此工作流:勾选为异步,反之为同步

工作流不同于action,实体为必选,没有全局工作流。

 

 

 激活类型:如果该流程多次被调用可选择流程模板

         作为按需流程:勾选此项的话用户则需手动启用

         添加步骤:如果需要A实体修改一个字段,相应的也需要修改B实体的一个字段,那么AB实体必须要有关联,否则无法进行修改

自定义工作流:

 

 

在使用自定义工作流的前提之下,我们需要写一些条件,条件定义完成之后,选中该行步骤点击添加步骤,选择自定义的工作流!

 

首先安装一个Templates插件在vs编辑器中,创建一个workflow--》选择

 

 

--》删除源文件再添加一个code activity文件--》引用Microsoft.crm.sdkMicrosoft.crmsdk.workflow

 

 

 

注册:只需要注册一个文件即可

二、Action

        含义:相当于公共方法,可以通过jswebapi调用,任何实体都可调用,按需调用。

        操作步骤;设置--》流程--》新建流程--》选择操作(action--》设置传入参数和返回信息--》在vs中新建库类引用两个文件--》写入IPlugin-->注册的时候Message要写action名称--》设置为操作之后执行执行action--Primary entity选择你的action注册的实体,如果是全局的,则设置为none

 

 

 

 

 编写action代码:继承IPlugin接口,不需要写PluginBaseinputparaneters为传入参数,参数为操作中自己设置的参数名称,注册签名

                  EntityReference entityRef = context.InputParameters["实体名称"as EntityReference;//获取实体数据

 

 

Action注册:注册时如图message后面是操作名称primary entity是操作实体没有就none

 

 

 

 

调用Action:这里的entity【】中的参数为操作中的参数名称,jQuery调用,注意路径的写法new_show为操作名称

 

 

      原生ajxa调用

 

 

contentType: "application/json; charset=utf-8"--》必加!

action操作有指定实体时代码写法,就变一手urlXrm.Page.context.getClientUrl() + "/api/data/v9.0/实体名称的复数形式(实体数据id)/Microsoft.Dynamics.CRM.new_show"

JSON.parse(this.responseText).c--》获取的是一个对象数组,所以先转jsoon字符串点输出的名称获取到输出数据,重点在于url和传递的参数名千万别写错了

如中途停了action并修改了其中的信息,那么就要重新注册!

 

 

补充:

传一个实体集合也就是EntityCollection到后台!action其实就是将前端传入的数据转化为json传入后台,在将传入的数据的类型和action输入类型进行匹配,匹配上了就进入后台进行相关操作!

前端

var e=new Object();
var entitycc=
  [{
  //实体的名称
  "@odata.type": "Microsoft.Dynamics.CRM.new_actionbj",
  //实体中字段名称(字段名一定要在实体中存在,数据不一定要已存在的)(下面三个字段都是)
  "new_actionbjid": "10672834-6064-EB11-B38B-005056976604",
  "new_name": "Test",
  //查找字段(相当于一个实体了)
  "new_entityccs": { "@odata.type": "Microsoft.Dynamics.CRM.new_subgrid1", "new_subgrid1id": "06BBC4D1-7064-EB11-B38B-005056976604" }
  },
  {
  "@odata.type": "Microsoft.Dynamics.CRM.new_actionbj",
  "new_actionbjid": "10672834-6064-EB11-B38B-005056976604",
  "new_name": "Test2",
  "new_entityccs": { "@odata.type": "Microsoft.Dynamics.CRM.new_subgrid1", "new_subgrid1id": "06BBC4D1-7064-EB11-B38B-005056976604" }
  }]
  //给Entity的数据类型给定值
  var entityff={
  "@odata.type": "Microsoft.Dynamics.CRM.new_subgrid1", "new_subgrid1id": "06BBC4D1-7064-EB11-B38B-005056976604"
  }
  e["entityInfo"]=entitycc;
  e["entity"]=entityff;

  通过ajax将e传入指定的action,就可拿到对应的数据




  //后端接收
  //实体集
  EntityCollection h= (EntityCollection)context.InputParameters["entityinfo"];
  //实体
  Entity j = (Entity)context.InputParameters["entity"];

 

分类:

技术点:

相关文章: