6

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

我这样启动WF:

public class WFIntegracao: CodeActivity
    {

        protected override void Execute(CodeActivityContext context)
        {

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


        }
    }
4

2 回答 2

5

IWorkflowContext应该包含您需要的信息。

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

MSDN IWorkflow上下文

于 2012-08-02T08:34:29.420 回答
1

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

[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;
于 2012-07-30T13:26:23.587 回答