Lenguaje de ejecución de procesos de negocio - Business Process Execution Language

WS-BPEL
Lenguaje de ejecución de procesos de negocio de servicios web
Estado Publicado
Año iniciado 2001 ( 2001 )
Publicado por primera vez Abril de 2003 ; Hace 18 años ( 2003-04 )
Ultima versión 2.0
11 de abril de 2007 ; hace 14 años ( 2007-04-11 )
Organización OASIS
Comité OASIS Web Services Business Process Execution Language (WSBPEL) TC
Estándares básicos XML
Dominio Integración de servicios web
Abreviatura WS-BPEL o BPEL
Sitio web docs .oasis-open .org / wsbpel / 2 .0 / OS / wsbpel-v2 .0-OS .html

El lenguaje de ejecución de procesos de negocio de servicios web ( WS-BPEL ), comúnmente conocido como BPEL ( lenguaje de ejecución de procesos de negocio ), es un lenguaje ejecutable estándar de OASIS para especificar acciones dentro de los procesos de negocio con servicios web . Los procesos en BPEL exportan e importan información utilizando exclusivamente interfaces de servicios web.

Visión general

Se pueden describir las interacciones de servicios web de dos formas: como procesos de negocio ejecutables y como procesos de negocio abstractos.

  1. Un proceso empresarial ejecutable : modela el comportamiento real de un participante en una interacción empresarial.
  2. Un proceso de negocio abstracto : es un proceso parcialmente especificado que no está destinado a ejecutarse. A diferencia de los procesos ejecutables, un proceso abstracto puede ocultar algunos de los detalles operativos concretos requeridos. Los procesos abstractos cumplen una función descriptiva, con más de un caso de uso posible , incluido el comportamiento observable y / o la plantilla de proceso .

WS-BPEL tiene como objetivo modelar el comportamiento de los procesos, a través de un lenguaje para la especificación de Procesos de Negocio tanto Ejecutables como Abstractos. Al hacerlo, amplía el modelo de interacción de 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 de procesos automatizados tanto dentro como entre las empresas. Su desarrollo surgió de la noción de que la programación en grande y la programación en pequeño requerían diferentes tipos de lenguajes.

Como tal, está serializado en XML y tiene como objetivo permitir la programación a gran escala.

Programación en grande / pequeño

Los conceptos de programación en grande y programación en pequeño distinguen entre dos aspectos de la escritura del tipo de procesos asincrónicos de larga ejecución que normalmente se ven en los procesos de negocio:

  1. La programación en general generalmente se refiere a las interacciones de transición de estado de alto nivel de un proceso. BPEL se refiere a este concepto como un proceso abstracto. Un proceso abstracto BPEL representa un conjunto de comportamientos observables públicamente de manera estandarizada. Un proceso abstracto incluye información como cuándo esperar mensajes , cuándo enviar mensajes, cuándo compensar transacciones fallidas, etc.
  2. La programación en pequeño , por el contrario, se ocupa de un comportamiento programático de corta duración, a menudo ejecutado como una sola transacción y que implica el acceso a la lógica local y recursos como archivos , bases de datos , etcétera.

Historia

Los orígenes de WS-BPEL se remontan a Web Services Flow Language (WSFL) y Xlang .

En 2001, IBM y Microsoft habían definido cada uno sus propios lenguajes de " programación en los grandes " bastante similares : WSFL ( Web Services Flow Language ) y Xlang , respectivamente. Microsoft incluso siguió adelante y creó una variante de secuencias de comandos llamada XLANG / s que luego serviría como base para sus servicios de orquestaciones dentro de BizTalk Server. Documentaron específicamente que este lenguaje "es propietario y no está completamente documentado".

Con el advenimiento y la popularidad de BPML , y el creciente éxito de BPMI.org y el movimiento abierto de BPMS 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. Aunque BPEL4WS apareció como versión 1.0 y 1.1, el comité técnico de OASIS WS-BPEL votó 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 estándar 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). versión específica, el apodo BPEL se usa comúnmente.

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

