Dynamics CRM2016 通过web api来调用自定义action
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相关推荐
- 【转】Dynamics CRM 365零基础入门学习(三)Dynamics 通过Web API 来调用自定义的Action(使用插件)
今天想实现一个Search Product的功能,首先要将数据展示在页面,然后前端根据查询需求进行处理.之前是在salesforce中实现的,可以定义一个Search Product的页面,然后在页面 ...
- 【Web API系列教程】1.2 — Web API 2中的Action Results
前言 本节的主题是ASP.NET Web API怎样将控制器动作的返回值转换成HTTP的响应消息. Web API控制器动作能够返回下列的不论什么值: 1. void 2. HttpResponseM ...
- 用于将带有查询字符串的复杂对象传递到Web API方法的自定义模型绑定器
目录 介绍 查询复杂对象的字符串字段 使用和测试FieldValueModelBinder类 FieldValueModelBinder如何工作? 获取源字段和值 将字段部分与对象属性匹配 解析枚举类 ...
- Dynamics CRM 2015/2016 Web API:Unbound Custom Action 和 Bound Custom Action
今天我们再来看看Bound/Unbound Custom Action吧,什么是Custom Action?不知道的小伙伴们就out了,Dynamics CRM 2013就有了这个功能啦.和WhoAm ...
- asp.net core 2.0 web api基于JWT自定义策略授权
JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端 ...
- Web APi之控制器选择Action方法过程(九)
前言 前面我们叙述了关于控制器创建的详细过程,在前面完成了对控制器的激活之后,就是根据控制器信息来查找匹配的Action方法,这就是本节要讲的内容.当请求过来时首先经过宿主处理管道然后进入Web AP ...
- Golang实现web api接口调用及web数据抓取[get post模式]
前沿: 继续扩展我的golang服务端,这边有些数据库是没有权限的,对方给了我webservices的接口,针对异常的数据,我要去抓数据,再次分析,golang貌似没有python那么多的模拟浏览器访 ...
- Dynamics 365 CRM (online) 使用WebApi调用全局action(Plugin)执行批量更新操作, 前端JS批量上传记录到CRM中
创建一个action process,如下图,分别有两个inputparameter 和一个outputparameter 2.使用visual studio 2019编写一个plugin dll, ...
- python 图表_Python入门学习系列——使用Python调用Web API实现图表统计
使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...
最新文章
- vue打包后图片找不到情况
- 图论 + 并查集 ----最小生成树重构图 + 可撤销并查集 + set启发式合并 时间线上的离线求解 D. Graph and Queries
- 空间索引 - GeoHash算法及其实现优化
- 【Javascript基础】
- Windows 11正式发布,所有用户均可免费升级,还支持安卓应用
- 非阻塞同步算法与CAS(Compare and Swap)无锁算法
- POJ 3250 Bad Hair Day【单调队列】
- 钉钉项目任务怎么添加审批表单
- gtj2018如何生成工程量报表_如何更高效地使用EXCEL,一键生成报表?
- python 迭代器 生成器_python 迭代器与生成器
- 花书+吴恩达深度学习(二五)直面配分函数(CD, SML, SM, RM, NCE)
- 2.14_AVL_tree_AVL树
- spring揭秘 读书笔记 六 bean的一生
- JQuery 动画之 淡入淡出
- wireless_tools在android上的移植
- python写数据到hive_Python数据篇之Pyhive
- python语言进行生日悖论分析--随机试验方法
- 探索学习:网红容器引擎Docker
- Windows Server 2016 基本设置
- IDEA访问数据库时,其中一个字段数据库中有值,但是访问到的数据的时候其中一个始终是null