[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调用动作为我们提供了一种新的可行方式. 需求得到满足. 在下一章中,我们将分享调试插件的方法.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线