Dynamics 365中使用JavaScript和C#调用操作示例

微软动态CRM专家罗勇 ,回复334或者20190509可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

Action (操作)是流程的一种,可以在工作流中调用,可以使用JavaScript和C#代码方便的调用,用的好是个很不错的东西。

怎么创建Action请参考官方文档:Create your own actions ,或者我以前的博文也不错。

假设操作的名称为new_InvokeOrderApitoCreateReturnPartsAction,是一个绑定到实体new_returnreq的操作,包括一个类型string的输入参数OrderNumber,没有输出参数:

下面是JavaScript调用示例:

var params = {};
params.OrderNumber = "4318009670";
var req = new XMLHttpRequest();
var clientUrl = Xrm.Utility.getGlobalContext().getClientUrl();
req.open("POST", encodeURI(clientUrl + "/api/data/v9.1/new_returnreqs(e95e8829-c370-e911-a82b-000d3a365fc2)/Microsoft.Dynamics.CRM.new_InvokeOrderApitoCreateReturnPartsAction"), true);
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) {
        req.onreadystatechange = null;
        if (this.status == 200) {
            var alertStrings = { text: "调用操作成功!" };
            var alertOptions = { height: 120, width: 160 };
            Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then(
                function success() { },
                function () { }
            );
        }
        else {
            var error = JSON.parse(this.response).error;
            Xrm.Navigation.openErrorDialog({ message: error.message }).then(
                function () {
                },
                function () {
                });
        }
    }
};
req.send(JSON.stringify(params));

如果你的Action有复杂的参数类型,可以参考我的博文:通过Web API调用Action时各种类型输入参数传递值的方法

下面是C#代码调用示例:

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Tooling.Connector;
using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            CrmServiceClient crmSvc = new CrmServiceClient(@"AuthType=Office365;Url=https://luoyongdemo.api.crm.dynamics.com;[email protected];Password=pppsssss");
            if (!crmSvc.IsReady)
            {
                throw new Exception("Crm Service is not ready!" + crmSvc.LastCrmError + crmSvc.LastCrmException.Message);
            }
            OrganizationRequest orgReq = new OrganizationRequest("new_InvokeOrderApitoCreateReturnPartsAction");
            orgReq["OrderNumber"] = "4318009670";
            orgReq["Target"] = new EntityReference("new_returnreq", Guid.Parse("e95e8829-c370-e911-a82b-000d3a365fc2"));
            OrganizationResponse response = crmSvc.Execute(orgReq);
            Console.WriteLine("程序执行完成,按任意键退出...");
            Console.ReadKey();
        }
    }
}

如果创建的是全局的Action,现在Dynamcis 365 Customer Engagement从 9.0版本开始有新的简便调用方法了,就是 invokeProcessAction (Client API reference)

虽然官方文档没有明说仅仅支持全局Action,从我测试结果来看是仅仅支持全局Action,或许也有可能我不知道怎么调用绑定Action吧。

var params = {};
params.OrderNumber = "4318009670";
Xrm.Utility.invokeProcessAction("new_GlobalAction", params).then(
    function () {
        var alertStrings = { text: "调用全局操作成功!"};
        var alertOptions = { height: 120, width: 160 };
        Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then(
            function success() { },
            function () { }
        );
    },
    function () {
        Xrm.Navigation.openErrorDialog({ message: "调用全局操作失败!" }).then(
            function () {
            },
            function () {
            });
    });

原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Invoke_Action.html

时间: 2024-10-04 08:31:34

Dynamics 365中使用JavaScript和C#调用操作示例的相关文章

Dynamics 365中的公告(Post)分析

我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复382或者20191202可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 公告功能类似微博功能,不过有自动发公告的功能,我以前文章写过,Activ

自定义适用于手机和平板电脑的 Dynamics 365(四):窗体脚本

为 Web 应用程序中使用的窗体编写的脚本也应该适用于用于手机和平板电脑的 Dynamics 365,但存在一些差异. 通常,对于移动应用程序无效的方法不返回错误,但是它们也不返回任何值. 开发人员可以使用以下条件语句来划分在移动应用程序中将无法正常工作的代码: JavaScript if (Xrm.Page.context.client.getClient() != "Mobile") { // Add code that should not run in CRM for phon

为Dynamics 365写一个简单程序实现解决方案一键迁移

关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复258或者20170627可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me . 在我们做项目的过程中,一般会涉及到多个Dynamics 365环境,一般包括一个开发环境.一个SIT环境,一个UAT环境和一个生产环境,经常涉及到解决方案从开发环境迁移到SIT环境,从开发环境迁移到UAT环境,从开发环境迁移到UAT环境等等.一般手工操作是先更改解决方案版本,保存后发布解决

自定义适用于手机和平板电脑的 Dynamics 365(三):显示的实体

您可以启用 适用于手机的 Dynamics 365 和 适用于平板电脑的 Dynamics 365 的有限实体集. 若要查看是否启用了实体,或者要启用实体,请单击"设置">"自定义">"自定义系统">"实体". 选择一个实体并查看"Outlook & 移动电话"设置. 请注意以下事项: 可以为 适用于手机的 Dynamics 365 和 适用于平板电脑的 Dynamics 365

学习笔记: JavaScript/JQuery 的cookie操作

转自:http://blog.csdn.net/barryhappy/archive/2011/04/27/6367994.aspx cookie是网页存储到用户硬盘上的一小段信息.最常见的作用是判断用户是否登录.保存偏好设置等.我用到这个是写扫雷时,需要用cookie保存用户的设置,如行.列等.功能已具,笔而记之. cookie具有特定的格式——         cookiename=cookievalue; expires=epirationDateGMT; path=URL; domin=

不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例

摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复262或者20170727可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me . 我的上一篇文章 利用Fiddler修改请求信息通过Web API执行Dynamics 365操作(Action)实例 借助了Fiddler工具,你可能会问,如果不借助工具,我只有浏览器可行吗?这就是本文要讲述的. 我们知道一般浏览器按F12会出来开发者工具,我们以Chrome为例来讲解

Dynamics 365 marketing中添加自定义渠道磁贴

Dynamics 365 marketing中默认的渠道只有Marketing Email和Marketing Activity,想要添加其他渠道必须自定义磁贴,自定义磁贴的步骤如下: 1.创建实体 我创建了短信模板和短信消息实体 2.创建磁贴 新建一个解决方案,往里面添加一个.css文件和一个.xml文件,定义磁贴相关的属性和样式 <?xml version="1.0" encoding="utf-8"?> <!-- file name shou

在UIWebView中间接调用网页中的javascript代码获得想要的值

日记和一些废话: 今天在使用webView加载网页后, 发现网页中的点击事件是用js代码实现的, 可是怎么点击都没有反应, 而且我主要是想获取到点击事件转到的url , 后来发现html中又这么一段代码: document.addEventListener('WebViewJavascriptBridgeReady', function onBridgeReady(event) function openPage(pageUrl) { if(bridge) { bridge.send(pageU

ASP.NET中前台javascript与后台代码调用

ASP.NET中前台javascript与背景代码调用 1如安正在JavaScript访问C#函数? 2.如安正在JavaScript访问C#变量? 3.如安正在C#中访问JavaScript的已经有变量? 4.如安正在C#中访问JavaScript函数? 标题1谜底以下: javaScript函数中实施C#代码中的函数: 方法一:一.起首成立一个按钮,正在背景将调用或许搞定的内容写入button_click中; 二.正在前台写一个js函数,内容为document.getElementById(