Está en la página 1de 41

Programador PHP .

org presenta

Introduccin a BPEL y OpenESB

Juan Beln presenta a :


Pablo Garca Snchez
del Departamento de Arquitectura y Tecnologia de Computadores
Web 2.0 Arquitectura Orientada a Servicios en Java
Programador PHP .org presenta

ndice

ESB
JBI (composite Applications, Service Engines...)

OpenESB

BPEL (Ventajas, Desventajas, Vocabulario y

ejemplos)

Web 2-0: Arquitectura Orientada a Servicios en Java 2


Programador PHP .org presenta

Enterprise Service Bus (ESB)


Un Bus de Servicios Empresariales facilita la
integracin y la reutilizacin flexible de
componentes empresariales mediante una
arquitectura basada en estndares y orientada a
servicios (SOA).

Dr. Gaius Baltar. Experto tecnlogo


Programador PHP .org presenta

Enterprise Service Bus (II)

Aplicaciones Portales Orquestacin


personalizadas de servicios

Mensajera confiable, segura y asncrona

interfaz
de Motor de consultas Adaptadores Web JMS/J2EE Gateway MQ
servicio distribuido Services

Aplicaciones
Aplicaciones
WebSphere,
.Net... Java

Aplicaciones Soporte
Fuentes de datos
Empresariales multi-plataforma
4
Programador PHP .org presenta

Ventajas de usar ESB


Cualquier aplicacin que entienda XML puede ser emisora/receptora
de mensajes dentro del bus.

Permite una enorme flexbilidad a la hora de disear 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 aadir


funcionalidad a un sistema en produccin sin tener que pararlo, y
adems por su naturaleza desacoplada sin comprometer el
funcionamiento de otros componentes del sistema.

Web 2-0: Arquitectura Orientada a Servicios en Java 5


Programador PHP .org presenta

Java Business Integration (JBI)

Framework estndar de integracin 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


Programador PHP .org presenta

JBI (II)
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 adems es inflexible.
Programador PHP .org presenta

Composite Applications (II)


Las Composite Applications son una forma de
componer aplicaciones utilizando partes
reusables empleando principios SOA:

Caractersticas expuestas como Web Services


Interaccin entre servicios basados en

estndares
Ellas mismas son componibles
Programador PHP .org presenta

Composite Applications (III)

Vale, muy bonito, pero qu podemos hacer


nosotros con las Composite Applications?

Crear una aplicacin que use muchos tipos de


proyecto (BPEL, XSLT, SQL...)
Configurar cmo se accede a esa aplicacin

(SOAP, JMS, SMTP u otros...)


Construir un fichero con todo eso

Desplegar ese fichero en un servidor JBI

Monitorizar el estatus de las aplicaciones


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 administracin de Composite
Applications (el NetBeans, mismamente).
Programador PHP .org presenta

Arquitectura de OpenESB
Programador PHP .org presenta

Arquitectura de OpenESB (II)


Programador PHP .org presenta

Componentes JBI en Glassfish


Programador PHP .org presenta

Retos de los procesos de Negocio


Coordinacin asncrona entre servicios

Correlacionar intercambios de mensajes entre

las partes
Implementar procesamiento paralelo de

actividades
Implementar logica de compensacin (operacin

undo)
Manipular/transformar datos entre interacciones

Soporte para transacciones y actividades largas

(incluso de das!)
Manejar excepciones
15
Programador PHP .org presenta

Introduccin 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 mvil.
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


Programador PHP .org presenta

Quin lo hace? BPEL!

BPEL : Business Process Execution Language


(Lenguaje de Ejecucin de Procesos de Negocio)
es un lenguaje basado en XML diseado para el
control centralizado de la invocacin de diferentes
servicios Web, con cierta lgica de negocio
aadida que ayudan a la programacin en gran
escala (programming in the large).

Web 2-0: Arquitectura Orientada a Servicios en Java 17


Programador PHP .org presenta

Objetivos de BPEL (I)

Definir procesos de negocio que interacten 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 interpretacin grfica de procesos o


proveer de una metodologa de diseo en particular.
Definir una serie de conceptos de orquestacin 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


Programador PHP .org presenta

Objetivos de BPEL (II)

Proveer de sistemas de control jerrquicos y estilo grfico


que permitan que su uso sea fusionado lo ms ininterrumpido
posible. Esto reducira la fragmentacin del espacio del
modelado de procesos.
Proveer de funciones de manipulacin de datos simples

requeridas para definir datos de procesos y flujos de control.


Soportar un mtodo de identificacin de instancias de

procesos que permita la definicin deidentificadores de


instancias a nivel de mensajes de aplicacin.
Usar servicios Web como la tcnica para descomponer y

