Workflow 自定义工作流如何获取执行实体

Workflow 自定义工作流如何获取执行实体,workflow,dynamics-crm-2011,Workflow,Dynamics Crm 2011,这是我为CRM 2011定制的第一个WF,对于任何实体,这都需要一个通用的EF,我想知道如何从上下文中获取执行实体,如果不可能,任何想法都会非常好 我以如下方式启动WF: public class WFIntegracao: CodeActivity { protected override void Execute(CodeActivityContext context) { IWorkflowContext contexto

这是我为CRM 2011定制的第一个WF,对于任何实体,这都需要一个通用的EF,我想知道如何从上下文中获取执行实体,如果不可能,任何想法都会非常好

我以如下方式启动WF:

public class WFIntegracao: CodeActivity
    {

        protected override void Execute(CodeActivityContext context)
        {

            IWorkflowContext contexto = context.GetExtension<IWorkflowContext>();


        }
    }
公共类:CodeActivity
{
受保护的覆盖无效执行(CodeActivityContext上下文)
{
IWorkflowContext contexto=context.GetExtension();
}
}

我以前没有为未指定类型的实体创建过工作流,但是您可以通过修改此代码来执行此操作;这是联系参考:

[RequiredArgument]
[输入(“联系”)]
[参考目标(“联系”)]
公共InArgument联系人{get;set;}
受保护的覆盖无效执行(CodeActivityContext上下文)
{
ContactReference=Contact.Get(上下文);
if(ContactReference==null)
抛出新的InvalidPluginExecutionException(“联系人引用为null”);
DoSomething();
}
请注意,我已明确声明,预期的输入类型为contact实体引用。您可以排除ReferenceTarget属性以解除此限制。稍后,您可以通过查看.Get()结果的LogicalName成员来确定类型,因此在本例中为:

string entityType=ContactReference.LogicalName;

IWorkflowContext
应包含您需要的信息

IWorkflowContext contexto = context.GetExtension<IWorkflowContext>();
String entityName = contexto.PrimaryEntityName;
Guid entityId = contexto.PrimaryEntityId;
IWorkflowContext contexto=context.GetExtension();
字符串entityName=contexto.PrimaryEntityName;
Guid entityId=contexto.PrimaryEntityId;

如果InArgument为,则需要ReferenceTarget属性