sintaxis que programar programacion lenguaje herramientas empezar desarrollo como java workflow jbpm activiti

programar - que es java



Motor de flujo de trabajo ligero para Java (9)

Esto realmente depende de sus necesidades. Primero, vea si realmente necesita un motor de flujo de trabajo ( this u otras fuentes). A menos que realmente lo necesites, probablemente deberías evitarlo.

Si realmente necesita lo que proporciona un motor de flujo de trabajo, elegiría uno que ya está construido. Las personas que trabajan con jbpm o activiti tienen mucha más experiencia que usted en la creación de motores de flujo de trabajo, por lo que probablemente ya esté optimizado para mejorar el rendimiento.

¿Es mejor escribir un nuevo motor de flujo de trabajo con un motor BPM existente: jBPM 5, Activiti 5?

Mi aplicación es una aplicación basada en web y el rendimiento es importante. Mi duda es si el uso de jBPM / Activiti será una sobrecarga de rendimiento en comparación con la escritura de un motor de flujo de trabajo simple.

Si voy con la auto implementación, perderé la visualización del flujo de trabajo. Para el rendimiento se puede negociar.


Estoy de acuerdo con los chicos que ya publicaron las respuestas aquí, o con una parte de sus respuestas de todos modos: P, pero como en la empresa en la que trabajo actualmente tuvimos un desafío similar, me tomé la libertad de agregar mi opinión, basada en nuestra experiencia.

Necesitábamos migrar una aplicación que estaba usando el motor de flujo de trabajo jBPM en una aplicación relacionada con la producción y, como había muchos desafíos para mantener la aplicación, decidimos ver si hay mejores opciones en el mercado. Llegamos a la lista ya mencionada:

  • Activity (planeado probarlo a través de un prototipo)
  • Bonita (planeado probarlo a través de un prototipo)
  • jBPM (descalificado por experiencia pasada)

Decidimos no utilizar más jBPM ya que nuestra experiencia inicial con él no era la mejor, además de esto, la compatibilidad hacia atrás se rompió con cada nueva versión que se lanzó.

Finalmente, la solución que utilizamos fue desarrollar un motor de flujo de trabajo ligero, basado en anotaciones que tuvieran actividades y procesos como abstracciones. Fue más o menos una máquina de estado que hizo su trabajo.

Otro punto que vale la pena mencionar cuando se discute sobre el motor de flujo de trabajo es el hecho de que dependen de la base de datos de respaldo (fue el caso de los dos motores de flujo de trabajo con los que tengo experiencia ( SAG webMethods y jBPM )) y, según mi experiencia, fue un poco poco de una sobrecarga especialmente durante las migraciones entre versiones.

Por lo tanto, diría que el uso de un motor de flujo de trabajo solo está habilitado para las aplicaciones que realmente se beneficiarían y donde la mayor parte del flujo de trabajo de las aplicaciones gira en torno al propio flujo de trabajo, de lo contrario, existen mejores herramientas para el trabajo:

Con respecto a las máquinas de estados, encontré this respuesta que contiene una colección bastante completa de marcos de Java de máquinas de estados.

Espero que esto ayude.


La pregunta es qué desea lograr realmente cuando solicita un motor de flujo de trabajo.

El objetivo general que le gustaría lograr mediante el uso de un motor de flujo de trabajo, es ser más flexible para cambiar la lógica de su negocio durante el tiempo de ejecución. La parte del modelaje es seguramente una de las más importantes aquí. BPMN 2.0 es un estándar de facto en esta área y todos los motores analizados son compatibles con este estándar.

El segundo objetivo es controlar el proceso de negocios para describir las preguntas "qué debe pasar cuando ..." . Y esta parte tiene mucho que ver con los requisitos comerciales que enfrenta en su proyecto.

Algunos de los motores de flujo de trabajo ( Activity , JBPM ) pueden ayudarlo a responder a este requisito "codificando" sus procesos. Esto significa que usted modela el paradigma ''qué debería suceder cuando ...'' de una manera, donde usted decide qué parte de su código (por ejemplo, una tarea o un evento) debe ser ejecutado por el motor de flujo de trabajo en diversas situaciones. Se discute mucho sobre este concepto. Y los desarrolladores naturalmente preguntan si esto puede ser implementado por ellos mismos. (De hecho, no es tan fácil como parece a primera vista)