Había diez objetivos de diseño originales asociados con BPEL:

  1. Definir procesos comerciales que interactúan con entidades externas a través de operaciones de servicios web definidas mediante el lenguaje de descripción de servicios web (WSDL) 1.1, y que se manifiestan como servicios web definidos mediante WSDL 1.1. Las interacciones son "abstractas" en el sentido de que la dependencia está en las definiciones de portType, no en las definiciones de puerto.
  2. Defina los procesos comerciales utilizando un lenguaje basado en XML. No defina una representación gráfica de procesos ni proporcione ninguna metodología de diseño particular para procesos.
  3. Defina un conjunto de conceptos de orquestación de servicios web destinados a ser utilizados por las vistas externa (abstracta) e interna (ejecutable) de un proceso empresarial. Dicho proceso empresarial define el comportamiento de una única entidad autónoma, que normalmente opera en interacción con otras entidades similares similares. Se reconoce que cada patrón de uso (es decir, vista abstracta y vista ejecutable) requerirá algunas extensiones especializadas, pero estas extensiones deben mantenerse al mínimo y probarse con requisitos como la importación / exportación y la verificación de conformidad que vinculan los dos usos. patrones.
  4. Proporcione regímenes de control jerárquicos y similares a gráficos, y permita que su uso se mezcle de la manera más fluida posible. Esto debería reducir la fragmentación del espacio de modelado de procesos.
  5. Proporcionar funciones de manipulación de datos para la manipulación simple de datos necesarios para definir los datos del proceso y controlar el flujo.
  6. Admite un mecanismo de identificación para instancias de proceso que permite la definición de identificadores de instancia a nivel de mensaje de aplicación. Los socios deben definir los identificadores de instancia y pueden cambiar.
  7. Apoyar la creación y terminación implícitas de instancias de proceso como mecanismo básico del ciclo de vida. Es posible que se agreguen operaciones avanzadas del ciclo de vida como "suspender" y "reanudar" en versiones futuras para mejorar la administración del ciclo de vida.
  8. Defina un modelo de transacción de larga duración que se base en técnicas probadas como acciones de compensación y alcance para respaldar la recuperación de fallas para partes de procesos de negocio de larga duración.
  9. Utilice los servicios web como modelo para la descomposición y el ensamblaje de procesos.
  10. Construya sobre los estándares de servicios web (aprobados y propuestos) tanto como sea posible de una manera componible y modular.

El lenguaje BPEL

BPEL es un lenguaje de orquestación y no un lenguaje de coreografía . La principal diferencia entre orquestación y coreografía es la ejecución y el control. Una orquestación especifica un proceso ejecutable que implica intercambios de mensajes con otros sistemas, de modo que las secuencias de intercambio de mensajes están controladas por el diseñador de la orquestación. Una coreografía especifica un protocolo para interacciones peer-to-peer, definiendo, por ejemplo, las secuencias legales de mensajes intercambiados con el propósito de garantizar la interoperabilidad. Dicho protocolo no es directamente ejecutable, ya que permite muchas realizaciones diferentes (procesos que lo cumplen). Se puede realizar una coreografía escribiendo una orquestación (por ejemplo, en la forma de un proceso BPEL) para cada compañero involucrado en ella. Las distinciones de 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 que consta de muchos intérpretes), mientras que la coreografía se refiere a un sistema distribuido (el equipo de baile) que opera según reglas (la coreografía) pero sin control centralizado.

