2010-03-21 9 views
37

He luchado durante tanto tiempo para encontrar un caso de uso convincente para el flujo de trabajo (es decir, WF) frente a la programación imperativa regular. Cada vez que vuelvo a la conclusión de que debería dejar WF o diferir entrar en él hasta más tarde. Pero sigo teniendo la sensación de que me falta algo.Un caso fuerte para WF

¿Alguien conoce algún libro que sea realmente sólido para el modo Workflow? El libro tiene que (i) enseñar bien a WF, y (ii) mostrar usando casos de uso apropiados que WF hizo una implementación fácil de hacer que si simplemente hiciéramos nuestra codificación regular regular.

Lo agradeceré.

+7

Capítulo 1 de Shukla y de Schmidt "Essential Workflow Foundation "motiva tanto los casos de uso como el diseño de WF desde cero en 31 páginas cortas. Es una de las mejores explicaciones de "ahora lo entiendo" de una tecnología que he visto desde "Essential COM", y no puedo recomendarlo lo suficiente. * Sin embargo *, el libro trata mucho sobre los fundamentos, por lo que * no * responde a sus requisitos para "enseñar WF" o ejecutar ejemplos de casos de estudio de casos. Todavía es muy valioso para entrar en la mentalidad, y como alguien que tenía el mismo "¿estoy recibiendo esto?" ¡Sintiéndolo definitivamente me ayudó! – itowlson

+1

Muy buena pregunta, siempre estoy luchando con mis colegas cuando trato de decidir si voy por el camino de WF o no. Un principio que siempre he aplicado con una buena tasa de éxito es que si no está seguro si necesita una WF o no, entonces es muy probable que no necesite la WF. –

Respuesta

21

Desde la perspectiva de un no experto, hay dos cosas que me hacen pensar en WF: una única para las plataformas de flujo de trabajo, la otra tal vez más conveniente.

La función de conveniencia es la capacidad de crear nuevas formas de componer actividades. La programación imperativa proporciona solo un repertorio limitado de primitivas de composición: básicamente, secuenciación, if-else y bucles. WF le permite crear sus propios operadores de composición, como ejecución intercalada, ejecución paralela, primero después de la publicación, etc. Y, por supuesto, tiene el sofisticado mecanismo de composición de máquinas de estado integradas.

Digo que esta es una función de conveniencia porque puede construir todos estos operadores en un lenguaje imperativo como C#: de hecho, eso es cómo construye los operadores WF. Pero WF hace que sea fácil usar y leer composiciones personalizadas, mientras que en C# se reduciría rápidamente en una lluvia de expresiones lambda. Entonces, si tiene requisitos complejos de orquestación, es decir, si la forma en que encajan sus actividades es más complicada que las secuencias, si-else y loops, entonces WF puede hacer que su programa sea más fácil de expresar y comprender.

La característica única es durabilidad. Aquí es de donde parte el libro de Shukla y Schmidt, y de dónde sigue volviendo. Un programa imperativo escrito en C# o VB puede ejecutarse durante horas, días, semanas si tiene suerte, tal vez incluso meses ... pero finalmente IIS va a realizar un ciclo del grupo de aplicaciones, o los administradores van a querer instalar las últimas actualizaciones de seguridad , o alguien va a tropezar con el cable de alimentación. ¿Cómo recuerda su programa, "está bien, tengo la orden de compra de Unimaginative Company Names R Us, y estoy esperando una aprobación de crédito de Bank of Breadheads Inc., y cuando lo reciba puedo enviar la confirmación correo electrónico"?

En un programa imperativo convencional, cuando el proceso muere, el estado de ejecución muere con él. Puede comenzar un nuevo proceso, pero comenzará al comienzo del programa. Claro, puede crear una base de datos y usarla para almacenar indicadores como "orden de compra obtenida" y "aprobación de crédito". Pero ahora debe escribir el código específico de la aplicación para guardar y consultar el estado, y volver al punto correcto del programa según ese estado. Y debe diseñar una nueva base de datos y una nueva lógica de guardar/restaurar/saltar para cada aplicación de larga ejecución.

El flujo de trabajo duradero trata de resolver este problema. Si escribe su programa como un flujo de trabajo de actividades, entonces WF se ocupará de persistir en su estado, incluyendo dónde está en su flujo de ejecución. La máquina que ejecuta el programa puede incendiarse y quemar su centro de datos, pero cuando entre la respuesta del banco, WF activará su programa en su otro centro de datos y comenzará a funcionar en el lugar correcto y con la derecha. datos.

Eso para mí es el "caso fuerte" para WF. En muchos casos, no lo necesita: las aplicaciones son lo suficientemente efímeras como para que la falla no sea una preocupación importante, y reiniciar desde cero es una estrategia de recuperación viable. Pero para aplicaciones de larga duración, como dónde puede estar orquestando sistemas externos que pueden tomar horas para responder, o procesos comerciales que involucran a humanos que pueden llevar días responder, la durabilidad puede ser la característica principal de WF.

