6

これは CRM 2011 用の私の最初のカスタム WF であり、これは任意のエンティティの汎用 EF である必要がありました。コンテキストから実行エンティティを取得する方法を知りたいのですが、それが不可能な場合は、どのようなアイデアでもよいでしょう。

次のように WF を開始します。

public class WFIntegracao: CodeActivity
    {

        protected override void Execute(CodeActivityContext context)
        {

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


        }
    }
4

2 に答える 2

5

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

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

MSDN IWorkflowContext

于 2012-08-02T08:34:29.420 に答える
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();
}

予想される入力タイプが連絡先エンティティ参照であると明示的に述べたことに注意してください。この制限を解除するために、ReferenceTarget 属性を除外できる場合があります。.Get() の結果の LogicalName メンバーを調べるだけで、後でタイプを判別できます。したがって、例では次のようになります。

string entityType = ContactReference.LogicalName;
于 2012-07-30T13:26:23.587 に答える