2012-07-30 7 views
5

これはCRM 2011のための私の最初のカスタムWFです。これはエンティティの汎用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属性を除外できます。あなたは、単にに.get()の結果のLogicalNameメンバーを見て、後でタイプを決定することができるので、一例では、それはなるだろう:

string entityType = ContactReference.LogicalName; 
+0

InArgumentは、<実体参照>であれば、ReferenceTarget属性が必要です – Mac

4

IWorkflowContextが必要な情報が含まれている必要があります。

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

MSDN IWorkflowContext

関連する問題