Você está na página 1de 72

BPEL: Construindo um padro Business Processo baseado em Web Services

Agenda
O que BPEL? Orquestrao x Coreografia Vocabulrio BPEL
Activities Partners Variables Flow, Link, Correlation

Escopo BPEL BPEL e Java technology Open issues of BPEL

O que BPEL?

Web Services encontra Business Process


Web Service 1 Web Service 4

Web Service 2

Web Service 5

Web Service 3

Web Service n

Necessidade de composio de Web Services


Aplicaes de negcio tm que interoperar e integrar; A resposta moderna para o desafio de integrao, a Arquitetura Orientado Servio e a tecnologia orientada servio. Diferentes aplicaes de negcio expondo suas funcionalidades atravs de servios web. Desenvolver os servios web e expor as funcionalidades no suficiente. Necessita-se um meio de compor estas funcionalidade na ordem correta (Business Process)

Examplo Problema
dit Cre ck Che

di t Cre onse sp Re

Credit Service

Purchas Invoic e e Order

Consolidate Results

Client

PO Service

Re Inv ser ve ent ory


Inv Res entor pon y se

Inventory Service

Desafio Business Process


Coordenar comunicao assncrona entre os servios Correlacionar troca de mensagens entre as partes Implementar ativdades de processamento em paralelo Implementar lgica de compensao (Undo operations) ...
Manipulao/transforma o de dados entre parceiros de interaes Suporte para atividades de transaes de negcios de longa durao Manipular excees Necessidade de modelo universal de troca Necessidade de troca de mensagem ...

Histria Recente Business Process Standards


BPML
(Intallio et al)

BPSS
(ebXML)

WSCI
(Sun et al)

WS-Choreography
(W3C)

2000/05

2001/03

2001/05

2001/06

2002/03

2002/06

2002/08

2003/01

2003/04

XLang
(Microsoft)

WSFL
(IBM)

WSCL
(HP)

BPEL4WS 1.0
(IBM, Microsoft)

BPEL4WS 1.1
(OASIS)

2004/12 WS-CDL

O que BPEL?

Servio Web (WS) Linguagem de Execuo de Processos de Negcio (BPEL)


Verso 1.0 liberado ple IBM, Microsoft e BEA ago/02
WS-Coordination, WS-Transaction

