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

时间:2012-07-30 12:59:59

标签: workflow dynamics-crm-2011

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

我像这样开始WF:

public class WFIntegracao: CodeActivity
    {

        protected override void Execute(CodeActivityContext context)
        {

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


        }
    }

2 个答案:

答案 0 :(得分:4)

IWorkflowContext应包含您需要的信息。

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

MSDN IWorkflowContext

答案 1 :(得分:0)

我之前没有为未指定类型的实体创建工作流程,但是您可能可以更改此代码来执行此操作;这是一个联系人参考:

[RequiredArgument]
[Input("Contact")]
[ReferenceTarget("contact")]
public InArgument<EntityReference> Contact { get; set; }

protected override void Execute(CodeActivityContext context)
{
    ContactReference = Contact.Get(context);
    if (ContactReference == null)
        throw new InvalidPluginExecutionException("Contact reference is null.");

    DoSomething();
}

请注意,我已明确声明预期的输入类型是联系人实体引用。您可以排除ReferenceTarget属性以解除此限制。您可以稍后通过查看.Get()结果的LogicalName成员来确定类型,因此在示例中它将是:

string entityType = ContactReference.LogicalName;