D365V9以后引入了新的API,其中比较Nice的是给我们封装了WebApi,不需要我们再去写request了,本篇要分享的是如何使用SDK中的Xrm.WebApi.online.execute来执行自定义的Entity类型的Action。

Docs中对execute执行Action是有示例的,比如下面的sample,但是这是global的Action,可以看到红框中的boundParameter(关于参数的含义可以自己看docs,很简单,这里就不做阐述了)是null

那Entity的类型的该怎么构建,docs的示例中没有,那只能自己琢磨了。

先来看下我定义的Action,很简单就一个参数

再来看下这条Action在metadata中的显示,会发现多了一个Name为entity的输入参数,因为这是Entity类型的Action,所以得把Entity传入

看下具体的代码,getMetadata中的boundParameter的值是entity,parameterTypes即是你的输入参数,在我定义的projectId的基础上增加了一个entity,而这个entity的赋值方式搞对了就很简单了,entityType的值即是上面metadata中红框中的,其他的参数的说明还是看docs吧

var projectJs = window.ProjectJs || {};
(function () {this.SendSurvey = function (executionContext) {var projectId = executionContext.data.entity.getId().replace('{', '').replace('}', '');var sendSurvey = new projectJs.sendSurveyMail(projectId);Xrm.WebApi.online.execute(sendSurvey).then(function (res) {if (res.ok) {Xrm.Navigation.openAlertDialog({ text: "Send Successfully"});}}, function (res) {});};projectJs.sendSurveyMail = function (projectId) {this.projectId = projectId;this.entity = { entityType: "msdyn_project", id: this.projectId};};projectJs.sendSurveyMail.prototype.getMetadata = function () {return{boundParameter: "entity",parameterTypes: {"entity": {typeName: "mscrm.msdyn_project",structuralProperty: 5},"projectId": {"typeName": "Edm.String","structuralProperty": 1 // Primitive  Type}},operationType: 0, // This is an action. Use '1' for functions and '2' for CRUDoperationName: "sfdhl_ProjectServiceSendSurveyEmail"
};
};}
).call(projectJs);

最后看下执行的结果,成功调用

Dynamics 365Online 使用Xrm.WebApi.online.execute执行自定义Action相关推荐

  1. Xrm.WebApi 多对多关系处理

    //primaryId: 主实体id //childIds:多对多中子实体的ids //parentTable:主实体logicalName //childTable:子实体logicalName / ...

  2. 在Dynamics 365 CRM 中使用Xrm.WebApi实现增,删,改,查(需V9.0或以上)

    增加一条记录 function createAccount() { // collect account data var data = { "name": document.ge ...

  3. Dynamics 365Online 应用内消息通知(In-app notifications)

    应用内通知其实一直是个刚需,但D365一直缺乏这个功能,如果客户有需求,我们只有通过自定义的方式实现,好在V9以后顶部栏可以自定义了,可以自己加Icon,实现通知的样式. 好在2022WAV1后,D3 ...

  4. activiti自定义_在Activiti中执行自定义查询

    activiti自定义 (这可能最终会出现在Activiti 5.15版本的用户指南中,但是我已经想要共享它了) Activiti API允许使用高级API与数据库进行交互. 例如,对于检索数据,查询 ...

  5. 在Activiti中执行自定义查询

    (这可能最终会出现在Activiti 5.15版本的用户指南中,但是我已经想共享它了) Activiti API允许使用高级API与数据库进行交互. 例如,对于检索数据,查询API和本机查询API的用 ...

  6. greasemonkey_Greasemonkey –在任何页面上执行自定义JavaScript

    greasemonkey If you want to try executing custom local scripts on any page you visit, try Greasemonk ...

  7. mysql 创建函数 权限_MySQL赋予用户执行自定义Function的权限

    将远程数据库导入到本地之后,一启动项目就报错"execute command denied to user",提示用户没权限执行自定义FunctionCaused by: java ...

  8. WebApi数据验证——编写自定义数据注解(Data Annotations)

    2019独角兽企业重金招聘Python工程师标准>>> 配合ModelState使用,关于使用方法,参考微软文档 https://docs.microsoft.com/en-us/a ...

  9. build 之前执行task_Android Gradle新增buildtypes以及编译前执行自定义task

    众所周知,打包的需求千奇百怪,我们在打包时会遇到文件操作.版本定义.通过参数控制版本之类的需求.今天我们就来聊聊如何来实现这些需求-- 1.添加buildTypes 一般我们通过gradle构建的命令 ...

最新文章

  1. 客快物流大数据项目(五十二):根据数据库表及字段创建公共模块
  2. 少壮不努力,老大背单词
  3. 数据治理(Data Governance)
  4. 属于哪种虚拟化类型_经络淤堵,疲乏无力?有3种疲劳类型,你属于哪种,快来自测一下...
  5. mfc static 文本自适应宽度_基于单双词的自适应单调启发式搜索的文本攻击
  6. xshell 设置屏幕字体
  7. 消息队列 Kafka 的基本知识及 .NET Core 客户端
  8. 1,Django 基础一
  9. 网络货运平台要智能,安全的数据底座少不了
  10. poj 2031 BuildingaSpaceStation 最小生成树 Prim、Kruskal
  11. C语言最后一次作业--总结报告
  12. QQ尾巴病毒核心技术的实现原理分析
  13. AndroidStudio的强大搜索功能介绍!全局搜索、搜索文件、搜索类、搜索文本、搜索一切
  14. NuPlayer源码分析三:解码模块
  15. 接口收到CRC错包怎么处理
  16. 电子线路设计技巧5:CDRH系列贴片电感
  17. EMC | 静电防护方法
  18. python爬虫小工具——下载助手
  19. windows下安装zookeeper以及监控中心
  20. 【人工智能】大模型的发展历史

热门文章

  1. 有哪些好用的智能写作工具?
  2. 感激爸妈----您们辛苦了
  3. 分享篇:第十届“泰迪杯”数据挖掘挑战赛-农田害虫图像识别(特等奖)一
  4. 推荐 :数据科学与大数据技术专业特色课程研究
  5. Linux:查看主机显卡
  6. 基于FPGA的图像浮雕效果实现
  7. 【Angular4】constructor ngOnInit
  8. Resources Root目录和Sources Root目录的区别
  9. 在vmware里面免费安装纯净的xp虚拟机
  10. 2345恶意篡改修复