El lenguaje de ejecución de procesos de negocio para servicios web ( WS-BPEL ), comúnmente conocido como BPEL ( Business Process Execution Language ), es un lenguaje ejecutable estándar de OASIS [ 1 ] para especificar acciones dentro de procesos de negocio con servicios web . Los procesos en BPEL exportan e importan información utilizando exclusivamente interfaces de servicios web.
Descripción general
Las interacciones de los servicios web pueden describirse de dos maneras: como procesos de negocio ejecutables y como procesos de negocio abstractos.
- Un proceso de negocio ejecutable : modela el comportamiento real de un participante en una interacción empresarial.
- Un proceso de negocio abstracto es un proceso parcialmente especificado que no está diseñado para ser ejecutado. A diferencia de los procesos ejecutables, un proceso abstracto puede ocultar algunos de los detalles operativos concretos necesarios. Los procesos abstractos cumplen una función descriptiva, con más de un caso de uso posible , incluyendo comportamiento observable y/o plantilla de proceso .
WS-BPEL tiene como objetivo modelar el comportamiento de los procesos [ 2 ] mediante un lenguaje para la especificación de procesos de negocio tanto ejecutables como abstractos. De esta forma, amplía el modelo de interacción de los servicios web y le permite admitir transacciones comerciales. También define un modelo de integración interoperable que debería facilitar la expansión de la integración automatizada de procesos tanto dentro como entre empresas. Su desarrollo surgió de la idea [ 3 ] de que la programación a gran escala y la programación a pequeña escala requerían diferentes tipos de lenguajes.
Por ello, se serializa en XML y tiene como objetivo permitir la programación a gran escala.
Programación en entornos grandes y pequeños.
Los conceptos de programación a gran escala y programación a pequeña escala distinguen entre dos aspectos de la escritura del tipo de procesos asíncronos de larga duración que se suelen ver en los procesos empresariales:
- La programación a gran escala generalmente se refiere a las interacciones de transición de estado de alto nivel de un proceso. BPEL denomina a este concepto Proceso Abstracto. Un Proceso Abstracto de BPEL representa un conjunto de comportamientos observables públicamente de forma estandarizada. Un Proceso Abstracto incluye información como cuándo esperar mensajes , cuándo enviarlos, cuándo compensar transacciones fallidas, etc.
- La programación a pequeña escala , en cambio, se ocupa de comportamientos programáticos de corta duración, que a menudo se ejecutan como una sola transacción e implican el acceso a lógica y recursos locales como archivos , bases de datos , etcétera.
Historia
Los orígenes de WS-BPEL se remontan al lenguaje de flujo de servicios web (WSFL) y a Xlang .
En 2001, IBM y Microsoft definieron sus propios lenguajes de programación, bastante similares entre sí: WSFL [ 4 ] ( Web Services Flow Language ) y Xlang [ 5 ] , respectivamente. Microsoft incluso creó una variante de scripting llamada XLANG/s , que posteriormente serviría de base para sus servicios de orquestación dentro de BizTalk Server. Documentaron específicamente que este lenguaje "es propietario y no está completamente documentado" [ 6 ] .
Con la llegada y popularidad de BPML , y el creciente éxito de BPMI.org y el movimiento BPMS abierto liderado por JBoss e Intalio Inc., IBM y Microsoft decidieron combinar estos lenguajes en un nuevo lenguaje, BPEL4WS. En abril de 2003, BEA Systems , IBM, Microsoft, SAP y Siebel Systems presentaron BPEL4WS 1.1 a OASIS para su estandarización a través del Comité Técnico de Servicios Web BPEL. [ 7 ] Aunque BPEL4WS apareció como una versión 1.0 y 1.1, el comité técnico WS-BPEL de OASIS votó [ 8 ] el 14 de septiembre de 2004 para nombrar su especificación "WS-BPEL 2.0". (Este cambio de nombre alineó BPEL con otras convenciones de nomenclatura de estándares de servicios web que comienzan con "WS-" (similar a WS-Security) y tuvo en cuenta las mejoras significativas realizadas entre BPEL4WS 1.1 y WS-BPEL 2.0). Si no se habla de una versión específica, se suele usar el nombre BPEL .
En junio de 2007, Active Endpoints, Adobe Systems , BEA, IBM, Oracle y SAP publicaron las especificaciones BPEL4People y WS-HumanTask, que describen cómo se puede implementar la interacción humana en los procesos BPEL.
Temas
Objetivos de diseño
BPEL tenía diez objetivos de diseño originales:
- Defina procesos de negocio que interactúen con entidades externas mediante operaciones de servicios web definidas con el Lenguaje de Descripción de Servicios Web (WSDL) 1.1, y que se manifiesten como servicios web definidos con WSDL 1.1. Las interacciones son "abstractas" en el sentido de que la dependencia se basa en definiciones de portType, no en definiciones de puerto.
- Defina los procesos de negocio utilizando un lenguaje basado en XML. No defina una representación gráfica de los procesos ni proporcione ninguna metodología de diseño particular para los mismos. [ 9 ]
- Defina un conjunto de conceptos de orquestación de servicios web que se utilizarán tanto en la vista externa (abstracta) como en la interna (ejecutable) de un proceso de negocio. Dicho proceso define el comportamiento de una entidad autónoma, que normalmente interactúa con otras entidades similares. Se reconoce que cada patrón de uso (es decir, la vista abstracta y la vista ejecutable) requerirá algunas extensiones especializadas, pero estas deben ser mínimas y someterse a pruebas que cumplan con requisitos como la importación/exportación y la verificación de conformidad que vinculan ambos patrones de uso.
- Proporcionar regímenes de control tanto jerárquicos como basados en grafos, y permitir que su uso se combine de la forma más fluida posible. Esto debería reducir la fragmentación del espacio de modelado de procesos.
- Proporcionar funciones de manipulación de datos para la manipulación sencilla de los datos necesarios para definir los datos del proceso y el flujo de control.
- Implementar un mecanismo de identificación para instancias de proceso que permita definir identificadores de instancia a nivel de mensaje de la aplicación. Los socios deben definir los identificadores de instancia, los cuales pueden cambiar.
- Se admite la creación y terminación implícita de instancias de proceso como mecanismo básico del ciclo de vida. En futuras versiones se podrán añadir operaciones avanzadas del ciclo de vida, como "suspender" y "reanudar", para una mejor gestión del ciclo de vida.
- Definir un modelo de transacción de larga duración basado en técnicas probadas, como acciones de compensación y definición del alcance, para respaldar la recuperación ante fallos en partes de procesos comerciales de larga duración.
- Utilice los servicios web como modelo para la descomposición y el ensamblaje de procesos.
- Desarrollar el sistema basándose en los estándares de servicios web (aprobados y propuestos) en la medida de lo posible, de forma modular y componible.
El lenguaje BPEL
BPEL es un lenguaje de orquestación , no de coreografía . La principal diferencia entre orquestación y coreografía radica en la ejecutabilidad y el control. Una orquestación especifica un proceso ejecutable que implica el intercambio de mensajes con otros sistemas, de modo que las secuencias de intercambio de mensajes son controladas por el diseñador de la orquestación. Una coreografía especifica un protocolo para interacciones entre pares, definiendo, por ejemplo, las secuencias válidas de mensajes intercambiados con el fin de garantizar la interoperabilidad. Dicho protocolo no es directamente ejecutable, ya que permite muchas implementaciones diferentes (procesos que lo cumplen). Una coreografía puede implementarse escribiendo una orquestación (por ejemplo, en forma de un proceso BPEL) para cada par involucrado. Las distinciones entre orquestación y coreografía se basan en analogías: la orquestación se refiere al control central (por parte del director) del comportamiento de un sistema distribuido (la orquesta compuesta por muchos músicos), mientras que la coreografía se refiere a un sistema distribuido (el grupo de baile) que opera según reglas (la coreografía) pero sin control centralizado.
El enfoque de BPEL en los procesos de negocio modernos, sumado a la trayectoria de WSDL y XLANG, llevó a BPEL a adoptar los servicios web como su mecanismo de comunicación externa. Por lo tanto, las funciones de mensajería de BPEL dependen del uso del Lenguaje de Descripción de Servicios Web (WSDL) 1.1 para describir los mensajes entrantes y salientes.
Además de proporcionar funcionalidades para enviar y recibir mensajes, el lenguaje de programación BPEL también admite:
- Un mecanismo de correlación de mensajes basado en propiedades
- Variables tipadas XML y WSDL
- Un modelo de complemento de lenguaje extensible que permite escribir expresiones y consultas en varios lenguajes: BPEL admite XPath 1.0 de forma predeterminada.
- Estructuras de programación estructurada que incluyen if-then-elseif-else, while, sequence (para permitir la ejecución de comandos en orden) y flow (para permitir la ejecución de comandos en paralelo).
- Un sistema de delimitación que permite la encapsulación de la lógica con variables locales , manejadores de fallos , manejadores de compensación y manejadores de eventos.
- Ámbitos serializados para controlar el acceso concurrente a las variables .
Relación de BPEL con BPMN
No existe una notación gráfica estándar para WS-BPEL, ya que el comité técnico de OASIS decidió que esto quedaba fuera de su alcance. Algunos proveedores han inventado sus propias notaciones. Estas notaciones aprovechan el hecho de que la mayoría de las construcciones en BPEL están estructuradas en bloques (por ejemplo, sequence, while, pick, scope, etc.). Esta característica permite una representación visual directa de las descripciones de procesos BPEL en forma de structogramas , con un estilo que recuerda a un diagrama de Nassi-Shneiderman .
Otros han propuesto utilizar un lenguaje de modelado de procesos de negocio sustancialmente diferente, a saber, Business Process Model and Notation (BPMN), como interfaz gráfica para capturar descripciones de procesos BPEL. Como ilustración de la viabilidad de este enfoque, la especificación BPMN incluye una correspondencia informal y parcial [ 10 ] de BPMN a BPEL 1.1. Se ha implementado una correspondencia más detallada de BPMN a BPEL en varias herramientas, incluida una herramienta de código abierto conocida como BPMN2BPEL. [ 11 ] Sin embargo, el desarrollo de estas herramientas ha puesto de manifiesto diferencias fundamentales entre BPMN y BPEL, lo que hace muy difícil, y en algunos casos imposible, generar código BPEL legible por humanos a partir de modelos BPMN. Aún más difícil es el problema de la ingeniería de ida y vuelta de BPMN a BPEL : generar código BPEL a partir de diagramas BPMN y mantener sincronizados el modelo BPMN original y el código BPEL generado, en el sentido de que cualquier modificación en uno se propague al otro.
Agregar soporte para 'programación en pequeño' a BPEL
Las estructuras de control de BPEL, como 'if-then-elseif-else' y 'while', así como sus funciones de manipulación de variables, dependen del uso de lenguajes de programación en miniatura para proporcionar lógica. Todas las implementaciones de BPEL deben admitir XPath 1.0 como lenguaje predeterminado. Sin embargo, el diseño de BPEL contempla la extensibilidad para que los desarrolladores de sistemas puedan utilizar otros lenguajes. BPELJ [ 12 ] es un proyecto relacionado con JSR 207 [ 13 ] que podría permitir que Java funcione como un lenguaje de programación en miniatura dentro de BPEL.
BPEL4People
A pesar de la amplia aceptación de los servicios web en las aplicaciones empresariales distribuidas, la ausencia de interacciones humanas representaba una brecha significativa para muchos procesos empresariales del mundo real.
Para subsanar esta deficiencia, BPEL4People amplió BPEL, pasando de la orquestación exclusiva de servicios web a la orquestación también de actividades humanas basadas en roles.
Objetivos
En el contexto de un proceso de negocio BPEL4People
- apoya la interacción de personas basada en roles
- Proporciona medios para asignar usuarios a roles humanos genéricos.
- se asegura de delegar la propiedad de una tarea a una sola persona.
- escenario de soporte como
- escenario de cuatro ojos
- nominación
- escalada
- ejecución encadenada
mediante la extensión de BPEL con sintaxis y semántica independientes adicionales.
La especificación WS-HumanTask introduce la definición de tareas humanas y notificaciones, incluyendo sus propiedades, comportamiento y un conjunto de operaciones para manipularlas. Se introduce un protocolo de coordinación para controlar la autonomía y el ciclo de vida de las tareas humanas habilitadas para servicios de forma interoperable.
La especificación BPEL4People introduce una extensión de WS-BPEL para abordar las interacciones humanas como un elemento fundamental de WS-BPEL . Define un nuevo tipo de actividad básica que utiliza tareas humanas como implementación y permite especificar tareas locales a un proceso o utilizar tareas definidas fuera de la definición del proceso. Esta extensión se basa en la especificación WS-HumanTask.
WS-BPEL 2.0
La versión 2.0 introdujo algunos cambios y nuevas funciones:
- Nuevos tipos de actividad: repeatUntil, validate, forEach (paralelo y secuencial), rethrow, extensionActivity, compensationScope
- Actividades renombradas: switch/case se renombró a if/else , terminate se renombró a exit
- Se agregó un controlador de terminación a las actividades del ámbito para proporcionar un comportamiento explícito para la terminación.
- Inicialización de variables
- XSLT para transformaciones de variables (Nueva función de extensión XPath
bpws:doXslTransform) - Acceso XPath a datos variables (sintaxis de variables XPath )
$variable[.part]/location - Variables de esquema XML en actividades de servicios web (para interacciones de servicio al estilo de la documentación WS-I)
- Intercambio de mensajes declarado localmente (correlación interna de las actividades de recepción y respuesta)
- Aclaración de procesos abstractos (sintaxis y semántica)
- Habilitar anulaciones del lenguaje de expresiones en cada actividad.
Véase también
Referencias
- ↑ Estándar OASIS WS-BPEL 2.0
- ↑ Lenguaje de ejecución de procesos de negocio para servicios web, versión 1.1. Archivado el 3 de diciembre de 2020 en Wayback Machine (5 de mayo de 2003).
- ↑ "Miembros de OASIS forman el Comité Técnico del Lenguaje de Ejecución de Procesos de Negocio para Servicios Web (WSBPEL)" . Comité Técnico de WSBPEL de OASIS. 29 de abril de 2003.
- ↑ "Cover Pages: Web Services Flow Language (WSFL)" . xml.coverpages.org/. 6 de junio de 2001. Consultado el 9 de octubre de 2014 .
- ↑ "XLANG" . xml.coverpages.org/. 2001. Consultado el 9 de octubre de 2014 .
- ↑ "Lenguaje XLANG/s" . Microsoft . Consultado el 9 de octubre de 2014 .
- ↑ Comité Técnico de Servicios Web BPEL .
- ↑ "choreology.com" . choreology.com. Archivado del original el 27 de febrero de 2012. Consultado el 17 de abril de 2013 .
- ↑ Chinosi, Michele (1 de enero de 2009). Representación de procesos de negocio: modelo conceptual y metodología de diseño (tesis doctoral). Universidad de Insubria. hdl : 20.500.14242/127995 .
- ↑ White, Stephen A. (marzo de 2005). "Uso de BPMN para modelar un proceso BPEL" (PDF) . BPTrends . 3 (3): 1–18 . S2CID 13640308. Archivado del original (PDF) el 15 de septiembre de 2012. Recuperado el 17 de abril de 2013 .
- ↑ Ouyang, Chun; Dumas, Marlon; Van Der Aalst, Wil MP; Ter Hofstede, Arthur HM; Mendling, Jan (4 de agosto de 2009). "De los modelos de procesos de negocio a los sistemas de software orientados a procesos" . ACM Transactions on Software Engineering and Methodology . 19 (1). ACM . doi : 10.1145/1555392.1555395 . eISSN 1557-7392 .
- ↑ BPELJ Archivado el 16 de mayo de 2005 en Wayback Machine
- ↑ JSR 207
Lecturas adicionales
- Libros sobre BPEL 2.0
- SOA para el desarrollador de negocios: conceptos, BPEL y SCA . ISBN 978-1-58347-065-7
- Estándares basados en XML
- Especificaciones del servicio web
- Lenguajes de flujo de trabajo