Perfil de GabrielBiztalk Blandengue (http...FotosBlogListasMais Ferramentas Ajuda

Blog


3/8/2006

Cargado dinámico de assemblies de workflows en WF (WinFx)

Es trivial, pero nunca había probado a levantar un workflow desde un Assembly cargado por reflection.
Si se fijan, el inicio de una instancia de workflow comúnmente sigue un patrón como debajo:
 
private void IniciarWorkflow()
{
    WorkflowRuntime wr = new WorkflowRuntime();
    System.type tipo = typeof(WorkflowProject1.Workflow1);
    wr.StartWorkflow(tipo);
}
 
Viendo que es un tipo lo que levanta y acostumbrado a jugar con tipos y Reflection se me ocurrió que un host de WF podría cargar dinámicamente distintos Workflows solamente con saber las assemblies y el nombre de los tipos que estaban dentro. Separé el Workflow y probé a tenerlo fuera del proyecto que tenía la app que hacía de host y cambié el inicio por:
 
private void IniciarWorkflow()
{
    WorkflowRuntime wr = new WorkflowRuntime();
    System.Runtime.Assembly assm = Assembly.LoadFrom("WorkflowProject1.dll");
    System.Type tipo = assm.GetType("WorkflowProject1.Workflow1");
    wr.StartWorkflow(tipo);
}
 
y funciona sin problemas.
 
Diviértanse en el mundo dinámico de WF.