Soy nuevo en el desarrollo de Workflow, y no creo que realmente esté entendiendo el "panorama general". O quizás para decirlo de otra manera, estas herramientas actualmente no "hacen clic" en mi cabeza.
Parece que a las compañías les gusta crear dibujos de negocios para describir procesos, y en algún momento alguien decidió que podrían usar una máquina de estado como un programa para controlar realmente los procesos desde una línea y cuadros como un diagrama. Diez años después, estas herramientas son enormes, extremadamente complicadas (mi compañía actualmente está jugando con WebSphere, y he asistido a algunas de las capacitaciones, es un monstruo, incluso las llamadas versiones "minimalistas" de estas herramientas de flujo de trabajo como Activiti son enorme y complicado, aunque no tan complicado como la bestia que es WebSphere afaict).
¿Cuál es el gran beneficio de hacerlo de esta manera? Puedo entender que los diagramas simples de líneas y cuadros son útiles, pero estas cosas, por lo que puedo decir, son lenguajes de programación visual en este punto, completos con condicionales y bucles. Los programadores aquí parecen estar haciendo una gran cantidad de trabajo en la capa de líneas y cuadros, lo que para mí parece un lenguaje de programación visual realmente horrible y básico.
Si vas a llegar tan lejos, ¿por qué no usar algún tipo de lenguaje de script? ¿La gente ha tirado al bebé con el agua del baño en esto? ¿Se han llevado las líneas y los cuadros a un nivel absurdo, o simplemente no entiendo el valor de todo esto?
Realmente me gustaría ver argumentos en defensa de esto por parte de personas que han trabajado con esta tecnología y entender por qué es útil. No veo el valor en él, pero reconozco que también soy nuevo en esto y es posible que todavía no lo entienda.
Respuestas:
Desde el punto de vista de un desarrollador, tiene razón al decir que estos entornos "visuales" son realmente difíciles de trabajar. Los flujos de trabajo de SharePoint 2010, que utilizo, arrojan todas las mejores prácticas para crear un buen software empresarial: sin pruebas automatizadas, sin reutilización de código, software ilegible ... Cualquier cosa más compleja que una plantilla lista para usar puede ser dolorosa de mantener , como lo estás experimentando.
Pero desde el punto de vista empresarial, los flujos de trabajo tienen enormes beneficios, al menos en teoría. Para citar de este documento técnico , la eficiencia, la responsabilidad, el control y la facilidad de uso de un flujo de trabajo automatizado proporcionan enormes ganancias de productividad. Imagine cuánto más ineficiente sería un simple proceso de aprobación o incorporación sin esta automatización. Además, el acto mismo de definir un flujo de trabajo es valioso para una organización que está tratando de controlar sus procesos comerciales.
El estado actual del software de flujo de trabajo no es culpa de la empresa. Solo quieren facilitarles la vida, y los flujos de trabajo son excelentes para eso. Principalmente nos culparía a nosotros, el departamento de TI:
fuente
Solo hay un beneficio real, pero es enorme: la separación de preocupaciones .
Entonces, en lugar de que la lógica de orquestación del proceso se incruste en nuestro sistema, se convierte en una configuración externa. Un mapa, básicamente. Puede cambiarlo (mucho más) de forma independiente, puede tener múltiples procesos, múltiples versiones de procesos, múltiples versiones de múltiples procesos ejecutándose al mismo tiempo, y eso es todo listo para usar en cualquier solución decente.
Históricamente, el concepto de SoC ha ganado muchas veces, comenzando por el principio de Unix "haz una cosa, pero hazlo bien", y se aplica una y otra vez, como tener componentes de servidor dedicados como ESB, diferentes sistemas de persistencia, almacenamiento en caché, equilibrio de carga , monitoreo, como dividir CSS de HTML, etc.
Su proceso de negocio y sus reglas de flujo a menudo son ortogonales a sus datos, "pantallas" de IU o "jerarquía" de usuarios. Por lo tanto, tiene mucho sentido desarrollarlo y cambiarlo por separado de los otros aspectos del sistema. Esa fue la premisa en la que BPM apareció a principios de la década de 1990.
Desde entonces, muchas de las herramientas y lenguajes se crearon para admitir este concepto, y el más conocido es BPMN , un lenguaje gráfico para crear "diagramas de flujo" que se asignan directamente a los procesos. Si bien la gente se queja de que es grande y difícil de manejar (que tiene más de 100 símbolos en el vocabulario), y aboga por enfoques modernos como S-BPM (tiene solo 5 símbolos básicos), la práctica actual de la industria es apegarse a BPMN o sus derivados, subconjuntos o hermanos.
No pareces satisfecho con BPMN:
Pero no es tan malo) Hay una teoría detrás de esto. Y la versión 2.0 tomó una buena idea de las deficiencias 1.0.
Los paradigmas imperativos y los lenguajes de script no siempre son la mejor respuesta. Como probablemente haya visto en lenguajes declarativos (como HTML, CSS, SQL, Drools o internos de Nginx, Graddle y Maven, Puppet, etc.), el código resultante puede ser mucho más pequeño y limpio que una versión escrita en " lenguaje decente " . como Java o C ++ ".
En cuanto a su otro punto:
¿Has mirado en los eventos y disparadores ? BPMN es un idioma y debe aprenderlo antes de usarlo, o al menos familiarizarse con él.
Bajo el capó, BPMN es XML, por lo que puede editarlo a mano o generarlo. Y puede controlarlos por versión, porque XML está basado en texto. Sin embargo, el simple hecho de tener un XML que pueda traducirse en diagramas de flujo no parece que vaya a ayudarlo, y eso es correcto: escribir su propio analizador o editor es una tarea difícil y costosa con beneficios cuestionables.
Afortunadamente, ya existen herramientas en el mercado que hacen exactamente eso.
Activiti es gratis y bastante popular entre los desarrolladores y propietarios de negocios, debido a su precio inicial ( cero ), disponibilidad de información y humildad. El último punto es realmente único, ya que Activi solo se enfoca en administrar sus procesos comerciales, sin tratar de vincularlo con soluciones de paquete completo. Además, está abierto, por lo que solo necesita conocer Java y REST para ponerlo en funcionamiento. El inconveniente es que el lado del cliente, la integración y la lógica de aplicaciones / negocios y toda la arquitectura se dejan al desarrollador, por lo que si su equipo de desarrollo es débil, prepárese para el fracaso. El costo total de propiedad puede ser sorprendentemente alto para una herramienta gratuita ;)
En el otro lado del espectro está Pega (Pega PRPC), el rey reinante de los sistemas BPM (según Gartner y Forester), que se ve sorprendentemente bien para su edad. Este gigante de fregadero y cocina es incluso capaz de CRM, OCR y (si no me equivoco) capacidades de reconocimiento de voz, análisis predictivo, gestión de reglas comerciales y editor de interfaz de usuario WYSIWYG. Sin embargo, viene con una etiqueta de precio seria. No solo cuesta una fortuna, sino que todo el desarrollo se realiza dentro de una aplicación web, lo que significa que debe usar el navegador, que es IE8 (más algunos complementos, más hacks feos, como usar Excel para editar tablas de datos). Además, la edición de Java, Javascript o HTML / CSS también se está haciendo dentro del navegador web, así que despídase de las pruebas unitarias, el resaltado del código IDE, la refactorización y todos sus juguetes de programación que le han encantado.
Buen lado de eso? puede implementar un sistema complejo DENTRO DE SEMANAS [ PDF , consulte la página 22]. Y sí, el resultado no está garantizado.
IBM haber algo recientemente (accoring al ritmo de tiempo de la empresa) han comprado Lombardi, y ahora está ofreciendo una solución muy competitiva (pero entonces usted tendrá que comprar todo lo IBM , you'know). Appian es un proveedor joven que tiene ideas interesantes y comentarios positivos, pero la forma en que están escritos (dos lenguajes DSL adicionales además del visual) simplemente no me atrae.
Hay otros jugadores y sus soluciones. La mayoría de ellos son simplemente horribles. Me gusta: tus ojos, cerebro y corazón sangrarían literalmente cuando simplemente los miras. Por lo tanto, confíe en sus agallas y no haga que sus desarrolladores y usuarios lo odien.
Nota de cierre:
El sistema BPM es el mismo para los procesos, lo que Photoshop es para las imágenes. No tengas miedo de que sea visual. No haga que haga el trabajo que no le conviene (¿recuerda los sitios web creados completamente en Photoshop, que eran casi imposibles de editar?). Mantenlo simple y no hagas errores;)
fuente
Hace años, antes de que naciera la mayoría de nosotros, los desarrolladores de software tuvieron que escribir su propio código para almacenar datos. Si necesitaba guardar el estado del programa, bueno, eso se veía como parte de la función del código, por lo que muchos desarrolladores de software terminaron escribiendo código para organizar los datos y guardarlos, leerlos, etc.
Y entonces alguien se dio cuenta de que esto era algo que sucedió mucho: que la lógica para guardar, organizar, leer y buscar datos era en realidad un componente que se usaba tan comúnmente que debería ser su propio componente. Y tenemos bases de datos.
En los últimos 10 a 15 años, los departamentos de TI se han dado cuenta de que la lógica para coreografiar y / u organizar procesos de negocio es tan común que también debería ser su propio componente, lo que ha llevado a todo tipo de herramientas de flujo de trabajo diferentes.
Hay 3 beneficios principales de una herramienta de flujo de trabajo:
Sin embargo, uno de los problemas más comunes con los que me encuentro con el flujo de trabajo y el uso de la herramienta BPM es que los desarrolladores aún intentan "enterrar" la lógica empresarial en un código no transparente.
Lo que veo, todo el tiempo , es que los desarrolladores todavía intentan agregar la lógica de negocios de la manera más técnica posible, en lugar de la forma más transparente posible. Esto es natural, porque los desarrolladores son, por su propia naturaleza, mucho más cómodos con el código que con una herramienta de flujo de trabajo. Además, mientras más lógica mantenga de manera técnica, más se le necesitará como desarrollador. Desafortunadamente, esto es lo peor que un desarrollador puede hacer a un sistema BPM porque está socavando los principales beneficios del uso de BPM.
Por último, la mayoría de las herramientas BPM no son lo suficientemente lejos como para que los analistas de negocios puedan desarrollar los flujos de trabajo ellos mismos: sin embargo, ese es el objetivo. Idealmente, los analistas de negocios desarrollarían los diagramas de flujo de trabajo / proceso de negocio y los desarrolladores solo trabajarían en los componentes técnicos que son llamados por el motor de flujo de trabajo.
fuente
Las declaraciones a continuación son mi experiencia personal al usar herramientas de flujo de trabajo, específicamente Oracle BPM Suite (10.3G y 11G). Primero en especificar, su pregunta se centra en las herramientas de flujo de trabajo que permiten modelar modelos de procesos ejecutables, estas herramientas son parte de Business Process Management Systems (BPMS). Este modelado de proceso específico definitivamente se está desarrollando y puede referirse a él como un lenguaje de programación visual.
El principal beneficio es la agilidad de comprender y cambiar la lógica del proceso.
Con los modelos de procesos de negocio, cubre una explicación visual de la lógica del proceso y, al mismo tiempo, un componente integrable ejecutable. Esto permite la entrada y salida de programadores más rápido, ya que debe documentarse menos documentación sobre las transiciones, condicionales (Gateways o Business Rules) y el flujo de procesos en general, ya que es parte del desarrollo.
Además, ha adjuntado capacidades de informes / monitoreo, lo que tendría que desarrollar individualmente para cada aplicación, que está cubierto por la mayoría de los BPMS.
Además, en la mayoría de los entornos de desarrollo de BPM, los adaptadores de servicios están preconstruidos (por ejemplo, JMS, servicios web, JDBC, etc.), lo que permite desarrollar soluciones de middleware más rápido en una integración interactiva paso a paso, reduciendo los errores humanos en la codificación.
La siguiente plataforma de flujo de trabajo logra muchos de los beneficios mencionados anteriormente: enfoque basado en la plataforma para la automatización de los flujos de trabajo
fuente
El valor
La propuesta de valor es que los flujos de trabajo pueden crearse o modificarse rápida y fácilmente para adaptarse a la naturaleza cambiante de un negocio. Una parte importante de la realización de esta propuesta de valor es que los procesos comerciales en sí mismos son unidades de recursos en el sistema.
Los flujos de trabajo como unidades de recursos significan que un proceso de negocio se define como una única 'unidad'. Para entender lo que quiero decir con esto, considere cualquier programa de computadora escrito para un negocio. Implementa un proceso de negocio seguro, pero es probable que la lógica de ese proceso se extienda en cierta medida alrededor del código fuente. Una herramienta de flujo de trabajo debe permitir que el proceso se defina en un lugar bien contenido. Podría estar en un solo archivo de configuración, o extraído de un diagrama visual, o podría significar que el flujo de trabajo está en un solo módulo de código que se puede enchufar, incluso intercambiar o configurar sobre la marcha.
Por qué el valor puede no realizarse
Esta propuesta de valor puede verse socavada por las dificultades de cubrir casos que no son de vainilla, integrarse con tecnología de interfaz de usuario que cambia muy rápidamente, malas prácticas como usar la herramienta de flujo de trabajo solo como envoltorio y poner la lógica real en el código de todos modos.
El mal diseño de las propias herramientas puede ser un factor limitante. Un ejemplo sería una herramienta que requiere que todos los parámetros pasados entre los procesos estén en un mapa de Java, con restricciones sobre los valores que realmente puede poner en el mapa, en lugar de los parámetros de métodos antiguos simples (estoy pensando en uno de los más herramientas populares en particular que hace esto).
Creo que probablemente sea justo decir que IBM, como gran jugador con un gran ecosistema tecnológico, tiene mejores ferias que los demás. Si también controlan la tecnología de interfaz de usuario y la tecnología de base de datos y SOA que se utiliza junto con la herramienta de flujo de trabajo, tienen una mejor oportunidad de crear un ecosistema que se integre bien y cree una oportunidad para aprovechar realmente esta idea.
Es definitivamente cierto que el esfuerzo de escribir la interfaz entre una herramienta de flujo de trabajo y las otras partes de un sistema puede negar por completo toda la propuesta de valor. Siempre vale la pena considerar si hay una mejor manera de hacer las cosas.
La programación es flujo de trabajo
La verdad es que la programación (al menos en lenguajes imperativos) ES FLUJO DE TRABAJO. Es posible que tenga un código que implemente el flujo de trabajo que tiene que ver con el manejo de la tecnología del sistema; acceder a archivos y ejecutar consultas SQL, etc. Es posible que tenga un código que implemente el flujo de trabajo empresarial; establecer el estado de un documento y pasarlo a un revisor, por ejemplo.
Reconocer esto y diseñar su código para dividir limpiamente estas inquietudes separadas es difícil de lograr por completo, pero ciertamente puede hacer un largo camino haciendo eso.
Estoy de acuerdo con usted, a veces terminamos usando estas herramientas porque alguien más decidió que era una buena idea, y son demasiado complejas y dificultan nuestro trabajo. No creo que ese sea siempre el caso, necesita una cuidadosa consideración para decidir si vale la pena o no.
fuente
No está muy claro qué herramienta está utilizando. Supongo que puede estar refiriéndose al conjunto general de herramientas llamadas herramientas de modelado de procesos empresariales. Hay una buena razón para usar tales herramientas. Cualquier empresa de calidad define sus funciones en términos de procesos y analistas, así como los expertos empresariales pueden dibujar dichos procesos cómodamente (hasta que los vincule con los estándares ...). Puede crear dichos procesos en el nivel conceptual sin ningún conocimiento de programación web y, si tiene la herramienta adecuada, también puede convertir el proceso en una aplicación de trabajo (las personas experimentadas deben participar para que esta magia entre en producción por supuesto). Entonces la idea es buena.
El objetivo de las herramientas visuales no es solo la documentación de los procesos. El uso de las herramientas está destinado a ayudar a los procesos de reingeniería profesional y, a veces, ejecutar simulaciones para descubrir puntos donde los procesos son menos eficientes de lo deseado para que se puedan establecer planes para eliminar los cuellos de botella.
Hay una forma estándar que muchas empresas usan hoy en día llamada BPMN 2.0 (notación de modelado de procesos comerciales). Le recomiendo que entienda esta notación si su herramienta la está utilizando.
El Business Knowledge Management Body of Knowledge es un recurso famoso, que también puede considerar.
Lo anterior cubre el lado comercial. El aspecto técnico requiere SOA y BPEL, aunque no estoy seguro de poder dar consejos sobre eso aquí y ahora.
fuente
En simple ejemplo por la historia.
Edad de Piedra
Al principio, tenías pequeñas compañías de menhires donde la gente decía dónde hacer y lo hacían. A veces las cosas van mal, y se culpa a la Persona X o Y (nunca estoy seguro de quién lo hizo realmente).
Luego se inventó Internet y correo electrónico.
La gente ahora escribía a otros qué hacer, y esas personas a menudo tenían problemas con su correo electrónico, lo leían mal o simplemente borraban un correo electrónico sin leerlo nunca; tan a menudo las cosas no se culpan de mal correo electrónico
El flujo de trabajo evolucionó a partir de la administración Al estandarizar las acciones, finalmente las personas pudieron ver en qué fase detuvieron un proceso y, al mismo tiempo, obtuvieron una visión digital de lo que realmente se había hecho. Esto funcionó bien hasta que las personas quisieron cambiar los procesos estándar, o hasta que una persona XY desconocida causó una solicitud incorrecta de la base de datos que resultó en la corrupción de la base de datos, lo que envió la producción a la edad de piedra.
fuente