2012-07-30 14 views
5

Esta es mi primera WF personalizada para CRM 2011, y esta debe ser una EF genérica para cualquier entidad, me gustaría saber cómo obtener la entidad de ejecución del contexto o si no posible, cualquier idea sería muy agradable.Flujo de trabajo personalizado cómo obtener la entidad de ejecución

inicio el WF así:

public class WFIntegracao: CodeActivity 
    { 

     protected override void Execute(CodeActivityContext context) 
     { 

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


     } 
    } 

Respuesta

0

yo no he hecho un flujo de trabajo durante las entidades de un tipo no especificado antes, sin embargo es posible que pueda alterar el código para hacerlo; esto es para una referencia de contacto:

[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(); 
} 

Tenga en cuenta que tengo indica explícitamente que el tipo de entrada se esperaba con sea una referencia entidad de contacto. Es posible que pueda excluir el atributo ReferenceTarget para levantar esta restricción. Se podía determinar el tipo más adelante con sólo mirar el miembro logicalName del resultado de la .Busque(), por lo que en el ejemplo sería:

string entityType = ContactReference.LogicalName; 
+0

Si el InArgument es , se requiere el atributo ReferenceTarget – Mac

4

IWorkflowContext debe contener la información que necesita.

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

MSDN IWorkflowContext

Cuestiones relacionadas