Descargo de responsabilidad: No soy un programador de WF y nunca he construido un sistema WF del mundo real.Me refiero a esto desde un fondo de BizTalk, y por lo que he leído sobre WF, por lo que esta evaluación es un tanto teórica. Espero que ayude de todos modos!

+1

La otra cosa que atrae mucho a las personas a la Fundación Workflow, según mi experiencia hasta ahora, es la herramienta para ello. –

+0

Otro caso de uso para flujos de trabajo es cuando la aplicación/wf necesita cambiarse con frecuencia. Es más fácil trabajar en un nivel más abstracto (es decir, el lenguaje de flujo de trabajo gráfico) que piratear esto cada 48 horas en un lenguaje de programación imperativo. – mttr

5

No estoy seguro de si hay una buena respuesta a su pregunta. El problema no es que la pregunta no sea válida o algo así porque estás pidiendo dos cosas muy diferentes.

Antes que nada, solicite razones de peso para usar el flujo de trabajo. Esta es una pregunta muy subjetiva y no relacionada con la tecnología en absoluto. Puede encontrar documentos en la web que indiquen todo tipo de implementaciones de flujo de trabajo exitosas y sin éxito. Esto es independientemente de la tecnología, una solución que se hizo usando algún producto X podría haberse hecho con el producto Y. El capítulo de Shukla y Schmidt ciertamente explica los fundamentos, pero no estoy seguro de que sea un buen libro que te muestre dónde y cómo aplicar el flujo de trabajo.

En segundo lugar, está buscando un libro para enseñarle Windows Workflow Foundation. La primera pregunta es WF3 o WF4 ya que son bestias muy diferentes. Asumiré WF4 porque reemplazará WF3 cuando se lanza .NET 4 (muy pronto) y comenzar con WF3 no tiene mucho sentido en la mayoría de los casos. Pero como WF3 nunca fue muy populair y el mercado de libros no es muy rentable para la mayoría de los escritores, todavía no hay libros de WF4. Creo que Bruce Bukovics está trabajando en una nueva versión de su libro Pro WF: Windows Workflow in .NET 3.5 que encontré uno de los libros WF3 más útiles. Hasta el momento, no hay nada y estás atrapado con los documentos, extremadamente limitados, en el sitio msdn y el blog como el mío here. Y por supuesto, hay por supuesto por ahí como this de DevelopMentor (nota: enchufe descarado como yo soy el autor del curso de plomo)

hice proporcionar un número de razones en esta respuesta here, estos podrían ayudar a que algunos.

No es exactamente la respuesta a su pregunta, pero espero que todo esto siga siendo útil para usted.

+0

pregunta está recibiendo suficientes votos ascendentes que merece ser una pregunta válida en Stack. – djangofan

+0

Ciertamente es, no hay argumentos allí. Solo puedo esperar que alguien venga con una mejor respuesta que la mía. – Maurice

0

No conozco un libro específicamente sobre este tema. Sin embargo, creo que parte del atractivo de WF (u otros productos de flujo de trabajo) es que reintroduce la posibilidad del paradigma de acoplamiento libre, basado en mensajes, en el que los chicos originales de OO (como Alan Kay) estaban interesados.

El concepto de "mensaje" que se pasa no es inmediatamente obvio en WF. Sin embargo, la noción de objetos que actúan como máquinas discretas es.

Para un libro impresionante (pero algo loco) sobre el estado de OO, vea Object Thinking by David West. Y vea here para la discusión de Alan Kay sobre lo que OO significa para él.

1

Esto tampoco es una respuesta directa, pero podría ser útil si busca otros recursos. Para mí, parece que WF está modelado de forma muy parecida a los conceptos introducidos en Business Process Execution Language (BPEL). Esta norma ha existido por mucho más tiempo que WF, y cualquier uso de BPEL debería darle una idea de para qué usar WF.

No he usado WF, pero cuando jugueteaba con BPEL un poco, y me resultaba difícil de usar.Esto se debió principalmente al soporte de la herramienta (encontré que faltaba el complemento de eclipse para el modelado visual). Cuando combina esto con el hecho de que es difícil leer el código en XML en comparación con la "sintaxis del lenguaje de programación normal", entonces BPEL no era una solución viable. Si WF tiene una buena herramienta visual, entonces este problema al menos ha sido resuelto.

+1

Me gusta la explicación de "Programación en grande y programación en pequeña". Piense en las actividades de WF como los módulos usados ​​para dividir todo el flujo de trabajo en partes separadas. – Maurice

+0

Es cierto que se parece mucho a BPEL. WF4.0 tiene algunas herramientas visuales decentes en VS10, creo. (¡Estoy muy predispuesto! :-)) –

1

Las buenas razones son: Supervisión visual de sus procesos de negocio. Incluso puede hacer que su cliente, el experto en dominio, edite el flujo de trabajo con el diseñador; reinicie la aplicación y han funcionando sin recompilar

buen libro: Bruce Bukowics Y mi Allways favorita: PRO C# 2010 y .NET Framework 4 tiene un capítulo excelente