Algunos otros motores de flujo de trabajo ( Imixs-Workflow , Bonita ) pueden ayudarlo a responder el requisito de "qué debería pasar cuando ..." de una manera más centrada en el usuario. Esta es el área de gestión de procesos de negocios centrada en el ser humano, que respalda las habilidades y actividades humanas mediante un motor de flujo de trabajo orientado a la tarea. La atención se centra más en la distribución de tareas y procesos dentro de una organización. El motor de flujo de trabajo lo ayuda a distribuir una tarea a un determinado usuario o grupo de usuarios y a asegurar, registrar y monitorear un proceso de negocios de larga ejecución. Tal vez estas son las cosas que realmente no quieres implementar por ti mismo.

Por lo tanto, mi consejo es que no mezcle las cosas que deben considerarse por separado, porque el flujo de trabajo cubre un área muy amplia.


Los motores de flujo de trabajo basados ​​en Java como Activiti, Bonita o jBPM admiten una amplia gama de la especificación BPMN 2.0. Por lo tanto, puedes modelar procesos de una manera gráfica. Además, algunos de esos motores tienen capacidades de simulación como Activiti (con Activiti Crystalball). Si codifica los procesos por su cuenta, no es tan flexible cuando necesita cambiar el proceso. Por lo tanto, también aconsejaría utilizar un motor BPM basado en java.

Hice una investigación sobre los motores de código abierto basados ​​en BPMN 2.0. Aquí están los puntos clave que fueron relevantes para nuestro caso de uso concreto:

1. Bonita:

