【发布时间】:2018-08-29 08:53:46
【问题描述】:
环境是 Dynamics 365,当前版本。
我们有一个在赢得机会时触发的插件。一切都很好。但是还有另一种方法可以结束机会,那就是通过相关报价。
如果您在相关报价中并执行“创建订单”,您也有机会关闭机会。但在这种情况下,插件不会触发“win”消息。
我假设事件在链中太深而不会触发。 或者说这不是胜利事件,而是更新或某事。像这样。
有人遇到过这种情况吗?有意见吗?
Dot_NET Pro 问题更新:
有一些 if 条件可以从代码中解救出来。 第一个是:
public void Execute(IServiceProvider serviceProvider)
{
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationService organizationService = serviceFactory.CreateOrganizationService(null);
if (context.MessageName.ToLower() != "win")
{
return;
}
var currentOpportunity = RetrieveCurrentOpportunity(serviceFactory, context, organizationService);
if (currentOpportunity == null)
{
return;
}
// More code comes here.
第二个 if 进入具有此代码的方法:
private Entity RetrieveCurrentOpportunity(IOrganizationServiceFactory serviceFactory, IPluginExecutionContext context, IOrganizationService organizationService)
{
Guid opportunityId = Guid.Empty;
if (context.InputParameters.Contains("OpportunityClose") && context.InputParameters["OpportunityClose"] is Entity)
{ // ... more code here.
// else-case does nothing.
【问题讨论】:
-
你能分享你的插件代码吗?我相信插件已被触发,但由于某些情况,您的插件/逻辑未执行。
-
@Dot_NETPro:完成。谢谢你,兄弟。
标签: plugins dynamics-crm microsoft-dynamics