使用context.InputParameters [“目标”]

时间:2013-06-25 03:30:26

标签: dynamics-crm-2011 dynamics-crm

我正在为Dynamics CRM 2011创建一个插件,以便在对潜在客户进行资格认证时执行。我用这个代码

IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(null);
Entity curEntity = (Entity)context.InputParameters["Target"];

但是当我得到context.InputParameters["Target"]时,它说没有找到密钥。如何在获得潜在客户资格时获得主导实体?

2 个答案:

答案 0 :(得分:5)

如果您的插件在QualifyLead消息(Lead作为主要实体)上执行,您可以通过以下方式获得对潜在客户的引用:

public void Execute(IServiceProvider serviceProvider)
{
    ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    if (context.InputParameters.Contains("LeadId") && context.InputParameters["LeadId"] is EntityReference)
    {
        EntityReference leadReference = (EntityReference)context.InputParameters["LeadId"];
        Guid leadId = leadReference.Id;
        // rest of your code

基本上此消息不包含Target参数,而是包含LeadId参数。

答案 1 :(得分:0)

我之所以需要实体的名称,正是因为我的自定义工作流程是在两个不同实体的工作流程中触发的。因此,在找到“ PrimaryEntityName”之前,必须确定目标。

context.PrimaryEntityName可用于某人正在寻找识别工作流触发于哪个目标实体的情况下