• 工作流(WorkFlow)、Action操作


    一、工作流

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

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

     类别:选择为工作流

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

    工作流不同于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"];
  • 相关阅读:
    Mysql字符串字段判断是否包含某个字符串的方法
    mysql中用group_concat把selct中的数据列表转换成逗号分隔的字符串
    iview中对列标题头进行格式渲染render
    iview中父组件的数据通过props属性传值给子组件
    iview分页问题
    iview实现国际化
    MySQL查询优化:GROUP BY
    使用@ContextConfiguration替换@SpringBootTest
    WebAppConfiguration in Spring Tests
    使用@ContextConfiguration或者@ContextWebConfiguration注解调用resource文件夹下面的yml文件
  • 原文地址:https://www.cnblogs.com/LanHai12/p/15258032.html
Copyright © 2020-2023  润新知