[Transfer] Dynamics CRM 365的从零开始的入门学习(3)通过Dynamics
优采云 发布时间: 2020-08-08 14:00要立即实现搜索产品功能,必须首先在页面上显示数据,然后前端将根据查询要求对其进行处理. 它以前是在salesforce中实现的. 您可以定义“搜索产品”页面,然后访问查询该页面上数据的Web服务. 但是在Dynamic 365中,没有这种直接调用方法. 最后,找到一种方法,使前端页面通过Js在工作流中调用Action,并将插件绑定到Action.
实现效果
(1)实现html页面并将其导入系统
在设置中找到自定义项,然后转到自定义系统,选择Web资源,然后将先前准备的页面上传到系统.
(2)自定义操作
首先创建一个新动作,可以将实体设置设置为全局,也可以单独设置一个实体.
注意:
注册动作,方法与插件注册相同. 在注册步骤时,消息将选择我们操作的唯一名称. 许多人没有在此步骤的消息中显示操作的名称. 请确保两点: 首先,您的操作已激活;其次,在您激活操作后打开了插件注册器.
设置动作后,在此设置两个输入参数和一个输出参数. 设置后,保存并激活.
(3)开发插件项目
在此我们简要介绍该插件的基本用法
1. 要继承IPlugin,并实现Executive方法.
2. 从服务提供商那里获取执行上下文
3. 我们可以检查启动插件的实体名称
4. 您还可以检查触发的事件,无论是创建,更新还是删除
5. 在输入参数中获取触发的实体
6. 通过服务工厂获取IOrganizationService. 如果CreateOrganizationService方法的参数为null,则表示系统用户;如果参数为context.UserId或Guid.Empty,则表示当前用户.
7. 最后,DoAction方法,即插件的逻辑可以在这里实现.
以下是实现该插件的代码:
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);
//传入两个参数
String InParameters1 = context.InputParameters["InParameters1"] as String;
String InParameters2 = context.InputParameters["InParameters2"] as String;
//查询
//EntityReference entityRef = context.InputParameters["Target"] as EntityReference;
string fetchProductXml = @"
";
EntityCollection products = service.RetrieveMultiple(new FetchExpression(fetchProductXml));
//传出参数
context.OutputParameters["OutParameters"] = products;
//遍历products
foreach (var pair in products.Entities)
{
foreach (var pa in pair.Attributes)
{
Console.WriteLine(pa.Key + ": " + pa.Value);
}
}
Console.WriteLine(products);
}
(4)数据查询方法,本文使用FetchXML
在上面的代码实现中,我使用FetchXML来实现它. 对于多条件跨表查询,返回多个记录非常方便. 常用的结构如下,
SDK中有很多类似的情况.
我们可以使用高级查询来自动生成XML
最后我们可以导出XML文件
(5)Js调用自定义操作
最后,您可以看到输出结果:
摘要:
在内部部署的开发中,我们通常将复杂的业务处理逻辑封装到用于前端js调用的接口中,但是在在线开发中,这种开发方法无疑会增加成本(必须设置设置另一台服务器,添加域名并配置https协议证书等),通过网络api调用动作为我们提供了一种新的可行方式. 需求得到满足. 在下一章中,我们将分享调试插件的方法.