首页 > 其他分享 >创建自定义Action(全局)

创建自定义Action(全局)

时间:2022-12-14 16:44:46浏览次数:40  
标签:IOrganizationServiceFactory 自定义 创建 account Action 全局

创建自定义Action(全局)

在D365和Power Apps里,我们都可以创建自定义的Action,然后可以通过WebAPI调用自定义业务代码。我下面写的这个全局Action,不需要任何参数,想用的时候就用。

1.创建项目


2.在Nuget添加引用

引用:Microsoft.CrmSdk.CoreAssemblies

3.将class1.cs重新命名为CustomAction(你写别的也行),然后写逻辑

代码如下:

using Microsoft.Xrm.Sdk;
using System;

namespace Gongdh.D365.CustomAction
{
    public class CustomAction : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = factory.CreateOrganizationService(context.UserId);
            //创建一个新的客户
            Entity create_account = new Entity("account");
            create_account["name"] = $"Action Create Account {DateTime.Now}";
            service.Create(create_account);
        }
    }
}

4.新建Action

类别选择操作,实体选择无(全局)

直接激活就行,什么都不用做(因为我们实验的是自定义一个全局的Action)

5.注册Action

将刚刚写的Action编译,然后用插件注册工具将Action注册上去

Message选择new_MyCustomAction,Primary Entity写none

6.查看metadata

注册完成后,我们可以在metadata看到
地址:https:xxxxxx.crm5.dynamics.com/api/data/v9.2/$metadata

7.通过WebAPI调用

var req = {};
req.getMetadata = function () {
    return {
        boundParameter: null,
        operationType: 0,
        operationName: "new_MyCustomAction"
    };
};
 
Xrm.WebApi.online.execute(req).then( 
    function (data) { 
        var e = data; 
        debugger; 
    }, 
    function (error) { 
        debugger; 
        var errMsg = error.message; 
    }
);

标签:IOrganizationServiceFactory,自定义,创建,account,Action,全局
From: https://www.cnblogs.com/ynysj/p/16982566.html

相关文章