2012-07-30 52 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

相關問題