Bpel y Open Esb

41
Programador PHP .org presentaIntroducción a BPEL y OpenESB Juan Belón presenta a : Pablo García Sánchez del Departamento de Arquitectura y Tecnologia de Computadores Web 2.0 Arquitectura Orientada a Servicios en Java

description

http://programadorphp.orgLa siguiente presentación de la mano de Pablo García Sánchez nos da las nociones básicas de ESB y JBI, para la integración empresarial de aplicaciones compuestas que generan un flujo de trabajo dinámico, además de dar algunas ventajas, vocabulario, y ejemplos de BPEL.

Transcript of Bpel y Open Esb

Page 1: Bpel y Open Esb

Programador PHP .org presenta…

Introducción a BPEL y OpenESB

Juan Belón presenta a :

Pablo García Sánchez del Departamento de Arquitectura y Tecnologia de Computadores Web 2.0 Arquitectura Orientada a Servicios en Java

Page 2: Bpel y Open Esb

Programador PHP .org presenta…

● ESB

Índice

● JBI (composite Applications, Service Engines...) ● OpenESB ● BPEL (Ventajas, Desventajas, Vocabulario y ejemplos)

Web 2-0: Arquitectura Orientada a Servicios en Java

2

Page 3: Bpel y Open Esb

Programador PHP .org presenta…

Enterprise Service Bus (ESB)

Un Bus de Servicios Empresariales facilita la

integración y la reutilización flexible de componentes empresariales mediante una arquitectura basada en estándares y orientada a servicios (SOA).

Dr. Gaius Baltar. Experto tecnólogo

W

e

b

2

-

0

:

A

r

q

u

i

t

e

c

t

u

r

a

Page 4: Bpel y Open Esb

Programador PHP .org presenta…

Enterprise Service Bus (II)

Aplicaciones personalizadas

Portales

Orquestación de servicios

interfaz

Mensajería confiable, segura y asíncrona

de

servicio Motor de consultas

distribuido

Fuentes de datos

Adaptadores

Aplicaciones

Empresariales

Web Services

Aplicaciones

WebSphere, .Net...

JMS/J2EE

Aplicaciones

Java

Soporte

multi-plataforma

Gateway MQ

4

Page 5: Bpel y Open Esb

Programador PHP .org presenta…

Ventajas de usar ESB

– Cualquier aplicación que entienda XML puede ser emisora/receptora

de mensajes dentro del bus.

– Permite una enorme flexbilidad a la hora de diseñar la arquitectura de

nuestro sistema, ya que se puede utilizar desde una arquitectura cliente/ servidor hasta una arquitectura orientada a eventos.

– Los componentes son "enchufables", esto da la flexibilidad de añadir

funcionalidad a un sistema en producción sin tener que pararlo, y además por su naturaleza desacoplada sin comprometer el funcionamiento de otros componentes del sistema.

Web 2-0: Arquitectura Orientada a Servicios en Java

5

Page 6: Bpel y Open Esb

Programador PHP .org presenta…

Java Business Integration (JBI)

Framework estándar de integración de aplicaciones

● Es un “meta-contenedor” para integrar “contenedores

de servicio” ● Cada contenedor puede hospedar muchos servicios (service units) ● Los servicios pueden encontrarse localmente o remotamente

Arquitectura de plug-ins:

● Service Engines (SE): Sirven para consumir o exponer servicios locales (ejemplo: BPEL Service Engine) ● Binding Components: Sirven para comunicarse con servicios remotos o que accedan a los nuestros

W

e

b

2

-

0

:

A

r

q

u

i

t

e

c

t

u

r

a

Page 7: Bpel y Open Esb

Programador PHP .org presenta…

JBI (II)

Page 8: Bpel y Open Esb

Programador PHP .org presenta…

Composite Applications

Desarrollo tradicional de aplicaciones

Por ejemplo: EJB, Spring, Hibernate, JSF, Servlets, Struts... se unen mediante “pegamento” programado por los desarrolladores que requiere un gran gasto de tiempo y esfuerzo que además es inflexible.

W

e

b

2

-

0

:

A

r

q

u

i

t

e

c

t

u

r

a

Page 9: Bpel y Open Esb

Programador PHP .org presenta…

Composite Applications (II)

Las Composite Applications son una forma de

componer aplicaciones utilizando partes reusables empleando principios SOA:

● Características expuestas como Web Services

