action操作很早就已出现,今天要分享的是通过web api来调用action,该功能在online版本中非常有用,可以将js中复杂的逻辑操作放在处理能力更强的后端来做。

首先咱们先简单的新建一个action,实体设置上可以设置为全局的,也可以单独设定某个实体,我这边的demo用的是案例实体

设置好后确定跳转到下一页,这一页需要设置唯一名称(后面调用代码中会用到),简单设置了两个输入参数一个输出参数,在步骤设置里我不做任何添加,设置完后保存并激活。

新建一个plugin项目,添加如下代码,代码非常简单,获取输入参数,计算后输出

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;namespace Action
{public class Class1 : IPlugin{public void Execute(IServiceProvider serviceProvider){IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);EntityReference entityRef = context.InputParameters["Target"] as EntityReference;Money money1 = context.InputParameters["Money1"] as Money;Money money2 = context.InputParameters["Money2"] as Money;Money sum = new Money(money1.Value + money2.Value);context.OutputParameters["MoneySum"] = sum;}}
}

下面来注册该action,方法同插件注册,在注册step时message选择我们的action的唯一名称,很多人在这一步的message里不显示action的名字,确保两点:第一你的action激活了,第二你的插件注册器是在你激活action后再打开的(如果不是,请关闭插件注册工具重新打开下即可,刷新没用,乖乖的关闭再打开)。

注册完后就是最后的js中调用了,注意request的url最后的写法Microsoft.Dynamics.CRM.【action唯一名称】

  var entity = new Object();entity["Money1"] = 1;entity["Money2"] = 2;
var req = new XMLHttpRequest()
req.open("post", "http://121.40.75.24:5555/Origin/api/data/v8.0/incidents(03AE5852-6EFA-E511-9417-E2BFEC45B344)/Microsoft.Dynamics.CRM.new_testaction", false);req.setRequestHeader("Accept", "application/json");req.setRequestHeader("Content-Type", "application/json; charset=utf-8");req.setRequestHeader("OData-MaxVersion", "4.0");req.setRequestHeader("OData-Version", "4.0");req.onreadystatechange = function () {if (this.readyState == 4) {if (this.status == 200) {var result=JSON.parse(this.responseText);}else {}}};req.send(JSON.stringify(entity));

最后来看下输出结果

在on-premises的开发中我们往往把复杂的业务处理逻辑封装成接口供前端js调用,但在online的开发中这样的开发方式无疑增加了成本(需另外架设服务器,添置域名,配置https协议证书等),web api调用action给我们提供了新的可行的方式。

Dynamics CRM2016 通过web api来调用自定义action相关推荐

  1. 【转】Dynamics CRM 365零基础入门学习(三)Dynamics 通过Web API 来调用自定义的Action(使用插件)

    今天想实现一个Search Product的功能,首先要将数据展示在页面,然后前端根据查询需求进行处理.之前是在salesforce中实现的,可以定义一个Search Product的页面,然后在页面 ...

  2. 【Web API系列教程】1.2 — Web API 2中的Action Results

    前言 本节的主题是ASP.NET Web API怎样将控制器动作的返回值转换成HTTP的响应消息. Web API控制器动作能够返回下列的不论什么值: 1. void 2. HttpResponseM ...

  3. 用于将带有查询字符串的复杂对象传递到Web API方法的自定义模型绑定器

    目录 介绍 查询复杂对象的字符串字段 使用和测试FieldValueModelBinder类 FieldValueModelBinder如何工作? 获取源字段和值 将字段部分与对象属性匹配 解析枚举类 ...

  4. Dynamics CRM 2015/2016 Web API:Unbound Custom Action 和 Bound Custom Action

    今天我们再来看看Bound/Unbound Custom Action吧,什么是Custom Action?不知道的小伙伴们就out了,Dynamics CRM 2013就有了这个功能啦.和WhoAm ...

  5. asp.net core 2.0 web api基于JWT自定义策略授权

    JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端 ...

  6. Web APi之控制器选择Action方法过程(九)

    前言 前面我们叙述了关于控制器创建的详细过程,在前面完成了对控制器的激活之后,就是根据控制器信息来查找匹配的Action方法,这就是本节要讲的内容.当请求过来时首先经过宿主处理管道然后进入Web AP ...

  7. Golang实现web api接口调用及web数据抓取[get post模式]

    前沿: 继续扩展我的golang服务端,这边有些数据库是没有权限的,对方给了我webservices的接口,针对异常的数据,我要去抓数据,再次分析,golang貌似没有python那么多的模拟浏览器访 ...

  8. Dynamics 365 CRM (online) 使用WebApi调用全局action(Plugin)执行批量更新操作, 前端JS批量上传记录到CRM中

    创建一个action process,如下图,分别有两个inputparameter 和一个outputparameter 2.使用visual studio 2019编写一个plugin dll, ...

  9. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

最新文章

  1. vue打包后图片找不到情况
  2. 图论 + 并查集 ----最小生成树重构图 + 可撤销并查集 + set启发式合并 时间线上的离线求解 D. Graph and Queries
  3. 空间索引 - GeoHash算法及其实现优化
  4. 【Javascript基础】
  5. Windows 11正式发布,所有用户均可免费升级,还支持安卓应用
  6. 非阻塞同步算法与CAS(Compare and Swap)无锁算法
  7. POJ 3250 Bad Hair Day【单调队列】
  8. 钉钉项目任务怎么添加审批表单
  9. gtj2018如何生成工程量报表_如何更高效地使用EXCEL,一键生成报表?
  10. python 迭代器 生成器_python 迭代器与生成器
  11. 花书+吴恩达深度学习(二五)直面配分函数(CD, SML, SM, RM, NCE)
  12. 2.14_AVL_tree_AVL树
  13. spring揭秘 读书笔记 六 bean的一生
  14. JQuery 动画之 淡入淡出
  15. wireless_tools在android上的移植
  16. python写数据到hive_Python数据篇之Pyhive
  17. python语言进行生日悖论分析--随机试验方法
  18. 探索学习:网红容器引擎Docker
  19. Windows Server 2016 基本设置
  20. IDEA访问数据库时,其中一个字段数据库中有值,但是访问到的数据的时候其中一个始终是null

热门文章

  1. linux制作归档文件目录,在 Linux 中如何归档文件和目录
  2. 最近公共祖先(三种方法)
  3. 牛逼!用Python为她设计专属签名软件!
  4. 部分svg去除水印文字
  5. 欧洲彼得·德鲁克协会任命美国项目管理协会的Sunil Prashara担任其国际咨询委员会委员
  6. laravel中ajax使用
  7. 谷歌最新抠图算法:让背景虚化细节到头发丝!有单反的感觉了...
  8. 土狼向狮子的演进(z)
  9. 易桌面打印室打印文件资料一般多久能到
  10. cleanmymac在哪下载?中文官网安装教程