Lo sé, lo sé!!! Esta es la tercera entrada que creo en mi blog en donde relaciono un tema visto en clases con el ERP Oracle PeopleSoft. No es que lo haga con ánimos de marketear la solución con la que trabajo (bueno, quizás un poco jajajajaja). Mi motivación principal radica en la posibilidad de tener en esta entrada un modelo de implementación de la especificación WS-BPEL en una tecnología propietaria. Como siempre he dicho, tener claro los conceptos nos permitirá implementar cualquier especificación, estilo o tipo de arquitectura en .NET, en JAVA, en PHP, o como ahora, en PeopleSoft.
¿Qué es WS-BPEL?
El Lenguaje de Ejecución de Procesos de Negocio con Servicios Web es un lenguaje estandarizado por OASIS para la composición de servicios web. Está desarrollado a partir de WSFL y XLANG, ambos lenguajes orientados a la descripción de servicios Web. Básicamente, consiste en un lenguaje basado en XML diseñado para el control centralizado de la invocación de diferentes servicios Web, con cierta lógica de negocio añadida que ayuda a la programación en gran escala (programming in the large). Antes de su estandarización se denominaba BPEL4WS.
¿Cuál es su propósito?
La programación en gran escala generalmente se refiere al desarrollo del software de gran tamaño que involucra grandes procesos de desarrollo, evolución y mantenimiento. Por otro lado, la programación detallada se refiere a la construcción de componentes de software pequeños y autónomos. El desarrollo de BPEL nace de la necesidad de manejar lenguajes distintos entre la programación a gran escala y la programación detallada, ya que en su esencia ambos tipos de desarrollo requieren de distintos grados de comunicación con otros servicios.
¿Qué es el lenguaje BPEL?
BPEL es un lenguaje de orquestación, no un lenguaje coreográfico. La mayor diferencia entre ambos es el ámbito. Un modelo de orquestación provee un ámbito específicamente enfocado en la vista de un participante en particular (ejemplo: un modelo par-a-par / point-to-point). En cambio, un modelo coreográfico abarca todos los participantes y sus interacciones asociadas, dando una vista global del sistema. Las diferencias entre orquestación y coreografía están basadas en analogías: la orquestación describe un control central del comportamiento como un director de orquesta, mientras que la coreografía trata sobre el control distribuido del comportamiento donde participantes individuales realizan procesos basados en eventos externos, como en una danza coreográfica donde los bailarines reaccionan a los comportamientos de sus pares.
Si imaginamos un flujo de negocio determinado, con una entrada X y una salida Y, este se podría componer de muchos procesos internos que se lanzarían dependiendo de valores y respuestas anteriores. BPEL sería el encargado de orquestar todo el proceso ordenando qué proceso ejecutar (Servicio Web) y en qué momento.
Este lenguaje fue concebido por grandes de la informática como Oracle, BEA Systems, IBM, SAP y Microsoft entre otros.
¿Qué posibilita el Lenguaje de Programación BPEL?
Adicionalmente a proveer facilidades para habilitar el envío y recepción de mensajes, el lenguaje de programación BPEL también posibilita:
1. Un mecanismo de correlación de mensajes basado en propiedades.
2. Variables del tipo XML y WSDL.
3. Un modelo de lenguaje extensible de componentes para permitir escribir expresiones y consultas (queries) en múltiples lenguajes: BPEL soporta Xpath 1.0 predeterminadamente.
4. Construcciones de programación estructurada incluyendo "if-then-elseif-else", "while", "sequence" (posibilita la ejecución de comandos en orden) y "flow" (posibilita la ejecución de comandos en paralelo).
5. Un sistema de ámbito (scoping) que permite el encapsulamiento de lógica con variables locales, manejadores de fallo, manejadores de compensación y manejadores de eventos.
6. Ámbitos serializados para controlar los accesos a las variables.
Imagen que representa la función de orquestación de BPEL
¿Cuáles son los objetivos del diseño BPEL?
1. Definir procesos de negocio que interactúan con entidades externas mediante operaciones de un servicio Web definidas usando WSDL 1.1 y que se manifiestan a sí mismas como servicios Web.
2. Definir procesos de negocio utilizando un lenguaje basado en XML. No definir una interpretación gráfica de procesos o proveer de una metodología de diseño en particular.
3. Definir una serie de conceptos de orquestación de servicios Web que pretenden ser usados por vistas internas o externas de un proceso de negocio.
4. Proveer funciones de manipulación simple de datos, requeridas para definir datos de procesos y flujos de control.
5. Usar servicios Web como modelo para la descomposición y ensamblaje de procesos.
6. Construir sobre estándares de servicios Web (aprobados y propuestos) tanto como sea posible, de manera modular y extensible.
Imagen que representa la relación secuencial entre BPMN y BPEL
Referencia
¿Y que hay con PeopleSoft? ¿Cómo implemento BPEL?
PeopleSoft, siempre a la vanguardia en cuanto a tecnologías de integración basadas en servicios, posee una funcionalidad que le permite la integración con servicios basados en procesos BPEL.
En líneas generales, PeopleSoft nos permite consumir y proveer procesos BPEL en base a clases de aplicación, hechas en su lenguaje de programación propietario: PeopleCode, que ejecutan y controlan instancias de procesos BPEL.
Para la integración de Procesos BPEL con PeopleSoft se puede emplear cualquier tipo de motor de ejecución BPEL. El motor de ejecución que PeopleSoft recomienda, y el que se encuentra como referencia en su documentación técnica acerca de este punto, es el Oracle BPEL Process Manager.
¿Posee PeopleSoft, en su lenguaje de programación propietario PeopleCode, algunas clases (API's, o frameworks) que me permitan interactuar, sin programar tanto, con los procesos BPEL?
Si. PeopleCode es un lenguaje de programación orientado a objetos; por ello, y como parte de una de sus API's, podemos encontrar la Clase BPEL, la cual posee métodos públicos ya definidos que nos permiten interactuar fácilmente con los procesos BPEL.
¿Y cómo se realiza la conectividad entre PeopleSoft y el Motor de Ejecución BPEL?
PeopleSoft entrega un nodo llamado BPEL, el cual es usado EXCLUSIVAMENTE para integraciones BPEL siempre y cuando esté trabajando con el motor de ejecución Oracle BPEL Process Manager. Para el resto de motores de ejecución BPEL, deberá crear y configurar un nuevo nodo (en PeopleSoft, un nodo se puede configurar de diferentes maneras: HTTP, HTTPS, FTP, SMTP, etc.).
IMPORTANTE: Los nodos representan cualquier organización, aplicación o sistema que va a desempeñar un papel en las integraciones con PeopleSoft.
Consumir Servicios basados en Procesos BPEL
Para poder consumir servicios basados en procesos BPEL desde PeopleSoft se debe tener en cuenta los siguientes puntos:
- Despliegue del Proceso BPEL: En primer lugar, el motor de ejecución BPEL debe haber desplegado su proceso BPEL de modo tal que, se genere un documento WSDL.
- Importar los documentos WSDL desde los procesos BPEL: PeopleSoft puede consumir los documentos WSDL desde un repositorio UDDI, URL WSDL, URL WSIL o mediante un archivo.
- Consumir operaciones BPEL síncronas: En PeopleSoft se puede crear peticiones BPEL síncronas, invocar operaciones BPEL síncronas y procesar respuestas BPEL síncronas.
- Consumir operaciones BPEL de petición/respuesta asíncronas: En PeopleSoft se puede crear peticiones BPEL de petición/respuesta asíncronas, invocar operaciones BPEL de petición/respuesta asíncrona, crear un controlador para procesar la respuesta de una petición/respuesta BPEL asíncrona y añadir un controlador a una operación de servicio para procesar una respuesta BPEL de petición/respuesta asíncrona.
- Consumir operaciones BPEL one-way asíncronas: En PeopleSoft se puede crear peticiones BPEL one-way asíncronas, invocar operaciones one-way asíncronas y añadir controladores para asignar ID's consecutivos a todas estas peticiones.
Proveer Servicios PeopleSoft a Procesos BPEL
Para poder proveer servicios PeopleSoft a procesos BPE se debe tener en cuenta los siguientes puntos:
- Proveer operaciones síncronas PeopleSoft a Procesos BPEL: Se debe construir servicios PeopleSoft síncronos, proveer servicios PeopleSoft síncronos como documentos WSDL y consumir el servicio en un proceso BPEL e invocar dicho proceso.
- Proveer operaciones petición/respuesta asíncronas PeopleSoft a Procesos BPEL: Se debe construir servicios PeopleSoft de petición/respuesta asíncronas, proveer servicios PeopleSoft de petición/respuesta asíncrona como documentos WSDL y consumir el servicio en un proceso BPEL e invocar dicho proceso.
¿Cómo implemento esta integración en la vida real?
Lo que describimos anteriormente fue, en líneas generales, la manera como se debe implementar una integración PeopleSoft - Motor de Ejecución de Procesos BPEL. Para encontrar esta implementación a detalle puede tomar como referencia el siguiente apartado (para no perder la costumbre... 100% libre, sin costo y propiedad de Oracle):
Espero haber contribuido a ampliar un poco más su conocimiento acerca de esta tecnología de integración que día a día gana más adeptos en el mercado.
Saludos
AAM
No hay comentarios:
Publicar un comentario