● Interacción entre servicios basados en estándares ● Ellas mismas son componibles

W

e

b

2

-

0

:

A

r

q

u

i

t

e

c

t

u

r

a

Page 10: Bpel y Open Esb

Programador PHP .org presenta…

Composite Applications (III)

Vale, muy bonito, pero ¿qué podemos hacer

nosotros con las Composite Applications?

● Crear una aplicación que use muchos tipos de

proyecto (BPEL, XSLT, SQL...) ● Configurar cómo se accede a esa aplicación (SOAP, JMS, SMTP u otros...) ● Construir un fichero con todo eso ● Desplegar ese fichero en un servidor JBI ● Monitorizar el estatus de las aplicaciones

W

e

b

2

-

0

:

A

r

q

u

i

t

e

c

t

u

r

a

Page 11: Bpel y Open Esb

Programador PHP .org presenta…

OpenESB

El Proyecto OpenESB de Sun implementa un

Enterprise Service Bus utilizando JBI (hay otros ESBs que no son JBI,como el de Oracle).

Proporciona varias herramientas de desrrollo,

despliegue y administración de Composite Applications (el NetBeans, mismamente).

W

e

b

2

-

0

:

A

r

q

u

i

t

e

c

t

u

r

a

Page 12: Bpel y Open Esb

Programador PHP .org presenta…

Arquitectura de OpenESB

W

e

b

2

-

0

:

Page 13: Bpel y Open Esb

Programador PHP .org presenta…

Arquitectura de OpenESB (II)

W

e

b

2

-

0

:

A

r

q

u

i

t

e

c

t

u

r

a

Page 14: Bpel y Open Esb

Programador PHP .org presenta…

Componentes JBI en Glassfish

Page 15: Bpel y Open Esb

Programador PHP .org presenta…

Retos de los procesos de Negocio

● Coordinación asíncrona entre servicios

● Correlacionar intercambios de mensajes entre las partes ● Implementar procesamiento paralelo de actividades ● Implementar logica de compensación (operación “undo”) ● Manipular/transformar datos entre interacciones ● Soporte para transacciones y actividades largas (incluso de días!) ● Manejar excepciones

15

Page 16: Bpel y Open Esb

Programador PHP .org presenta…

Introducción a BPEL

Tres servicios en PHP en un servidor externo,

siete de Amazon S3, nueve en un servidor de aplicaciones local y uno en un dispositivo móvil. Hace falta un proceso para encontrarlos a todos, para gobernarlos a todos y para orquestarlos a

todos.

Web 2-0: Arquitectura Orientada a Servicios en Java

16

Page 17: Bpel y Open Esb

Programador PHP .org presenta…

¿Quién lo hace? BPEL!

BPEL : Business Process Execution Language

(Lenguaje de Ejecución de Procesos de Negocio) es 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 ayudan a la programación en gran escala (programming in the large).

Web 2-0: Arquitectura Orientada a Servicios en Java

17

Page 18: Bpel y Open Esb

Programador PHP .org presenta…

Objetivos de BPEL (I)

● Definir procesos de negocio que interactúen con entidades

externas mediante operaciones de un servicio Web definidas usando WSDL y que se manifiestan a si mismas como un servicio Web. ● 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. ● 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.

Web 2-0: Arquitectura Orientada a Servicios en Java

18

Page 19: Bpel y Open Esb

Programador PHP .org presenta…

Objetivos de BPEL (II)

● Proveer de sistemas de control jerárquicos y estilo gráfico

que permitan que su uso sea fusionado lo más ininterrumpido posible. Esto reduciría la fragmentación del espacio del modelado de procesos. ● Proveer de funciones de manipulación de datos simples requeridas para definir datos de procesos y flujos de control. ● Soportar un método de identificación de instancias de procesos que permita la definición deidentificadores de instancias a nivel de mensajes de aplicación. ● Usar servicios Web como la técnica para descomponer y ensamblar modelos.

Web 2-0: Arquitectura Orientada a Servicios en Java

19

Page 20: Bpel y Open Esb

Programador PHP .org presenta…

Historia de BPEL

● Versión 1.0 liberada por IBM, Microsoft y BEA

en 2002. ● Versión 1.1 creada por OASIS en 2003 ● Versión 2.0 disponible desde 2007

Consenso sin precedentes entre empresas: IBM,

Microsoft, Oracle, Sun, BEA, SAP, Siebel...

