Escolar Documentos
Profissional Documentos
Cultura Documentos
Agenda
O que BPEL? Orquestrao x Coreografia Vocabulrio BPEL
Activities Partners Variables Flow, Link, Correlation
O que BPEL?
Web Service 2
Web Service 5
Web Service 3
Web Service n
Examplo Problema
dit Cre ck Che
di t Cre onse sp Re
Credit Service
Consolidate Results
Client
PO Service
Inventory Service
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?
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
Arcos (Arcs)
Ordem de execuo Restries em processos concorrentes
Exemplo
Proposta do WS-BPEL
Processos de negcios portvel
Construir uma infraestrutura interopervel de Servios Web.
Uso do BPEL
Dentro da Corporao (Intranet)
Padronizar integrao das aplicaes corporativas e estender a integrao de sistemas isolados
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
Perspectiva da Coreografia
Public Process
Business A Send PO Business B Receive PO
Receive PO Ack
Send PO Ack
Receive PO Response
Send PO Response
Perspectiva da Orquestrao
Business A BPEL Workflow Transform From ERP Send PO Requisio da ordem de compra
Private Process
Transform
Receive PO Response
Business B
Send PO
PO Request PO Acknowledgement
Transform
Transform
PO Response
BPEL - Padres
Choreography Orchestration WS-BPEL Transactions Business Processes
Management
WSReliability
Coordination Context
Binding Service Interface Definition Port types define Operations Message Type
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
Invoke <InventoryService>
Invoke <CreditService>
<flow >
Reply <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>
Duas formas para BPEL Process interagir com Web Services externos
O processo BPEL chama operaes de outros servios WEB
Representados por um 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.
Exemplo
dit t eo Cre dinse r C sp c k Re he C
Credit Service
Client
PO Service
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>
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>
<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
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)*
</scope>
Undo
Undo
</scope>
Partner WSDL 1
...
Partner WSDL n
BPEL Runtime
Application Server
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.
EJB
Naming Pooling
Application Server
Machine SPI
...
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