El enfoque de BPEL en los procesos comerciales modernos, además de las historias de WSFL 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 facilidades para permitir el envío y la recepción de mensajes, el lenguaje de programación BPEL también admite:

  • Un mecanismo de correlación de mensajes basado en propiedades
  • Variables escritas XML y WSDL
  • Un modelo de complemento de lenguaje extensible para permitir la escritura de expresiones y consultas en varios idiomas: BPEL admite XPath 1.0 de forma predeterminada
  • Construcciones de programación estructurada que incluyen if-then-elseif-else, while, secuencia (para habilitar la ejecución de comandos en orden) y flujo (para habilitar la ejecución de comandos en paralelo)
  • Un sistema de alcance para permitir la encapsulación de la lógica con variables locales , controladores de fallas , controladores de compensación y controladores 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 estaba fuera de 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, secuencia, mientras, selección, alcance, etcétera). Esta característica permite una representación visual directa de las descripciones del proceso BPEL en forma de estructogramas , en un estilo. 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 un mapeo informal y parcial de BPMN a BPEL 1.1. Se ha implementado un mapeo más detallado de BPMN a BPEL en varias herramientas, incluida una herramienta de código abierto conocida como BPMN2BPEL. Sin embargo, el desarrollo de estas herramientas ha expuesto diferencias fundamentales entre BPMN y BPEL, que hacen 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 de uno se propaga al otro.

Añadiendo soporte de 'programación en los pequeños' a BPEL

Las estructuras de control de BPEL como 'if-then-elseif-else' y 'while', así como sus facilidades de manipulación de variables, dependen del uso de 'programación en los lenguajes pequeños' para proporcionar lógica. Todas las implementaciones de BPEL deben admitir XPath 1.0 como idioma predeterminado. Pero el diseño de BPEL prevé la extensibilidad para que los constructores de sistemas también puedan utilizar otros lenguajes. BPELJ es un esfuerzo relacionado con JSR 207 que puede permitir que Java funcione como una "programación en el lenguaje pequeño" dentro de BPEL.

BPEL4Personas

A pesar de la amplia aceptación de los servicios web en las aplicaciones comerciales distribuidas, la ausencia de interacciones humanas fue una brecha significativa para muchos procesos comerciales del mundo real.

Para llenar este vacío, BPEL4People extendió BPEL desde la orquestación de servicios web solamente a la orquestación de actividades humanas basadas en roles también.

Objetivos

En el contexto de un proceso empresarial BPEL4People

  • apoya la interacción basada en roles de las personas
  • proporciona medios para asignar usuarios a roles humanos genéricos
  • se encarga de delegar la propiedad de una tarea solo a una persona
  • admite escenario como

extendiendo BPEL con sintaxis y semántica independientes adicionales.

La especificación WS-HumanTask introduce la definición de tareas humanas y notificaciones, incluidas sus propiedades, comportamiento y un conjunto de operaciones utilizadas para manipular tareas humanas. Se introduce un protocolo de coordinación para controlar la autonomía y el ciclo de vida de las tareas humanas habilitadas para el servicio de manera interoperable.

La especificación BPEL4People introduce una extensión WS-BPEL para abordar las interacciones humanas en WS-BPEL como un ciudadano de primera clase . 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 características:

  • Nuevos tipos de actividad: repeatHasta, validar, forEach (paralelo y secuencial), relanzar, extensionActivity, compensteScope
  • Actividades renombradas: cambiar / caso renombrado a if / else, terminar renombrado para salir
  • Controlador de terminación agregado a las actividades del alcance para proporcionar un comportamiento explícito para la terminación
  • Inicialización variable
  • XSLT para transformaciones de variables (nueva función de extensión XPath bpws: doXslTransform)
  • Acceso XPath a datos variables (sintaxis de variable XPath $ variable [.part] / ubicación)
  • Variables de esquema XML en actividades de servicios web (para interacciones de servicios de estilo doc / lit de WS-I)
  • MessageExchange declarado localmente (correlación interna de las actividades de recepción y respuesta)
  • Aclaración de procesos abstractos (sintaxis y semántica)
  • Habilite la anulación del lenguaje de expresión en cada actividad

Ver también

Referencias

Otras lecturas

Libros sobre BPEL 2.0