ensamblar modelos.

Web 2-0: Arquitectura Orientada a Servicios en Java 19


Programador PHP .org presenta

Historia de BPEL

Versin 1.0 liberada por IBM, Microsoft y BEA


en 2002.
Versin 1.1 creada por OASIS en 2003

Versin 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


Programador PHP .org presenta

Un ejemplo
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 integracin de aplicaciones empresariales y
extender la integracin a sistemas que estaban aislados

Entre empresas (Internet)


Permite integracin ms efectiva entre los socios de negocio
22
Programador PHP .org presenta

Orquestacin Vs. Coreografa

Orquestacin: 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)

Coreografa: Intercambio pblico de mensajes,


reglas de interaccin y acuerdos entre dos o ms
puntos de negocio

Web 2-0: Arquitectura Orientada a Servicios en Java 23


Programador PHP .org presenta

Ejemplo
Herramienta de Anlisis de Negocio (EA)

Negocio A Negocio B
Generar Generar
Plantilla Plantilla
BPEL BPEL

Workflow del Negocio A

Transformar Enviar Solicitud Workflow del Negocio B


Solicitud
Recibir Solicitud Transformar

Recibir Ack Enviar Ack

Ack

Transformar
Recibir Datos Enviar Datos Transformar

Datos
Programador PHP .org presenta

Building Blocks de BPEL


Coreografa CDL4WS (W3C)
WS-Security
Orquestacin WS-BPEL (OASIS)

Transacciones

Calidad
WS-Reliability WS-Security Coordinacin de servicio

Contexto
Administracin
UDDI Descubrimiento

WSDL Descripcin

SOAP
Contexto
XML

HTTP, IIOP, JMS, SMTP Transporte


Programador PHP .org presenta

Vocabulario BPEL: Estructura


<process>
<!- Definicin 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>
<!- Recuperacin de errores deshacer acciones-->
<compensationHandlers>...</compensationHandlers>
<!- Eventos concurrentes -->
<!- Flujo del proceso de negocio -->
(actividades)*
</process>
Programador PHP .org presenta

Vocabulario: Actividades (I)


Invoke: Permite al proceso de negocio

invocar una operacin (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. Tambin permite iniciar el proceso
BPEL
Reply: Permite al proceso de negocio enviar un

mensaje de respuesta que ha sido recibido


mediante el <receive>. La combinacin de
<receive> y <reply> crea la operacin solicitud-
respuesta del portType del WSDL del proceso
Programador PHP .org presenta

En el ejemplo
Programador PHP .org presenta

Vocabulario: Actividades (II)

Assign: Puede usarse para actualizar los


valores de las variables con nuevos datos.
Throw: Genera una falta (excepcin) 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


Programador PHP .org presenta

Vocabulario: Actividades (III)

Sequence: Permite definir una coleccin 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

especfico 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
Programador PHP .org presenta

Vocabulario: Actividades (IV)

Flow: Especifica una o ms 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 compensacin.
Compensate: Utilizados para iniciar

compensaciones de un scope interno que se ha


completado normalmente. Es llamado desde un
manejador de faltas. 31
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
compensacin

If
While

RepeatUntil

ForEach
32
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.
Programador PHP .org presenta

Partner Links Del Ejemplo


Programador PHP .org presenta

Vocabulario: Variables

Mensajes enviados y recibidos por los socios

Pueden almacenarse en interacciones de das!

Definidas como tipos de los WSDLs

Usa <assign> y <copy> para manipularlas.


Programador PHP .org presenta

Ejemplo de asignacin

<assign name="Assign3">
<copy>
<from>$DiHolaOut.parameters/return</from>
<to variable="HablarmeOut" part="respuesta"/>
</copy>
</assign>
Programador PHP .org presenta

Cmo se crea un proceso


BPEL?
1) Crear proyecto BPEL
1.1 Crear operaciones de su WSDL
1.2 Orquestar otros WS
2) Crear una aplicacin compuesta
2.1 Meter dentro el proceso BPEL
3) Desplegar la aplicacin compuesta en el
servidor
4) Testear

Web 2-0: Arquitectura Orientada a Servicios en Java


Programador PHP .org presenta

Problemas de BPEL

No hay transformacin de datos


No hay traduccin 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


Programador PHP .org presenta

40
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


Programador PHP .org presenta

Qu hemos aprendido?
Java Business Integration (JBI) define cmo 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 quin llama y

cundo le llaman
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
Garca-Snchez P. et al. Plataforma de integracin de

servicios para la administracin basada en BPEL y SOA.


Actas de las III Jornadas en Servicios Web y SOA
(JSWEB), 2007
http://programadorphp.org

También podría gustarte