Alternativas a Windows Workflow Foundation?


13

He estado usando WWF durante un tiempo como parte de una aplicación interna de call center (ASP.NET), y aunque aprendí que era una buena práctica para entender cómo funciona un sistema de flujo de trabajo basado en la máquina de estado , definitivamente soy no enamorado de WWF. En mi opinión es:

  1. excesivamente compleja, especialmente para su uso dentro de las aplicaciones web (todo lo que enhebra cosas en tiempo de ejecución)
  2. Inmaduros (Alguna vez ha trabajado con ese diseñador tan horrible?)
  3. anémico en su conjunto de características actual

¿Alguien tiene alguna sugerencia para un mejor marco de trabajo basado en .NET? En concreto, estoy buscando para las siguientes funciones: a base de máquina (estados de mapeo a acciones disponibles)

  1. Estado
  2. Un enfoque en los permisos de usuario (controlando quién tiene acceso a qué acciones)
  3. La capacidad de ejecutar flujos de trabajo como tareas de fondo temporizadas (por ejemplo, para enviar recordatorios de artículos que han estado en un estado determinado durante x días)

Eso es todo lo que necesito. No necesito poder "arrastrar y soltar" ninguna actividad ni diseñar visualmente el flujo. Me siento perfectamente cómodo escribiendo código real una vez que se desencadena una acción en particular.

13

Puede probar Simple State Machine. Tendría que implementar control de acceso y temporizadores de fondo usted mismo, pero eso no debería ser un gran problema. SSM también se construyó por frustración con WF. There are some other state machine implementations on Codeplex también. Si uno de ellos no se ajusta a la factura de la caja, son de código abierto y deben acercarse lo suficiente.

Estoy completamente de acuerdo con usted acerca de las máquinas de estado en WF - no son verificables, son demasiado complicadas, el modelo de subprocesamiento es peculiar y difícil de seguir, y no estoy seguro de que un diseñador visual pueda haber sido peor concebido para diseñar máquinas de estado gráficamente. Creo que esto puede deberse a que el concepto de máquina de estado se siente adherido al tiempo de ejecución de WF, que fue diseñado para máquinas de estado secuenciales, algo con lo que WF hace un mejor trabajo, en mi opinión. El problema es que las máquinas de estado no son realmente el mismo animal que un flujo de trabajo secuencial, y deberían haber tenido una implementación propia de primera clase, porque la deformación de WF para hacer que pareciera apoyarlas resultó ser más o menos insoportable, si no realmente inutilizable.

+2

Simple State Machine es inteligente. Si su modelo se ajusta pero prefiere trabajar en C# que en Boo, también podría considerar Stateless (http://stateless.googlecode.com) 16 ago. 092009-08-16 02:34:52

  0

Lo siento, soy nuevo aquí (y para .NET), así que llego tarde al juego. :) Acepto que la implementación de la máquina de estado en WF es bastante complicada. Yo mismo estoy usando flujos de trabajo secuenciales porque coinciden con mis requisitos, pero el manejo de errores es realmente complicado (para mí) cuando todo lo involucrado aún incluye los requisitos de actualización de la GUI. Gracias por recomendar Simple State Machine. Me gusta lo fácil que es implementar flujos de trabajo secuenciales en WF, pero imagino que todavía es bastante fácil en SSM, y que el manejo de errores será mucho más fácil de implementar también. 05 dic. 092009-12-05 16:14:32


0

¿Tiene la opción de considerar BizTalk Server?


1

Drools.NET Try


4

Me quedaría lejos de Drools.Net ya que se cometen última SVN fue en septiembre de 2007. Se ve bien, pero parece un poco demasiado arriesgado hacer una parte tan grande de la biblioteca de su proyecto cuando usted sabe que ya no recibe ninguna atención.


0

Disfruté bastante trabajando con Oracle BPEL Process Manager. Es parte de JDeveloper.

http://www.oracle.com/technology/bpel/index.html http://gemsres.com/story/dec06/313602/jellema-fig1.jpg


0

Es posible que desee echar un vistazo a Jazz - http://jazz.codeplex.com/


0

Try WF4.5. Fue completamente rediseñado desde .NET4.0.


1

Eche un vistazo a Workflow Engine. Es un marco de flujo de trabajo liviano para soluciones .NET y Java. Tiene un diseñador visual HTML5, control de versiones, una interfaz de usuario decente y admite una amplia gama de bases de datos.


0

Antes que nada, debe buscar un motor compatible con BPMN. BPMN es un estándar en Workflow y gestión de procesos y está bien soportado por muchos proyectos. En segundo lugar, debe pensar en los requisitos para un motor así. Cuando se mira para un motor de BPMN, hay dos enfoques diferentes:

en base a tareas

Estos motores (por ejemplo JBoss BPM - jbpm) están diseñados para procesar un conjunto de datos de entrada por un modelo de proceso bien definido. Cada tarea en el modelo le da el control a una pieza de código, ya sea una implementación estándar o individual. El proceso finaliza cuando el token de proceso alcanza el final del modelo de proceso (Evento final). Este tipo de procesamiento lleva milisegundos. El motor se puede usar para trabajos por lotes o procesar datos con un flujo orientado al proceso complejo.

motores de flujo de trabajo humano-Centric dirigido por eventos son por eventos (por ejemplo Imixs-Workflow). Este es un tipo de máquina de estado pero ofrece típicamente mucha más funcionalidad. Puede iniciar una nueva instancia de proceso asignando su objeto comercial con la tarea inicial (definida por el evento de inicio). El motor de flujo de trabajo le permite activar eventos asignados a cada tarea, definidos en su modelo. Cada evento (Intermedio CatchEvent) activa el motor de flujo de trabajo para transferir la instancia de proceso en ejecución a la siguiente tarea (estado). Hasta que no se desencadene ningún evento nuevo, la instancia de proceso 'espera' en la tarea actual (estado). Un proceso de aprobación es un ejemplo típico para este tipo de flujo de trabajo centrado en el ser humano.

Puede encontrar una lista de motores here.