permítanme añadir claridad al hacer la distinción entre BPM, orquestación y ESB, a través de patrones de diseño y especificaciones.
En general, la "orquestación" se ha definido como un patrón compuesto que emplea los patrones de diseño de Abstracción de proceso, Centralización de proceso y Repositorio de estado. En virtud de la implementación del Patrón de repositorio estatal y en contra de una publicación anterior, Orchestration admite procesos comerciales sincrónicos de larga ejecución, al igual que BPM.
La principal distinción práctica entre los 2 es que el middleware de Orchestration (por ejemplo, WebSphere Process Server, BizTalk, Oracle BPEL Manager y Windows Workflow Foundation) es compatible con la mayoría de las especificaciones WS *. Esto incluye Ws BPEL, Ws Security, Ws Atomic Transaction, Ws Business Activity, Ws Reliable Messaging, etc., mientras que la mayoría de las herramientas BPM no lo hacen.
Como resultado, puede utilizar Orchestration a nivel empresarial, pero tenga mucho cuidado con el uso de BPM en ese ámbito.
En la práctica, las herramientas de BPM y Orquestación permiten la representación gráfica de un proceso empresarial. La distinción es que Orchestration puede expresarse a través de Vendor-Neutral BPEL (Lenguaje de ejecución de procesos empresariales), mientras que BPM se expresa a través de Específico del proveedor BPMN (Notación de modelado de procesos empresariales). Esta es otra razón para evitar las herramientas de BPM en el nivel SOA/Enterprise.
En los casos en que una herramienta BPM implementa las especificaciones Ws *, es un motor de orquestación para todos los propósitos prácticos. Otra vez la distinción es que las herramientas de BPM se basan en las herramientas de BPMN y orquestación específicas del proveedor y dependen de BPEL de proveedor neutral.
En los casos en que tanto BPM como Orchestration necesitan coexistir, limite el BPM a la arquitectura de la aplicación (por ejemplo, estilo MVC) y permita que Orchestration promueva el intercambio de activos empresariales.
Un ESB es un animal completamente diferente. Se debe usar para procesos asincrónicos, en lugar de sincrónicos y se basa en un conjunto diferente de patrones de diseño (por ejemplo, Service Broker, Asynchronous Queuing, Intermediate Routing y los patrones Content Enricher)
¡Respuesta perfecta! Gracias por la explicación. (http://stackoverflow.com/questions/345749/is-orchestration-an-esb-responsibility) esta pregunta también es muy similar y ha sido respondida maravillosamente. –
¡gran explicación! –