2012-07-30 27 views
5

这是我第一次定制的WF for CRM 2011,这需要成为任何实体的通用EF,我想知道如何从上下文获取执行实体,或者如果没有可能的话,任何想法都会很好。自定义工作流程如何获得执行实体

我开始WF这样的:

public class WFIntegracao: CodeActivity 
    { 

     protected override void Execute(CodeActivityContext context) 
     { 

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


     } 
    } 

回答

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属性以解除此限制。你可以通过简单地看获得()的结果LogicalName成员后来确定类型,因此在本例中它会是:

string entityType = ContactReference.LogicalName; 
+0

如果InArgument是<的EntityReference>时,需要ReferenceTarget属性 – Mac 2014-03-31 23:59:53

4

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

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

MSDN IWorkflowContext

相关问题