bpel: construindo um padrão business processo baseado em web services

Post on 19-Jan-2016

32 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

BPEL: Construindo um padrão Business Processo baseado em Web Services. Agenda. O que é BPEL? Orquestração x Coreografia Vocabulário BPEL Activities Partners Variables Flow, Link, Correlation Escopo BPEL BPEL e Java technology Open issues of BPEL. O que é BPEL?. Web Service 1. - PowerPoint PPT Presentation

TRANSCRIPT

BPEL: Construindo um padrãoBusiness Processo baseado em Web Services

Agenda

O que é BPEL? Orquestração x Coreografia Vocabulário 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 2

Web Service 3

Web Service 4

Web Service 5

Web Service n

Necessidade de composição de Web Services

Aplicações de negócio têm que interoperar e integrar;

A resposta moderna para o desafio de integração, é a Arquitetura Orientado à Serviço e a tecnologia orientada à serviço.

Diferentes aplicações de negócio expondo suas funcionalidades através de serviços web.

Desenvolver os serviços web e expor as funcionalidades não é suficiente. Necessita-se um meio de compor estas funcionalidade na ordem correta (Business Process)

Examplo Problema

ClientPO Service

Credit Service

Inventory Service

Purchase

Order

Credit

Check

ReserveInventory

Credit

Response

InventoryResponse

Invoice

ConsolidateResults

Desafio Business Process

Coordenar comunicação assíncrona entre os serviços

Correlacionar troca de mensagens entre as partes

Implementar ativdades de processamento em paralelo

Implementar lógica de compensação (Undo operations)

. . .

Manipulação/transformação de dados entre parceiros de interações

Suporte para atividades de transações de negócios de longa duração

Manipular exceções Necessidade de modelo

universal de troca Necessidade de troca de

mensagem . . .

História Recente Business Process Standards

2000/05

XLang(Microsoft)

2001/03

BPML(Intallio et al)

2001/05

WSFL(IBM)

2001/06

BPSS(ebXML)

2002/03

BPEL4WS 1.0 (IBM, Microsoft)

BPEL4WS 1.1(OASIS)

2002/06 2003/01

WS-Choreography(W3C)

2003/04

WSCI(Sun et al)

WSCL(HP)

2002/08

2004/12 WS-CDL

O que é BPEL?

Serviço Web (WS) Linguagem de Execução de Processos de Negócio (BPEL) • Versão 1.0 liberado ple IBM, Microsoft e BEA ago/02

– WS-Coordination, WS-Transaction

