Dynamics crm 用于发布和发布所有消息的CRM插件
我想知道我们是否可以编写插件来执行Dynamics CRM(任何版本)中的“发布”和“全部发布”等消息。如果是,您可以共享相同或代码片段的任何示例引用。请参阅此处,以获取有效的Dynamics CRM消息列表。Publish和PublishAll均已列出。从2011年起,它们在CRM的所有版本中都有效 只需像其他插件一样注册插件,但对消息使用Publish或PublishAll,并将实体保留为空Dynamics crm 用于发布和发布所有消息的CRM插件,dynamics-crm,crm,Dynamics Crm,Crm,我想知道我们是否可以编写插件来执行Dynamics CRM(任何版本)中的“发布”和“全部发布”等消息。如果是,您可以共享相同或代码片段的任何示例引用。请参阅此处,以获取有效的Dynamics CRM消息列表。Publish和PublishAll均已列出。从2011年起,它们在CRM的所有版本中都有效 只需像其他插件一样注册插件,但对消息使用Publish或PublishAll,并将实体保留为空 在Publish的情况下,通过查看文档,您似乎无法缩小要发布的实体的范围。您必须查看输入参数给您的
在Publish的情况下,通过查看文档,您似乎无法缩小要发布的实体的范围。您必须查看输入参数给您的信息,看看是否可以确定您正在处理的实体(如果需要)。这是一个用于发布和发布所有消息的插件,它将使用我为此目的创建的实体记录事件(您可以更改为执行任何您想要的操作) 发布事件时,插件使用ParameterXml参数()记录正在发布的组件。对于PublishAll消息,此参数不存在,因此没有详细信息(这是有意义的,因为您正在发布all) 这是CRM中的外观: 您可以从my下载插件项目和CRM解决方案。在发布消息中,您可以使用ParameterXml属性缩小发布组件的范围(它将位于插件的InputParameter集合中):
public class PublishPlugin : IPlugin
{
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);
if (context.MessageName != "Publish" && context.MessageName != "PublishAll")
return;
string parameterXml = string.Empty;
if (context.MessageName == "Publish")
{
if (context.InputParameters.Contains("ParameterXml"))
{
parameterXml = (string)context.InputParameters["ParameterXml"];
}
}
CreatePublishAuditRecord(service, context.MessageName, context.InitiatingUserId, parameterXml);
}
private void CreatePublishAuditRecord(IOrganizationService service, string messageName, Guid userId, string parameterXml)
{
Entity auditRecord = new Entity("fjo_publishaudit");
auditRecord["fjo_message"] = messageName;
auditRecord["fjo_publishbyid"] = new EntityReference("systemuser", userId);
auditRecord["fjo_publishon"] = DateTime.Now;
auditRecord["fjo_parameterxml"] = parameterXml;
service.Create(auditRecord);
}
}