【问题标题】:Custom workflow how to get the execution entity自定义工作流如何获取执行实体
【发布时间】:2012-07-28 03:47:41
【问题描述】:

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

我这样启动WF:

public class WFIntegracao: CodeActivity
    {

        protected override void Execute(CodeActivityContext context)
        {

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


        }
    }

【问题讨论】:

    标签: workflow dynamics-crm-2011


    【解决方案1】:

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

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

    MSDN IWorkflowContext

    【讨论】:

      【解决方案2】:

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

      [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;
      

      【讨论】:

      • 如果 InArgument 是 ,则需要 ReferenceTarget 属性
      猜你喜欢
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多