• Versão 1.1 submetido para OASIS abr/03 (http://www.oasis-open.org)

– Organization for the Advancement of Structured Information Standards

• Versão 2.0 aprovado abr/2007 (http://bpel.xml.org/about-bpel)

• Linguagem XML para descrever processos de negócio baseado em serviço WEB.

• Convergência de XLANG (Microsoft) e WSFL (IBM)

• Consenso de Indústria• IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel …

BPEL “Concerta” WSDL

WSDL: conjunto de operações desordenadas• Operação é a troca de mensagens

Necessita de regras para ordenar

BPEL é um Web Service Sequencing Language Processos definem um fluxograma de

“coversação”• Conversação consiste na descrição de troca de

mensagens WSDL.

A instância de um processo é um fluxograma em particular

• Sistema de execução pode suportar múltiplos conversações concorrentes.

BPEL é um linguagem orientada a Gráficos A natureza baseada em XML dos processos XML

permite que a lógica dos processos seja editada por ferramentas visuais.

Nós Atividades (Activity Nodes)• Representa a troca de mensagens, operações

internas, pontos de decisão

Arcos (Arcs)

• Ordem de execução• Restrições em processos concorrentes

Gráfico direto acíclico (Directed acyclic graph)

• Parecido com Java Separa erros e manipulação de compensação

Exemplo

Fonte: Collaxa BPEL Designer

BPEL é um Web Service Composition Language Consome serviços (invoke) Cria serviços (receive/reply) Agrega serviços densos (fine-grained services) Cria serviços simples (coarser-grained service)

Proposta do WS-BPEL

Processos de negócios portável– Construir uma infraestrutura interoperável de

Serviços Web.

Linguagem abrangente de indústria para os processos de negócio

– Conjunto de habilidades comuns e linguagens para os desenvolvedores

Mecanismo de escolha de processos– Padrões permitem uma oferta competitiva

Uso do BPEL

Dentro da Corporação (Intranet) Padronizar integração das aplicações corporativas

e estender a integração de sistemas isolados Entre as corporações (Internet)

Possibilitar integração fácil e eficiente entre os parceiros

BPEL Extensão Web Services

BPEL é uma tecnologia chave em ambientes onde as funcionalidades já estão ou serão disponibilizados como serviços web.

Com o aumento do uso de serviços web a importância do BPEL crescerá.

BPEL Process como Web Service

Orquestração x Coreografia

Orquestração x Coreografia

Orquestração É um processo de negócio executável descrevendo um

fluxo do ponto de vista de controle (Workflow) BPEL manipula Orquestração

Coreografia (WSDL) A troca de mensagem pública e observável Regras de interação Agregação entre dois ou mais processos de negócio WSDL manipula coreografia. CDL4WS

Exemplo Business Process: Ordem de Compra

Exemplo de Ordem de Compra

Requisição de Ordem de Compra

Reconhecimento da ordem de compra

Resposta de Ordem de Compra

Business

“A”

Business “B”

Perspectiva da Coreografia

Requisição da Ordem de Compra

Send PO

Receive PO Ack

Receive PO Response

Receive PO

Send PO Ack

Send PO Response

Reconhecimento da Ordem de Compra

Resposta da Ordem de Compra

Coreografia – Observação pública da troca de mensagem

Public Process

Business A

Business B

Perspectiva da Orquestração

Send PO

Receive PO Ack

Receive PO Response

Transform

Transform

From ERP

To ERP

Requisição da ordem de compra

Reconhecimento da ordem de compra

Resposta da ordem de compra

Orquestração – A execução do processo de negócio

Private Process

Business A BPEL Workflow

Orquestração e Coreografia Juntas

BusinessB

Business Analyst Tool

BusinessA

Send PO

Receive PO Ack

Receive PO Response

Transform

Transform

Business A BPEL Workflow

PO Request

PO Acknowledgement

PO Response

Generate BPEL

Template

Generate BPEL

Template

Receive PO

Send PO Ack

Receive PO Response

Transform

Transform

Business B BPEL Workflow

Dois fluxo de trabalho (workflow) refletindo um tratado de negócio

BPEL - Padrões

Description

HTTP,IIOP, JMS, SMTP Transport

XMLMessage

SOAP

WSDL

UDDI Discovery

Transactions

CoordinationWS-Security

WS-Reliability

Quality of

Service

Orchestration – WS-BPEL

BusinessProcesses

Context

Description

Man

agem

ent

Choreography

BPEL Depende de WSDL e Extensões

Service Implementation

Definition

Service Interface Definition

Service

Port

Binding

Port types define Operations

Message

Type

BPEL Vocabulário: 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 Básicas 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 operação 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 através de um <receive> A combinação de <receive> e um <reply> forma uma operação

request-response em um WSDL portType para o processo.

Basic Activities

Assign Pode ser utilizada para atualizar valores de variáveis com

novos valores

Throw Gerar um erro/falta em um processo

Wait Permite esperar por um período ou até passar um tempo

Empty Permite inserir uma operação vazia em um processo. É útil para sincronizar atividades concorrentes.

Structured Activities

Sequence Permite definir uma coleção de atividades para serem

executados seqüencialmente em uma ordem léxica.

While Permite indicar que uma atividade seja repetida até que

um critério seja alcançado.

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. Ligações podem ser utilizadas em atividades concorrentes para definir estruturas de controles arbitrárias.

Scope Permite definir uma atividade aninhada com uma variável

associada, manipulador de erros, exceções e compensações.

Compensate Utilizada para chamar compensação dentro do escopo que

foi completada normalmente. Esta construção pode ser chamada somente dentro de um

manipulador de exceções ou outro compensation handler

Structured Activities

Switch Permite um comportamento condicional em um padrão que

acontece com freqüência. A atividade consiste em uma lista ordenada de um ou mais

condições definida com elementos case, seguido por um otherwise.

While Permite repetir uma interação de activityAllows

Basic Activities combinado com Structured Activities

Invoke <InventoryService>

Invoke <CreditService>

Reply <Invoice>

Receive <PO>

<sequence>

<flow>

</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 Vobulário: Partner Links

Duas formas para BPEL Process interagir com Web Services externos O processo BPEL chama operações de outros

serviços WEB Representados por um partnerLink

O processo BPEL recebe chamadas de clientes Representados por um cliente partnerLink

Estes clientes de processos BPEL parecem outros serviços web.

Quando se define um processo BPEL define-se um novo serviço web que é uma composição de serviços existentes.

BPEL as a Web Service

Exemplo

ClientPO Service

Credit Service

Inventory Service

Purchase

Order

Credit

Check

ReserveInventory

Credit

Response

InventoryResponse

Invoice

Consolidate

Results

Partner Links Os serviços com os quais um processo

interage são 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.

CreditService

Partner 2

Inventory

Service

Partner 3

Partner 1(the process)

Purchase

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

CustomerService

Process

<A>

<variable> <activity>

<B>

<activity>

PersistPersist/Retrieve

CustomerService

Persist/Retrieve

Persist/Retrieve

<variable>

Variables in BPEL

<variables> <variable name=“PO” messageType=“lns:POMessage”/> <variable name=“Invoice” messageType=“lns:InvMessage”/> <variable name=“POFault” messageType=“lns:orderFaultType”/></variables>

<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>

Purchase Process WSDL:

BPEL:

Como acontece a manipulação de dados?

Utilizando <assign> e <copy>, os dados podem ser copiados e manipulados entre variáveis;

<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

<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>

</flow>

<Y>

<C>

<E>

<X>

<A>

<B>

<D>

<link CtoD>

Links – Control Flow

<link XtoY>

Correlation / Correlação

Customer

• SendPurchase

• ProcessPurchaseResponse

PO

Correlation:<PO_CustId = 10><PO_OrdId = 100>

POResponse

Correlations:<PO_CustId = 10><PO_OrdId = 100>

<Inv_VendId = 20><Inv_InvId = 200>

Seller

• AsynchPurchase

• AsynchPurchaseResponse

initiate=yes

initiate=yes pattern=out

initiate=no pattern=out

initiate=yes

initiate=yes

initiate=no

Correlação 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 Variáveis de

manipulação de compensação

Conjunto de correlações Pode serializar variáveis

de acesso concorrente

<scopevariableAccessSerializable="yes|no“ ...>

<variables></variables>

<correlationSets>? ... </correlationSets>

<faultHandlers></faultHandlers>

<compensationHandler>? ... </compensationHandler>

<eventHandlers></eventHandlers> (activities)*

</scope>

Transações de Longa Duração e Compensação (UNDO)

Undo

ReserveInventory

<scope>

</scope>

• ReserveInventory• CancelReserveInv

InventoryService

• CheckCredit• ChargeHoldFee• CancelHoldFee

CreditService

Undo

ChargeHold Fee

Manipulação de Compensação 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?

PartnerWSDL 1

ProcessWSDL

PartnerWSDL n

. . .

BPEL Scenario

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

1. Compile2. Package3. Deploy

ApplicationServer

BPEL Runtime

CompiledBPEL Scenario

BPEL and Java Technology

BPEL e Java

BPEL é uma linguagem de programação genérica como Java, mas não é tão poderosa como Java.

Ordem exata como os participantes dos serviços web devem ser chamados;

Comportamento condicional, Laços, Variáveis ... É simples e adapta-se melhor para definição de

processos de negócio; BPEL não veio para tomar o lugar de Java, mas

como um complemento para Java.

O que aconteceu com Java?

JSR 207 – Processo de Definição de Linguagem para Java

Fazer com que os processos de negócio sejam natural para os programadores Java.

MessagingTransactions PoolingNamingSecurity

Application Server

Servlet EJB

Process Definition for Java

O que aconteceu com J2EE?

JSR 208 – Java Business Integration Fazer com os processos de negócio sejam

cidadãos de primeira classe nos containers J2EE

Based on JSR 208 Session at JavaOne 2003

. . .RoutingEngine

TransformEngine

BPELEngine

NormalizedMessage

Bus

JSR 208Binding SPI

EDI JCAWeb

Services JMS . . .

Binding Framework

JSR 208Machine SPI

Ferramentas Necessárias

IDE – construir seus Web services WSDL authoring – modelar sua interface Schema authoring – modelar mensagens Process modeling – modelar orquestração Empacotamento e implantação Debugging Monitoramento Análise

Considerações BPEL

Algumas soluções

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 negócio? Java / J2EE é portável através de servidores de

aplicação BPEL é portável independente de Java

Linguagem de programação em XML? Fornecedores de todos os tamanhos estão

ocupados projetando modelos

top related