Web 2-0: Arquitectura Orientada a Servicios en Java

20

Page 21: Bpel y Open Esb

Programador PHP .org presenta…

Un ejemplo

Page 22: Bpel y Open Esb

Programador PHP .org presenta…

BPEL compone servicios

● Consume servicios (invoke)

● Crea servicios (receive/reply) ● Agrega servicios de grano fino ● Crea servicios de grano grueso

●Dentro de una empresa (intranet): Estandarizar la integración de aplicaciones empresariales y

extender la integración a sistemas que estaban aislados

●Entre empresas (Internet) Permite integración más efectiva entre los socios de negocio

22

Page 23: Bpel y Open Esb

Programador PHP .org presenta…

Orquestación Vs. Coreografía

Orquestación: Un proceso de negocio ejecutable que describe el flujo desde la perspectiva y control de un solo punto de negocio (a esto se le denomina workflow)

Coreografía: Intercambio público de mensajes,

reglas de interacción y acuerdos entre dos o más puntos de negocio

Web 2-0: Arquitectura Orientada a Servicios en Java

23

Page 24: Bpel y Open Esb

Programador PHP .org presenta…

Ejemplo

Herramienta de Análisis de Negocio (EA)

Generar

Plantilla

BPEL

Negocio A

Negocio B

Generar

Plantilla BPEL

Workflow del Negocio A

Transformar Enviar Solicitud

Workflow del Negocio B

Transformar

Recibir Ack

Recibir Datos

Solicitud

Ack

Datos

Recibir Solicitud

Enviar Ack

Enviar Datos

Transformar

Transformar

Page 25: Bpel y Open Esb

Programador PHP .org presenta…

Building Blocks de BPEL

Coreografía – CDL4WS (W3C)

WS-Security

Orquestación – WS-BPEL (OASIS)

Transacciones

Calidad

Administración

WS-Reliability WS-Security

UDDI

WSDL

SOAP

XML

HTTP, IIOP, JMS, SMTP

Coordinación

Contexto

de servicio

Descubrimiento

Descripción

Contexto

Transporte

Page 26: Bpel y Open Esb

Programador PHP .org presenta…

Vocabulario BPEL: Estructura

<process>

<!- Definición de roles de los participantes del

proceso--> <partnerLinks>...</partnerLinks>

<!- Datos/estados utilizados dentro del proceso--> <variables>...</variables>

<!- Propiedades que permiten conversaciones --> <correlationSets>...</correlationSets>

<!- Manejo de excepciones --> <faultHandlers>...</faultHandlers>

<!- Recuperación de errores – deshacer acciones-->

<compensationHandlers>...</compensationHandlers>

<!- Eventos concurrentes --> <!- Flujo del proceso de negocio -->

(actividades)* </process>

Page 27: Bpel y Open Esb

Programador PHP .org presenta…

Vocabulario: Actividades (I)

● Invoke: Permite al proceso de negocio

invocar una operación (solicitud/respuesta o sin respuesta) de un portType que ofrece un socio. ● Receive: Permite al proceso de negocio hacer una espera hasta recibir un mensaje que coincida. También permite iniciar el proceso BPEL ● Reply: Permite al proceso de negocio enviar un mensaje de respuesta que ha sido recibido mediante el <receive>. La combinación de <receive> y <reply> crea la operación solicitud- respuesta del portType del WSDL del proceso

Page 28: Bpel y Open Esb

Programador PHP .org presenta…

En el ejemplo

Page 29: Bpel y Open Esb

Programador PHP .org presenta…

Vocabulario: Actividades (II)

● Assign: Puede usarse para actualizar los valores de las variables con nuevos datos. ● Throw: Genera una falta (excepción) desde dentro del proceso ● Wait: Permite esperar hasta un tiempo concreto o durante un tiempo concreto. ● Empty: Operaciones no-op, útil para sincronizar actividades concurrentes, por ejemplo.

Web 2-0: Arquitectura Orientada a Servicios en Java

29

Page 30: Bpel y Open Esb

Programador PHP .org presenta…

Vocabulario: Actividades (III)

● Sequence: Permite definir una colección de

actividades para ser ejecutadas secuencialmente ● While: Sirve para indicar que una actividad tiene que repetirse hasta que cumpla un criterio establecido ● Pick: Permite bloquear y esperar un mensaje específico o a una alarma de tiempo. Cuando una de estas dos acciones ocurre ejecuta su actividad asociada

