一、工作流
含义:在执行一个实体操作时,更新另一个实体的字段中的信息,该操作为异步更新!
创建步骤:设置--》流程--》新建流程--》设置触发条件--》选择字段--》选择操作--》激活--》转化为实时工作流(同步操作)
类别:选择为工作流
在后台运行此工作流:勾选为异步,反之为同步
工作流不同于action,实体为必选,没有全局工作流。
激活类型:如果该流程多次被调用可选择流程模板
作为按需流程:勾选此项的话用户则需手动启用
添加步骤:如果需要A实体修改一个字段,相应的也需要修改B实体的一个字段,那么AB实体必须要有关联,否则无法进行修改
自定义工作流:
在使用自定义工作流的前提之下,我们需要写一些条件,条件定义完成之后,选中该行步骤点击添加步骤,选择自定义的工作流!
首先安装一个Templates插件在vs编辑器中,创建一个workflow--》选择
--》删除源文件再添加一个code activity文件--》引用Microsoft.crm.sdk和Microsoft.crmsdk.workflow
注册:只需要注册一个文件即可
二、Action
含义:相当于公共方法,可以通过js,webapi调用,任何实体都可调用,按需调用。
操作步骤;设置--》流程--》新建流程--》选择操作(action)--》设置传入参数和返回信息--》在vs中新建库类引用两个文件--》写入IPlugin类-->注册的时候Message要写action名称--》设置为操作之后执行执行action--》Primary entity选择你的action注册的实体,如果是全局的,则设置为none
编写action代码:继承IPlugin接口,不需要写PluginBase类inputparaneters为传入参数,参数为操作中自己设置的参数名称,注册签名
EntityReference entityRef = context.InputParameters["实体名称"] as EntityReference;//获取实体数据
Action注册:注册时如图message后面是操作名称primary entity是操作实体没有就none
调用Action:这里的entity【】中的参数为操作中的参数名称,jQuery调用,注意路径的写法new_show为操作名称
原生ajxa调用
contentType: "application/json; charset=utf-8"--》必加!
action操作有指定实体时代码写法,就变一手url:Xrm.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"];