Aprendiendo a ser un buen anfitrión para workflow
miércoles 24 de mayo de 2006 | categorías: .net, .net framework 3.0, workflow | 0 comentarios -- da clic aquí para dejar el tuyoSi le echaron un vistazo al mapa, se habrán dado cuenta de los 3 conceptos principales que hay que entender: host, actividades y workflow. En esta entrada, hablaré un poco sobre el primero: ¿qué se necesita para que mi aplicación pueda utilizar Windows Workflow Foundation? Muy sencillo: la aplicación debe tener la capacidad de ser el anfitrión (host) para el ambiente de ejecución de los workflows. Ahora, en la vida real, ser un buen anfitrión pudiera requerir de mucho dinero o amigos--después de todo, hay que tener chelas en la casa para cuando caen los compas, y tener listos los teléfonos de las amigas teiboleras en caso de una fiesta de emergencia, ya saben... digo... ejem... ¿En qué estaba? Ah si, hablando de una aplicación de .NET en realidad solo necesitas hacer 2 cosas:
- Crear el ambiente de ejecución de workflow (runtime engine)
- Instanciar y arrancar el workflow
// asumiendo que se tienen referencias a los // siguientes assemblies: // // System.Workflow.Activities, // System.Workflow.ComponentModel y // System.Workflow.Runtime using System.Workflow.Runtime; using System.Workflow.Runtime.Hosting; namespace WorkflowApplication { class MyProgram { static void Main(string[] args)
{ // crear el ambiente de ejecución de para // los workflows (runtime) WorkflowRuntime runtime = new WorkflowRuntime(); // TODO: // agregar servicios y/o suscribirse a // eventos del runtime antes de arrancar // la ejecución del workflow // instanciar e iniciar la ejecución del workflow. // en este caso, "MyWorflow" es el nombre // de la clase que representa mi workflow WorkflowInstance instance =
runtime.CreateWorkflow(typeof(MyWorkflow)); instance.Start();
// no olvidar destruir el runtime cuando // ya no se necesite! }
}
}
using System.Threading; using System.Workflow.Runtime; using System.Workflow.Runtime.Hosting; namespace WorkflowApplication { class Program { static void Main(string[] args)
{ // crear el runtime using (WorkflowRuntime runtime = new WorkflowRuntime())
{ AutoResetEvent waitHandle = new AutoResetEvent(false);
// estos son eventos del runtime a los cuales nos podemos // "suscribir". en este caso se utilizan para señalar // cuando el workflow terminó de ejecutarse runtime.WorkflowCompleted +=
delegate(object sender, WorkflowCompletedEventArgs e)
{ waitHandle.Set();
};
runtime.WorkflowTerminated +=
delegate(object sender, WorkflowTerminatedEventArgs e)
{ Console.WriteLine(e.Exception.Message);
waitHandle.Set();
};
// instanciar y arrancar el workflow WorkflowInstance instance =
runtime.CreateWorkflow(typeof(MyWorkflow)); instance.Start();
// el thread se queda esperando hasta que reciba una señal // debido a algún Set() waitHandle.WaitOne();
}
}
}
}

Por RSS o Atom

