创建自定义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