Bonita tiene un enfoque de codificación cero, lo que significa que proporcionan un IDE fácil de usar para construir sus procesos sin la necesidad de codificación. Para lograrlo, Bonita tiene el concepto de conectores. Por ejemplo, si desea consumir un servicio web, le proporcionan una imagen gráfica. El inconveniente es que tiene que escribir el sobre de SOAP XML sin formato manualmente y copiarlo en un cuadro de texto gráfico. El problema con este enfoque es que solo puede darse cuenta de los casos de uso que pretende Bonita. Si desea integrar un sistema para el cual Bonita no desarrolló un conector, debe codificar dicho conector por su cuenta, lo cual es muy doloroso. Por ejemplo, Bonita ofrece un conector SOAP para consumir servicios web SOAP. Este conector solo funciona con SOAP 1.2, pero no para SOAP 1.1 ( http://community.bonitasoft.com/answers/consume-soap-11-webservices-bonita-secure-web-service-connector ). Si tiene una aplicación heredada con SOAP 1.1, no puede integrar este sistema fácilmente en su proceso. Lo mismo es cierto para las bases de datos. Solo hay unos pocos conectores de base de datos para versiones de bases de datos dedicadas. Si tiene una versión que no coincide con un conector, debe codificar esto por su cuenta.

Además, Bonita no tiene soporte para LDAP o Active Directory Sync en la edición gratuita de la comunidad, lo que es un showstopper para un entorno de producción. Otra cosa a considerar es que Bonita tiene licencia bajo la licencia GPL / LGPL, lo que podría causar problemas cuando se quiere integrar Bonita en otra aplicación empresarial. Además, el apoyo de la comunidad es muy débil. Hay varias publicaciones que tienen más de 2 años y esas publicaciones aún no han sido respondidas.

Otra cosa importante es Business-IT-Alignment. Los procesos de modelado son una disciplina de colaboración en la que están involucrados los analistas de TI y de negocios. Es por eso que necesita herramientas adecuadas para ambos grupos de usuarios (por ejemplo, un complemento de Eclipse para los desarrolladores y un modelador web fácil de usar para la gente de negocios). Bonita solo ofrece Bonita Studio, que debe instalarse en su máquina. Este IDE es bastante técnico y no es adecuado para usuarios de negocios. Por lo tanto, es muy difícil realizar la alineación de Business-IT con Bonita.

Bonita es una herramienta BPM para procesos muy triviales y fáciles. Debido al enfoque de codificación cero, la curva de alineación es muy baja y puede comenzar a modelar muy rápido. Necesita menos habilidades de programación y puede realizar sus procesos sin necesidad de codificación. Pero tan pronto como sus procesos se vuelven muy complejos, Bonita podría no ser la mejor solución debido a la falta de flexibilidad. Solo se pueden realizar los casos de uso que pretende Bonita.

2. jBPM:

jBPM es un motor BPM de código abierto muy poderoso que tiene muchas características. El modelador web incluso admite modelos prefabricados de algunos patrones de flujo de trabajo de van der Aalst (workflowpatterns.com). Business-IT-Alignment es realizable porque jBPM ofrece una integración de Eclipse así como un modelador basado en web. Un poco complicado es que solo se pueden definir formularios en el modelador web, pero no en el complemento Eclipse, que yo sepa. En resumen, jBPM es un buen candidato para usar en una empresa. Nuestro showstopper fue la escalabilidad. jBPM se basa en las reglas-Drools del motor. Esto lleva al hecho de que las instancias de todo el proceso se conservan como BLOBS en la base de datos. Este es un showstopper crítico cuando se considera la búsqueda y la escalabilidad.

Además, la curva de aprendizaje es muy alta debido a la complejidad. jBPM no ofrece una Tarea de servicio como BPMN-Standard sugiere. Por el contrario, debe definir sus propias tareas de Servicio Java y registrarlas manualmente en el motor, lo que da como resultado una programación de nivel bastante bajo.

3. Activiti:

Al final, optamos por Activiti porque es un motor basado en marcos muy fácil de usar. Ofrece un complemento Eclipse así como un moderno modelador web AngularJS. De esta forma, podrás realizar Business-IT-Alignment. El REST-API está protegido por Spring Security, lo que significa que puede extender el Motor muy fácilmente con las funciones de inicio de sesión único. Debido a la licencia Apache 2.0, no existe ningún copyleft, lo que significa que eres completamente libre en términos de uso y extensibilidad, lo cual es muy importante en un entorno productivo.

Además, la cobertura BPMN es muy buena. No todos los elementos BPMN se han realizado, pero no conozco ningún motor que haga eso.

El Explorador de Activiti es una interfaz de demostración que demuestra el uso de las API de Activiti. Dado que esta interfaz se basa en VAADIN, se puede extender muy fácilmente. La comunidad es muy activa, lo que significa que puede obtener ayuda muy rápido si tiene algún problema.

Activiti ofrece buenos puntos de integración para tecnologías de formas externas, lo cual es muy importante para un uso productivo. Las tecnologías de formas de todos los candidatos son muy restrictivas. Por lo tanto, tiene sentido utilizar una tecnología de formulario estándar como XForms en combinación con el Motor. Incluso cosas más complejas se pueden realizar a través de formKey-Attribute.

Activiti no sigue el enfoque de codificación cero, lo que significa que necesitará un poco de codificación si desea organizar los servicios. Pero incluso la comunicación con los servicios SOAP se puede lograr utilizando una Tarea de Servicio Java y Apache CXF. El esfuerzo de codificación es bajo.

Espero que mis puntos clave puedan ayudar al tomar una decisión. Para ser claros, esto no es un anuncio de Activiti. La elección correcta del producto depende de los casos de uso concretos. Solo quiero señalar los puntos más importantes de nuestro proyecto.


Me gustaría añadir mis comentarios. Cuando elige un motor listo, como jBPM, Activity y otros (hay muchos de ellos), entonces tiene que dedicar algo de tiempo a aprender el sistema en sí, esto puede no ser una tarea fácil. Especialmente, cuando solo necesitas automatizar pequeños trozos de código.

Luego, cuando se produce un problema, tiene que lidiar con el soporte del proveedor, que no es tan rápido como podría imaginar. Incluso pagar por alguna consultoría.

Y, por último, una de las razones más importantes, debe desarrollarse en el ecosistema del motor. Aunque, los proveedores tienden a decir que su sistema es flexible para ser incorporado en cualquier sistema, esto puede no ser el caso. Finalmente, terminas reescribiendo tu aplicación para que coincida con el ecosistema BPM.


Puede buscar @ Apache Ant para construir un motor de flujo de trabajo. Es mucho más robusto y es una máquina de estado puro con la mayoría de los requisitos necesarios ya incorporados.

Aparte de eso, también puede incrustar diferentes códigos dinámicos / scripts en el lenguaje Java / Groovy / JS y por lo tanto eso lo hace muy poderoso. También permite tareas de extensión.

Hay una buena cantidad de herramientas a su alrededor o se puede construir sobre ellas si se necesita un IDE.



Sí, en mi perspectiva, no hay ninguna razón por la que debas escribir la tuya. La mayoría de los marcos de BPM / flujo de trabajo de código abierto son extremadamente flexibles, solo necesita aprender lo básico. Si elige jBPM, obtendrá mucho más que un simple motor de flujo de trabajo, por lo que depende de lo que intente construir.

Aclamaciones


Te recomiendo que uses una solución lista para usar. Dado que el desarrollo de un motor de flujo de trabajo requiere una gran cantidad de recursos y tiempo, un motor ya hecho es una mejor opción. Echa un vistazo a Workflow Engine . Es un componente ligero que le permite agregar flujos de trabajo ejecutables personalizados de cualquier complejidad a cualquier solución de Java.