La coreografía de servicios en informática empresarial es una forma de composición de servicios en la que el protocolo de interacción entre varios servicios asociados [ aclaración necesaria ] se define desde una perspectiva global. [1] La idea subyacente al concepto de coreografía de servicios se puede resumir de la siguiente manera:
“Los bailarines bailan siguiendo un escenario global sin un único punto de control”
Es decir, en tiempo de ejecución cada participante en una coreografía de servicio ejecuta su parte de acuerdo con el comportamiento de los otros participantes. [2] El rol de una coreografía especifica el comportamiento de mensajería esperado de los participantes que la ejecutarán en términos de la secuencia y el tiempo de los mensajes que pueden consumir y producir. [3]
La coreografía describe la secuencia y las condiciones en las que se intercambian datos entre dos o más participantes con el fin de cumplir algún propósito útil. [4]
La coreografía de servicios se entiende mejor a través de la comparación con otro paradigma de composición de servicios: la orquestación de servicios . Por un lado, en las coreografías de servicios la lógica de las interacciones basadas en mensajes entre los participantes se especifica desde una perspectiva global. En la orquestación de servicios, por otro lado, la lógica se especifica desde el punto de vista local de un participante controlador, llamado el orquestador . En el lenguaje de orquestación de servicios BPEL , por ejemplo, la especificación de la orquestación de servicios (por ejemplo, el archivo de proceso BPEL) es un flujo de trabajo que se puede implementar en la infraestructura de servicios (por ejemplo, un motor de ejecución BPEL como Apache ODE ). La implementación de la especificación de orquestación de servicios transforma un flujo de trabajo en un servicio compuesto. [5]
En cierto sentido, la coreografía y las orquestaciones de servicios son dos caras de la misma moneda. Por un lado, los roles de una coreografía de servicios pueden extraerse como orquestaciones de servicios a través de un proceso llamado proyección . [6] A través de la proyección es posible realizar esqueletos , es decir, orquestaciones de servicios incompletas que pueden usarse como líneas base para realizar los servicios web que participan en la coreografía de servicios. Por otro lado, las orquestaciones de servicios ya existentes pueden componerse en coreografías de servicios.
Las coreografías de servicios no se ejecutan: se ponen en práctica . Una coreografía de servicios se pone en práctica cuando sus participantes ejecutan sus roles. [7] Es decir, a diferencia de la orquestación de servicios, las coreografías de servicios no son ejecutadas por algún motor en la infraestructura de servicios, sino que "suceden" cuando se ejecutan sus roles. Esto se debe a que la lógica de la coreografía de servicios se especifica desde un punto de vista global y, por lo tanto, no la realiza un solo servicio como en la orquestación de servicios.
La pregunta clave que gran parte de la investigación sobre coreografía intenta responder es esta: supongamos que se construye una coreografía global que describe las posibles interacciones entre los participantes en una colaboración. ¿Qué condiciones debe obedecer la coreografía para garantizar que la colaboración tenga éxito ? Aquí, tiene éxito significa que el comportamiento emergente que resulta cuando se lleva a cabo la colaboración, con cada participante actuando independientemente de acuerdo con su propio esqueleto , sigue exactamente la coreografía a partir de la cual se proyectaron originalmente los esqueletos. Cuando este es el caso, se dice que la coreografía es realizable . [8] En general, determinar la realizabilidad de una coreografía es una pregunta no trivial, particularmente cuando la colaboración utiliza mensajería asincrónica y es posible que diferentes participantes envíen mensajes simultáneamente.
En el ámbito de las especificaciones relativas a servicios Web , las siguientes especificaciones se han centrado en definir lenguajes para modelar coreografías de servicios:
Además, la especificación OMG BPMN versión 2.0 incluye diagramas para modelar coreografías de servicios. [9]
Las propuestas académicas para los lenguajes de la coreografía de servicios incluyen:
Además, se han propuesto una serie de formalismos coreográficos de servicios basados en:
La coreografía de servicios web ( WS-Choreography ) es una especificación del W3C que define un lenguaje de modelado de procesos de negocio basado en XML que describe protocolos de colaboración entre participantes de servicios web que cooperan , en los que los servicios actúan como pares y las interacciones pueden ser duraderas y con estado. ( La orquestación es otro término con un significado muy similar, pero aún así diferente ).
El esfuerzo principal para obtener una coreografía, el Grupo de Trabajo de Coreografía de Servicios Web del W3C, se cerró el 10 de julio de 2009 [24] dejando a WS-CDL como Recomendación Candidata.
"Muchas presentaciones en el Taller del W3C sobre servicios Web del 11 y 12 de abril de 2001 apuntaron a la necesidad de una interfaz común y un lenguaje de composición para ayudar a abordar la coreografía. El Borrador de trabajo de requisitos de arquitectura de servicios Web creado por el Grupo de trabajo de arquitectura de servicios Web también incluye la idea de las capacidades de coreografía de servicios Web como un factor crítico de éxito , en apoyo de varios objetivos de alto nivel diferentes para la naciente arquitectura de servicios Web"[1].
El problema de la coreografía fue de gran interés para la industria en esa época; se presentaron al W3C iniciativas como WSCL (Web Service Conversation Language) y WSCI (Web Service Choreography Interface) que se publicaron como notas técnicas. Además, se lanzaron iniciativas complementarias: [25]
"En junio de 2002, Intalio, Sun, BEA y SAP publicaron una especificación conjunta denominada Interfaz de coreografía de servicios web (WSCI). Esta especificación también se envió al W3C como nota en agosto de 2002. Desde entonces, el W3C ha formado un nuevo grupo de trabajo denominado Grupo de trabajo de coreografía de servicios web dentro de la Actividad de servicios web. La especificación WSCI es una de las principales aportaciones al Grupo de trabajo de coreografía de servicios web, que publicó una recomendación candidata sobre la versión 1.0 de WS-CDL el 9 de noviembre de 2005"[3]. "XLang, WSFL y WSCI ya no reciben soporte de ninguna organización o empresa de normalización. BPEL sustituyó a Xlang y WSFL. WSCI fue reemplazado por WS-CDL "[4].
La próxima versión 2.0 de Business Process Modeling Notation introducirá diagramas para especificar coreografías de servicios. [9]
El ámbito académico ha propuesto otros lenguajes de coreografía de servicios, por ejemplo Let's Dance, [10] BPEL4Chor [11] y MAP. [19]
Las coreografías de servicios especifican interacciones basadas en mensajes entre los participantes desde una perspectiva global. De la misma manera que los lenguajes de programación se pueden agrupar en paradigmas de programación , los lenguajes de coreografía de servicios se pueden agrupar en estilos : [26]
Hay varios proyectos de investigación activos sobre el tema de la coreografía de servicios.