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

Edi*_*son 5 workflow dynamics-crm-2011

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

我像这样开始WF:

public class WFIntegracao: CodeActivity
    {

        protected override void Execute(CodeActivityContext context)
        {

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


        }
    }
Run Code Online (Sandbox Code Playgroud)

Jam*_*ood 5

IWorkflowContext 应包含您需要的信息。

IWorkflowContext contexto = context.GetExtension<IWorkflowContext>();
String entityName = contexto.PrimaryEntityName;
Guid entityId = contexto.PrimaryEntityId;
Run Code Online (Sandbox Code Playgroud)

MSDN IWorkflowContext


Ale*_*lec 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();
}
Run Code Online (Sandbox Code Playgroud)

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

string entityType = ContactReference.LogicalName;
Run Code Online (Sandbox Code Playgroud)