Web 2-0: Arquitectura Orientada a Servicios en Java

30

Page 31: Bpel y Open Esb

Programador PHP .org presenta…

Vocabulario: Actividades (IV)

● Flow: Especifica una o más actividades que

pueden realizarse concurrentemente. Pueden utilizarse enlaces como estructuras de control ● Scope: sirve definir actividades anidadas con sus propias variables asociadas (ej: int i=0), manejadores de faltas o de compensación. ● Compensate: Utilizados para iniciar compensaciones de un scope interno que se ha completado normalmente. Es llamado desde un manejador de faltas.

31

Page 32: Bpel y Open Esb

Programador PHP .org presenta…

Vocabulario: Actividades (V)

Las siguientes son de sobra conocidas ;) y

permiten ejecutar una actividad iterativamente y definir una actividad anidada con sus propias variables, manejadores de faltas y de compensación

● If

● While ● RepeatUntil ● ForEach

32

Page 33: Bpel y Open Esb

Programador PHP .org presenta…

Vocabulario: Partner Link

El proceso BPEL puede:

● Invocar operaciones de otros servicios->invoked partner link ● Recibir invocaciones de los clientes->client partner link

Para sus clientes un proceso BPEL es como cualquier

otro WS normal.

Todos los servicios dentro de un proceso de negocio son

modelados con Partner Links. El rol del proceso de negocio se indica en el atributo myRole y el rol del socio en el de partnerRole.

P

a

r

t

n

e

r

s

L

Page 34: Bpel y Open Esb

Programador PHP .org presenta…

Partner Links Del Ejemplo

Page 35: Bpel y Open Esb

Programador PHP .org presenta…

Vocabulario: Variables

Mensajes enviados y recibidos por los socios

Pueden almacenarse en interacciones de días!

Definidas como tipos de los WSDLs

Usa <assign> y <copy> para manipularlas.

Page 36: Bpel y Open Esb

Programador PHP .org presenta…

Ejemplo de asignación

<assign name="Assign3"> <copy>

<from>$DiHolaOut.parameters/return</from> <to variable="HablarmeOut" part="respuesta"/> </copy> </assign>

Page 37: Bpel y Open Esb

Programador PHP .org presenta…

¿Cómo se crea un proceso BPEL?

1) Crear proyecto BPEL

1.1 Crear operaciones de su WSDL 1.2 Orquestar otros WS

2) Crear una aplicación compuesta 2.1 Meter dentro el proceso BPEL

3) Desplegar la aplicación compuesta en el servidor 4) Testear

Web 2-0: Arquitectura Orientada a Servicios en Java

Page 38: Bpel y Open Esb

Programador PHP .org presenta…

Problemas de BPEL

No hay transformación de datos No hay traducción de datos (EDI, binary

formats...) No hay workflow humano No hay contratos de los socios (como ebXML) No hay interacciones si no hay WS

Web 2-0: Arquitectura Orientada a Servicios en Java

Page 39: Bpel y Open Esb

Programador PHP .org presenta…

¿Qué se propone?

● W3C: WS-Choreography

● WS-Transaction ● WS-Coordination ● WS-Composite Application Framework ● WS-Reliability ● ReliableMessaging ● WS-Addressing ● WS-Security ● BPEL4Humans

Web 2-0: Arquitectura Orientada a Servicios en Java

40

Page 40: Bpel y Open Esb

Programador PHP .org presenta…

¿Qué hemos aprendido?

Java Business Integration (JBI) define cómo se

crean y usan: ● Composite Applications ● Service Engines (motor BPEL...) ● Binding Components (HTTP, JMS...)

OpenESB es un ESB basado en JBI

BPEL permite orquestar servicios

● Usa actividades (if, invoke, reply, assign...) ● Usa PartnerLinks para distinguir a quién llama y cuándo le llaman

Page 41: Bpel y Open Esb

Programador PHP .org presenta…

Referencias

●Shin, S. SOA course. javapassion.com ●MacVittie, L. Make Way For The ESB, Network Computing, 41, pp. 41-58 ●Papazoglou, M.P. et al.: Service Oriented Architectures: approaches, technologies and research issues, VLDB Journal, 16, pp. 389-415 ●García-Sánchez P. et al. Plataforma de integración de servicios para la administración basada en BPEL y SOA. Actas de las “III Jornadas en Servicios Web y SOA (JSWEB), 2007

http://programadorphp.org