Verso 1.1 submetido para OASIS abr/03 (http://www.oasis-open.org) Organization for the Advancement of Structured Information Standards Verso 2.0 aprovado abr/2007 (http://bpel.xml.org/aboutbpel) Linguagem XML para descrever processos de negcio baseado em servio WEB.
Convergncia de XLANG (Microsoft) e WSFL (IBM)

Consenso de Indstria
IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel

BPEL Concerta WSDL


WSDL: conjunto de operaes desordenadas
Operao a troca de mensagens

Necessita de regras para ordenar

BPEL um Web Service Sequencing Language


Processos definem um fluxograma de coversao
Conversao consiste na descrio de troca de mensagens WSDL.

A instncia de um processo um fluxograma em particular


Sistema de execuo pode suportar mltiplos conversaes concorrentes.

BPEL um linguagem orientada a Grficos


A natureza baseada em XML dos processos XML permite que a lgica dos processos seja editada por ferramentas visuais. Ns Atividades (Activity Nodes) Representa a troca de mensagens, operaes internas, pontos de deciso

Arcos (Arcs)
Ordem de execuo Restries em processos concorrentes

Grfico direto acclico (Directed acyclic graph)


Parecido com Java Separa erros e manipulao de compensao

Exemplo

Fonte: Collaxa BPEL Designer

BPEL um Web Service Composition Language


Consome servios (invoke) Cria servios (receive/reply) Agrega servios densos (fine-grained services) Cria servios simples (coarser-grained service)

Proposta do WS-BPEL
Processos de negcios portvel
Construir uma infraestrutura interopervel de Servios Web.

Linguagem abrangente de indstria para os processos de negcio


Conjunto de habilidades comuns e linguagens para os desenvolvedores

Mecanismo de escolha de processos


Padres permitem uma oferta competitiva

Uso do BPEL
Dentro da Corporao (Intranet)
Padronizar integrao das aplicaes corporativas e estender a integrao de sistemas isolados

Entre as corporaes (Internet)


Possibilitar integrao fcil e eficiente entre os parceiros

BPEL Extenso Web Services


BPEL uma tecnologia chave em ambientes onde as funcionalidades j esto ou sero disponibilizados como servios web. Com o aumento do uso de servios web a importncia do BPEL crescer.

BPEL Process como Web Service

Orquestrao x Coreografia

Orquestrao x Coreografia
Orquestrao
um processo de negcio executvel descrevendo um fluxo do ponto de vista de controle (Workflow) BPEL manipula Orquestrao

Coreografia (WSDL)
A troca de mensagem pblica e observvel Regras de interao Agregao entre dois ou mais processos de negcio WSDL manipula coreografia. CDL4WS

Exemplo Business Process: Ordem de Compra


Exemplo de Ordem de Compra
Requisio de Ordem de Compra Business A Reconhecimento da ordem de compra Resposta de Ordem de Compra Business B

Perspectiva da Coreografia
Public Process
Business A Send PO Business B Receive PO

Requisio da Ordem de Compra

Receive PO Ack

Reconhecimento da Ordem de Compra Resposta da Ordem de Compra

Send PO Ack

Receive PO Response

Send PO Response

Coreografia Observao pblica da troca de mensagem

Perspectiva da Orquestrao
Business A BPEL Workflow Transform From ERP Send PO Requisio da ordem de compra

Private Process

Receive PO Ack To ERP

Reconhecimento da ordem de compra

Transform

Receive PO Response

Resposta da ordem de compra

Orquestrao A execuo do processo de negcio

Orquestrao e Coreografia Juntas


Generate BPEL Template Business A BPEL Workflow Transform
Business A

Business Analyst Tool

Business B

Generate BPEL Template Business B BPEL Workflow

Send PO

PO Request PO Acknowledgement

Receive PO Send PO Ack Receive PO Response

Transform

Receive PO Ack Transform Receive PO Response

Transform

PO Response

Dois fluxo de trabalho (workflow) refletindo um tratado de negcio

BPEL - Padres
Choreography Orchestration WS-BPEL Transactions Business Processes

Management

WSReliability

WSSecurity UDDI WSDL SOAP XML

Coordination Context

Quality of Service Discovery Description Descriptio n Message Transport

HTTP,IIOP, JMS, SMTP

BPEL Depende de WSDL e Extenses


Service Implementation Definition Service Port

Binding Service Interface Definition Port types define Operations Message Type

BPEL Vocabulrio: Activities

BPEL Estrutura do Documento


<process> <! Definition and roles of process participants --> <partnerLinks> ... </partnerLinks> <!- Data/state used within the process --> <variables> ... </variables> <!- Properties that enable conversations --> <correlationSets> ... </correlationSets> <!- Exception handling --> <faultHandlers> ... </faultHandlers> <!- Error recovery undoing actions --> <compensationHandlers> ... </compensationHandlers> <!- Concurrent events with process itself --> <eventHandlers> ... </eventHandlers> <!- Business process flow --> (activities)* </process>

BPEL Activities
Um processo BPEL consiste em: Cada passo chamado de atividade (activity) Existem 2 tipos de atividades BPEL
Atividades Bsicas Atividades Estruturadas

BPEL Activities
Basic Activities <invoke> <receive> <reply> <assign> <throw> <wait> <empty> Structured Activities <sequence> <while> <pick> <flow> <scope> <compensate> <switch> <link>

Basic Activities
Invoke
Permite que os processos ativem uma operao unidirecional ou de request/response em um portType oferecido por um parceiro.

Receive
Permite que os processos executem um bloqueio de espera esperando uma mensagem chegar. Pode ser um instanciador de um processo.

Reply
Permite que os processos enviem uma mensagem em resposta a mensagem que recebido atravs de um <receive> A combinao de <receive> e um <reply> forma uma operao request-response em um WSDL portType para o processo.

Basic Activities
Assign
Pode ser utilizada para atualizar valores de variveis com novos valores

Throw
Gerar um erro/falta em um processo

Wait
Permite esperar por um perodo ou at passar um tempo

Empty
Permite inserir uma operao vazia em um processo. til para sincronizar atividades concorrentes.

Structured Activities
Sequence
Permite definir uma coleo de atividades para serem executados seqencialmente em uma ordem lxica.

While
Permite indicar que uma atividade seja repetida at que um critrio seja alcanado.

Pick
Permite bloquear e esperar uma mensagem chegar ou disparar um alarme para avisar Quando algum gatilho for ativado, a atividade associada executada e o pick completa.

Structured Activities
Flow
Permite especificar um ou mais atividades para executar concorrentemente. Ligaes podem ser utilizadas em atividades concorrentes para definir estruturas de controles arbitrrias.

Scope
Permite definir uma atividade aninhada com uma varivel associada, manipulador de erros, excees e compensaes.

Compensate
Utilizada para chamar compensao dentro do escopo que foi completada normalmente. Esta construo pode ser chamada somente dentro de um manipulador de excees ou outro compensation handler

Structured Activities
Switch
Permite um comportamento condicional em um padro que acontece com freqncia. A atividade consiste em uma lista ordenada de um ou mais condies definida com elementos case, seguido por um otherwise.

While
Permite repetir uma interao de activityAllows

Basic Activities combinado com Structured Activities


Receive <PO> <sequence >

Invoke <InventoryService>

Invoke <CreditService>

<flow >

Reply <Invoice>

</sequence >

Exemplo Activities in BPEL


<sequence> <receive partnerLink=customer portType=lns:purchaseOrderPT" operation=sendPurchaseOrder variable=PO createInstance="yes" /> <flow> <invoke partnerLink=inventoryChecker portType=lns:inventoryPT operation="checkINV" inputVariable="inventoryRequest" outputVariable="inventoryResponse" /> <invoke partnerLink="creditChecker" portType=lns:creditPT" operation="checkCRED" inputVariable="creditRequest" outputVariable="creditResponse" /> </flow> ... <reply partnerLink=customer portType=lns:purchaseOrderPT operation=sendPurchaseOrder variable=invoice"/> </sequence>

Wait
<wait standard-attributes> standard-elements ( <for expressionLanguage="anyURI"?>duration-expr</for> | <until expressionLanguage="anyURI"?>deadline-expr</until> ) </wait>

Switch
<switch standard-attributes> standard-elements <case>+ <condition expressionLanguage="anyURI"?> ... bool-expr ... </condition> activity </case> <otherwise>? activity </otherwise> </switch>

While
<while standard-attributes> standard-elements <condition expressionLanguage="anyURI"?> ... bool-expr ... </condition> activity </while>

Switch
<switch standard-attributes> standard-elements <case>+ <condition expressionLanguage="anyURI"?> ... bool-expr ... </condition> activity </case> <otherwise>? activity </otherwise> </switch>

BPEL Vobulrio: Partner Links

Duas formas para BPEL Process interagir com Web Services externos
O processo BPEL chama operaes de outros servios WEB
Representados por um partnerLink

O processo BPEL recebe chamadas de clientes


Representados por um cliente partnerLink

Estes clientes de processos BPEL parecem outros servios web. Quando se define um processo BPEL define-se um novo servio web que uma composio de servios existentes.

BPEL as a Web Service

Exemplo
dit t eo Cre dinse r C sp c k Re he C

Credit Service

Purchas Invoic e e Order

Consoli date Results

Client

PO Service

Inv en Re Rese r spo torv y Inv n entse e ory

Inventory Service

Partner Links
Os servios com os quais um processo interage so modelados como um partner link. Cada partner link caracterizado por um partnerLinkType As regras do processo indicado por um atributo myRole e a regra (ROLE) do parceiro indicado pelo atributo partnerRole.
(the process)

Partner 1

Partner 2

Partner 3

Purchas e Service

Credit Service

Inventor y Service

Partner Link
<partnerLinks> <partnerLink name="ncname" partnerLinkType="qname" myRole="ncname"? partnerRole="ncname"?>+ </partnerLink> </partnerLinks>

Partner Link
<?xml version="1.0" encoding="utf-8"?> <process name="insuranceSelectionProcess" targetNamespace="http://packtpub.com/bpel/example/" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:ins="http://packtpub.com/bpel/insurance/" xmlns:com="http://packtpub.com/bpel/company/" > <partnerLinks> <partnerLink name="client" partnerLinkType="com:selectionLT" myRole="insuranceSelectionService"/> <partnerLink name="insuranceA" partnerLinkType="ins:insuranceLT" myRole="insuranceRequester" partnerRole="insuranceService"/> <partnerLink name="insuranceB" partnerLinkType="ins:insuranceLT" myRole="insuranceRequester" partnerRole="insuranceService"/> ... </partnerLinks>

Partner Link Type


<partnerLinkType name="BuyerSellerLink" xmlns="http://schemas.xmlsoap.org/ws/2004/03/partner-link/"> <role name="Buyer" portType="buy:BuyerPortType"/> <role name="Seller" portType="sell:SellerPortType"/> </partnerLinkType>

BPEL Vocabulary: Variables

Variables
Mensagens enviadas e recebidas de parceiros
Definido em tipos e mensagens WSDL

Process
Customer Service <variable> <activity> <activity> <variable>

<A>
Persist/ Retrieve

<B>
Persist/ Retrieve

Customer Service

Persist

Persist/ Retrieve

Variables in BPEL
BPEL : <variables>
<variable name=PO messageType=lns:POMessage/> <variable name=Invoice messageType=lns:InvMessage/> <variable name=POFault messageType=lns:orderFaultType/> </variables>

Purchase Process WSDL:


<message name=POMessage> <part name=customerInfo type=sns:customerInfo/> <part name=purchaseOrder type=sns:purchaseOrder/> </message> <message name="InvMessage"> <part name=IVC type=sns:Invoice/> </message> <message name=orderFaultType> <part name=problemInfo type=xsd:string/> </message>

Como acontece a manipulao de dados?


Utilizando <assign> e <copy>, os dados podem ser copiados e manipulados entre variveis; <copy> suporta consultas Xpath para selecionar um dado.
<assign> <copy> <from variable="PO" part="customerInfo"/> <to variable=creditRequest part="customerInfo"/> </copy> </assign>

BPEL Vocabulary: Flow, Links, Corelation

Links Control Flow


<flow> <links> <link name="XtoY"/> <link name="CtoD"/> </links> <sequence name="X"> <source linkName="XtoY"/> <invoke name="A" .../> <invoke name="B" .../> </sequence> <sequence name"Y"> <target linkName="XtoY"/> <receive name="C"/> <source linkName="CtoD"/> </receive> <invoke name="E" .../> </sequence> <invoke partnerLink="D"> <target linkName="CtoD"/> </invoke> </flow>

<flow> <X> <A> <B> <Y> <C> <E> </flow>


<link CtoD> <link XtoY>

<D>

Correlation / Correlao
PO initiate=yes Correlation: <PO_CustId = 10> <PO_OrdId = 100> initiate=yes

Customer
SendPurchase ProcessPurchaseResponse

Seller
AsynchPurchase

POResponse Correlations: <PO_CustId = 10> <PO_OrdId = 100> <Inv_VendId = 20> <Inv_InvId = 200>

AsynchPurchaseResponse

initiate=no initiate=yes

initiate=no pattern=out initiate=yes pattern=out

Correlao in BPEL
<correlationSets> <correlationSet name="POCorr" properties="cor:custId cor:ordId"/> <correlationSet name="InvoiceCorr" properties="cor:vendId cor:invId"/> </correlationSets> ... <receive partnerLink=Customer portType="SP:PurchaseOrderPT" operation="AsynchPurchase" variable="PO"> <correlations> <correlation set="POCorr" initiate="yes"> </correlations> </receive> ... <invoke partnerLink=Customer portType="SP:CustomerPT" operation=ProcessPurchaseResponse" inputVariable="POResponse"> <correlations> <correlation set="POCorr" initiate="no" pattern="out"> <correlation set="InvoiceCorr" initiate="yes" pattern="out"> </correlations> </invoke> ...

Escopo do BPEL

Escopo em BPEL
Prov um contexto compartilhado para um conjunto de atividades Pode conter
Manipuladores de Erros Manipuladores de Eventos Variveis de manipulao de compensao Conjunto de correlaes

<scope
...>

variableAccessSerializable="yes|no <variables> </variables> <correlationSets>? ... </correlationSets> <faultHandlers> </faultHandlers> <compensationHandler>? ... </compensationHandler> <eventHandlers> </eventHandlers> (activities)*

Pode serializar variveis de acesso concorrente

</scope>

Transaes de Longa Durao e Compensao (UNDO)

<scope> Charge Hold Fee

CreditService CheckCredit ChargeHoldFee CancelHoldFee

Undo

InventoryService Reserve Inventory ReserveInventory CancelReserveInv

Undo

</scope>

Manipulao de Compensao BPEL


<scope> <compensationHandler> <invoke partnerLink="Seller" portType="SP:Purchasing" operation="CancelPurchase" inputVariable="getResponse" outputVariable="getConfirmation"> <correlations> <correlation set="PurchaseOrder" pattern="out"/> </correlations> </invoke> </compensationHandler> <invoke partnerLink="Seller" portType="SP:Purchasing" operation="SyncPurchase" inputVariable="sendPO" outputVariable="getResponse"> <correlations> <correlation set="PurchaseOrder" initiate=yes pattern="out"/> </correlations> </invoke> </scope>

Exception Handling in BPEL


<faultHandlers> catch exception Based on WSDL port defining fault <faultHandlers> can perform activities upon invocation
<faultHandlers> <catch faultName="lns:cannotCompleteOrder" faultVariable="POFault"> <reply partnerLink="customer" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="POFault" faultName="cannotCompleteOrder"/> </catch> </faultHandlers>

Como isso ocorre?


Process WSDL BPEL Scenario 1. 2. 3. Compile Package Deploy Compiled BPEL Scenario

Partner WSDL 1

...
Partner WSDL n

<process> <partners> <variables> <sequence> <flow> </sequence> </process>

BPEL Runtime

Application Server

BPEL and Java Technology

BPEL e Java
BPEL uma linguagem de programao genrica como Java, mas no to poderosa como Java.
Ordem exata como os participantes dos servios web devem ser chamados; Comportamento condicional, Laos, Variveis ...

simples e adapta-se melhor para definio de processos de negcio; BPEL no veio para tomar o lugar de Java, mas como um complemento para Java.

O que aconteceu com Java?


JSR 207 Processo de Definio de Linguagem para Java Fazer com que os processos de negcio sejam natural para os programadores Java.
Process Definition for Java Servlet
Transactions Messaging Security

EJB
Naming Pooling

Application Server

O que aconteceu com J2EE?


JSR 208 Java Business Integration Fazer com os processos de negcio sejam cidados de primeira classe nos containers J2EE JSR 208
BPEL Engine Transform Engine Routing Engine ...

Machine SPI

Normalized Message Bus


Binding Framework EDI JCA Web Services JMS

...

JSR 208 Binding SPI

Based on JSR 208 Session at JavaOne

Ferramentas Necessrias
IDE construir seus Web services WSDL authoring modelar sua interface Schema authoring modelar mensagens Process modeling modelar orquestrao Empacotamento e implantao Debugging Monitoramento Anlise

Consideraes BPEL

Algumas solues
W3C: WS-Choreography Spec: WS-Transaction Spec: WS-Coordination Spec: WS-Composite Application Framework OASIS: WS-Reliability Spec: ReliableMessaging Spec: WS-Addressing OASIS: WS-Security

Alguns pensamentos
Portabilidade de processos de negcio?
Java / J2EE portvel atravs de servidores de aplicao BPEL portvel independente de Java

Linguagem de programao em XML?


Fornecedores de todos os tamanhos esto ocupados projetando modelos

Você também pode gostar