Você está na página 1de 130

ORQUESTRAO E COREOGRAFIAS DE

SERVIOS WEB
Emlio Francesquini e Fabio Kon
IME - USP
{emilio, fabio.kon}@ime.usp.br
Congresso Brasileiro de Software
Salvador, 27 de setembro de 2010
1
Segunda-feira, logo pela manh...
Marzullo, 2009
2
SERVIOS - INTUIO
Um servio um tipo de relacionamento (contrato) entre um provedor e
um consumidor, sendo que esse provedor se compromete em realizar
determinadas tarefas com resultados pr-estabelecidos para um consumidor,
e que, por sua vez, se compromete a usar o servio da forma contratada.
Zhang, 2007 3
SERVIOS - DEFINIO

O W3C dene um web service como:


"A Web service is a software system designed to support interoperable machine-to-
machine interaction over a network. It has an interface described in a machine-
processable format (specically WSDL). Other systems interact with the Web service in
a manner prescribed by its description using SOAP-messages, typically conveyed using
HTTP with an XML serialization in conjunction with other Web-related standards.
4
NA WEB NO FALTAM EXEMPLOS...
RSS
Google Calendar (CalDAV sobre HTTP) sincronizvel com o iCal, por exemplo
Amazon Web Services (SOAP ou REST sobre HTTP)
EC2
S3
SimpleDB
...
5
ROTEIRO
Servios Web - Conceitos gerais
XML/RPC e SOAP
REST
Orquestrao
Coreograas
Desaos de Pesquisa
6
PRECURSORES
RPC
CORBA
DCOM
Java RMI
7
WEB SERVICES
Um dos usos mais comuns de Web Services tem sido para a integrao de sistemas
substituindo
Troca de arquivos (FTP, diretrio compartilhado, ....)
Tabelas em BD
TCP/IP
CORBA, JRMI, RPC...
8
WEB SERVICES - VANTAGENS
Interface simples de ser implementada
Qualquer linguagem que tenha possibilidade de utilizar soquetes TCP j est
virtualmente apta a utilizar um web service
Por ser sobre HTTP mais provvel que seja capaz de passar por rewalls, proxies, ...
o padro de fato do mercado
Baixo acoplamento e possibilidade de evoluo da interface mantendo compatibilidade
com verses anteriores
9
WEB SERVICES - DESVANTAGENS
Desempenho
H uma grande disparidade entre o padro especicado e do padro de fato
Qualquer implementao que faa algo a mais que do que as tarefas bsicas acaba
oferecendo algumas surpresas no momento da integrao com outros sistemas
10
WEB SERVICES
As maneiras mais comuns para fazer acesso aos web services so:
XML/RPC
SOAP (Simple Object Access Protocol)
REST (REpresentational State Transfer), tambm chamados de RESTful web services
A comunicao, na maior parte dos casos, feita utilizando XML sobre HTTP
11
XML/RPC
uma forma de se fazer RPC (chamadas remotas de procedimentos) atravs da Internet
Usa
HTTP como protocolo de transporte
XML como linguagem de codicao (marshalling)
1 implementao:
UserLand Software, 1998.
Dave Winer
Serviu de inspirao para o protocolo SOAP que teve apoio da Microsoft
12
IDEIA DO XML/RPC
13
SOAP
Protocolo padro para interoperabilidade de sistemas heterogneos.
Criado por Dave Winer da UserLand Software em colaborao com Don Box, Bob
Atkinson, and Mohsen Al-Ghosein na Microsoft.
Desde 2003, um protocolo padro da W3C.
No incio, a sigla signicava Simple Object Access Protocol
Depois, decidiu-se que a sigla no signica nada :-)
14
A ESPECIFICAO DE SOAP
Dene 4 elementos:
O modelo de processamento - regras para processamento das mensagens
Modelo de extensibilidade - conceitos de funcionalidades extras (segurana,
transaes,...) e mdulos SOAP
Protocolo de transporte - regras exigidas do protocolo usado para trocar
mensagens SOAP (normalmente HTTP mas tambm SMTP, HTTPS, etc.)
A estrutura das mensagens SOAP
15
FORMATO DAS MENSAGENS
16
WSDL
As interfaces em SOAP so denidas atravs da WSDL Web Service Denition
Language
WSDL um documento XML que traz operaes, parmetros, retornos, excees e
pontos de acesso
17
ELEMENTOS DA WSDL

Types

Denies de tipos de dados

Descreve as mensagens trocadas

Utiliza o formato padro W3C XML Schema

Messages

Denies tipadas dos dados sendo trocados

Port type

Coleo de operaes

Denio de um servio
18
EXEMPLO DE WSDL - HELLO WORLD
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://hello/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://hello/"
name="HelloWorldService">
<types>
<xsd:schema>
<xsd:import namespace="http://hello/"
schemaLocation="http://localhost:8080/hello?xsd=1"></xsd:import>
</xsd:schema>
</types>
<message name="sayHelloTo">
<part name="parameter" element="tns:sayHelloTo"></part>
</message>
<message name="sayHelloToResponse">
<part name="parameter" element="tns:sayHelloToResponse"></part>
</message>
<portType name="HelloWorld">
<operation name="sayHelloTo">
<input message="tns:sayHelloTo"></input>
<output message="tns:sayHelloToResponse"></output>
</operation>
</portType> 19
ELEMENTOS DA WSDL
Binding
Protocolo de comunicao e formato dos casos (codicao) para um port type
especco
Exemplos de protocolo: SOAP 1.1 sobre HTTP ou sobre SMTP
Exemplos de codicao: SOAP ou RDF
Port
Dene o endereo para comunicao (ex. URL para HTTP ou e-mail para SMTP)
Service
Um conjunto de ports relacionados entre si
20
EXEMPLO DE WSDL - HELLO WORLD
<binding name="HelloWorldPortBinding" type="tns:HelloWorld">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"></soap:binding>
<operation name="sayHelloTo">
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
</operation>
</binding>
<service name="HelloWorldService">
<port name="HelloWorldPort" binding="tns:HelloWorldPortBinding">
<soap:address location="http://localhost:8080/hello"></soap:address>
</port>
</service>
</definitions> 21
EXEMPLO DE REQUISIO SOAP
22
EXEMPLO DE RESPOSTA SOAP
23
PONTOS FORTES E FRACOS
!Baseado em protocolos e formatos largamente utilizados (XML, HTTP, etc.).
!Fcil integrao com servidores Web.
!Usa portas normalmente abertas em rewalls (gambiarra que deu certo).
x Mensagens grandes demais
x Processamento muito lento no cliente e no servidor
x Largura de banda usada muito grande
x Extremamente ineciente se comparado a protocolos binrios como CORBA
24
EXEMPLO EM JAVA (JAX-WS)
@WebService
public class HelloWorld {
@WebMethod
public String sayHelloTo(String name) {
return "Hello " + name;
}

public static void main(String[] args) {
HelloWorld service = new HelloWorld();
Endpoint endpoint = Endpoint.create(service);
endpoint.publish("http://localhost:8080/hello");
}
}
25
EXEMPLO DE CLIENTE EM ERLANG
1> inets:start().
ok
2> Wsdl = yaws_soap_lib:initModel("http://localhost:8080/hello?wsdl").
{wsdl,[{operation,"HelloWorldService","HelloWorldPort",
"sayHelloTo","HelloWorldPortBinding",
"http://localhost:8080/hello",[]}],
...
3> yaws_soap_lib:call(Wsdl, "sayHelloTo", ["Machado de Assis"]).
{ok,undefined,
[{'p:sayHelloToResponse',[],"Hello Machado de Assis"}]}
4>
26
REST

REpresentational State Transfer

Servios que seguem essa linha so comumente chamados de


RESTful

Modelo apresentado na tese de doutoramento de


Roy T. Fielding (UC Irvine, 2000)
27
REST - PRINCPIOS
Atribuio de identicadores
Associao de recursos
Utilizao de mtodos padro
Multiplicidade de representaes
Comunicao sem manuteno de estado
28
REST - IDENTIFICADORES
Todas as abstraes do sistema merecem ser
identicadas
No apenas uma abstrao individualmente deve
ser identicada, mas qualquer conjunto destas
abstraes que faa sentido tambm pode ser
identicado por um id. Por exemplo:
Todas as latas de ervilha
Todas as pessoas que tem endereo em SP
29
REST - IDENTIFICADORES
Na web, o jeito mais natural de fazer tal identicao atravs de URIs
http://example.com/customers/1234
http://example.com/orders/2007/10/776654
http://example.com/orders/2007/11
http://example.com/products?color=green
Sem para!
Anos de prtica OO nos ensinaram a no expor os detalhes de implementao, ainda mais ids
do BD
A idia toda a de que os conceitos (recursos) que voc desejar expor so geralmente
muito mais abrangentes do que uma linha no BD
30
REST - ASSOCIAO - HATEOAS
HATEOAS - Hypermedia As The Engine Of Application State
Signica que tudo deve ser ligado. Considere o seguinte exemplo de uma resposta a
uma requisio de pesquisa por pedidos
<pedido ref='http://xyz.com/pedido/1234'>
<qtd>23</qtd>
<produto ref='http://abc.com/produtos/4554'/>
<cliente ref='http://jkl.com/clientes/7654'/>
</pedido>
31
REST - MTODOS PADRO

Pode-se imaginar que todo recurso algo


semelhante a
class Resource {
Resource(URI u);
Response get();
Response post(Request r);
Response put(Request r);
Response delete();
}
32
REST - MTODOS PADRO

GET Pega uma representao do recurso

PUT Cria ou atualiza, se j existir o


recurso, com as informaes passadas

DELETE Apaga o recurso

POST nica operao no idempotente.


Geralmente signica criao de um recurso
ou ativao de algum processamento
arbitrrio, logo tambm no seguro
33
REST - MTODOS PADRO
Essas restries devem ser respeitadas pelos servios RESTful
No entanto, na vida real, nem todas essas restries semnticas so respeitadas e
preciso avaliar cada caso de uso individualmente
Pode ser difcil imaginar que uma aplicao modelada de uma maneira OO possa ser
mapeada desta maneira
34
Tilkov, 2007
35
Tilkov, 2007
36
REST - MLTIPLAS REPRESENTAES
GET /clientes/1234 HTTP/1.1
Host: xyz.com
Accept: application/meucliente+xml
GET /clientes/1234 HTTP/1.1
Host: xyz.com
Accept: text/x-vcard

Possvel uso: uma mesma API que gera as


informaes em HTML para uma pgina ou em
um formato XML para ser usada por alguma
aplicao
37
REST COMUNICAO SEM
MANUTENO DE ESTADO

Depois de ver os princpios anteriores, ca claro como fazer isso

Ateno: Colocar na URI um ID de sesso no transforma seu web service em um RESTful

Vantagens

Diminuio da carga do servidor

Escalabilidade

Independncia da implementao do servidor

Independncia entre servidores


38
HTTP RESTFUL
Tambm tem sido chamado de WebAPI
Muito usado para fazer mashups
Um dos pilares para as pginas de contedo mais modernas
Faz a juno das informaes direto no cliente e no mais no servidor
39
REST
A especicao propriamente dita no diz nada quanto a HTTP
Tambm no especica o nmero de operaes, apenas determina que a interface deve
ser padro
No demais supor que REST e HTTP tenham se inuenciado mutuamente j que o
Fielding, criador e descritor do REST tambm tenha denido muitos dos padres HTTP
40
REST - EXEMPLOS
Twitter
Flickr
Google Search
Yahoo!
Geocoding
Maps
Music
...
41
REST - IMPLEMENTAO EM JAVA
JAX-RS
Criado para facilitar a implementao de servios REST em Java
Baseado em anotaes
Evita a tarefa um tanto entediante de fazer o processamento de URIs, XMLs, ...
42
REST - JAX-RS - SERVIO SIMPLES

http://exemplo.com/orders
Fonte: Burke 2008
43
REST - JAX-RS - LENDO OS PARMETROS
http:/exemplo.com/orders?size=50
Fonte: Burke 2008
44
REST - JAX-RS - COMPOSIO DE ENDEREOS

@Path

http://exemplo.com/orders/3333 mas no http://exemplo.com/orders/3333/entries

Possibilidade de se usar expresses regulares


Fonte: Burke 2008
45
REST - JAX-RS - CONTENT-TYPE

S ser chamado caso o cliente envie no pedido que ele aceita application/xml

O Firefox, por exemplo, envia como tipos aceitos:


Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Fonte: Burke 2008
46
REST - JAX-RS - NEGOCIAO DE CONTEDO
Fonte: Burke 2008
47
REST - JAX-RS - CODIFICAO DE
CONTEDO (MARSHALLING)
Fonte: Burke 2008
48
COMPOSIO DE SERVIOS
Servios bem construdos tm como principais caractersticas:
Baixo acoplamento
Reutilizao
Interoperabilidade
Localizvel (Discoverability)
So conceitos inter-relacionados
com 1 ou 2 satisfeitos, os demais vem naturalmente
49
COMPOSIO NO MUNDO REAL
Um caso de uso real tipicamente envolve
mais de um web service
ordem/interdependncia entre as requisies aos web services
tomadas de decises durante o uxo de trabalho com base nas informaes obtidas
at ento
lidar com indisponibilidade de servios
controle de transaes
...
50
COMPOSIO - EXEMPLO
Sistema de vendas
cadastro de clientes
controle de estoque
cobrana
Utilizado nos computadores das lojas
51
SOLUO 1
Escrevo cdigo na minha linguagem de programao favorita e embarco junto com o
cliente do meu sistema:
Acesso aos web services
Tratamento de excees
Deno o uxo de trabalho
52
SOLUO 2
Copio o cdigo e implanto junto com o site
Agora, site e cliente compartilham o cdigo com o uxo, regras, ...
53
PROBLEMAS
Os web services possivelmente so implementados nas mais diversas linguagens mas o uxo e as
informaes sobre a relao entre eles passaram a ser especcadas em uma s linguagem
Fica a cargo do programador
Paralelismo
Transao
Controle de falhas (ex. indisponibilidade de servios)
Mudanas nos web services, por menores que sejam, implicam atualizao dos clientes e
implantao de nova verso do site
Cliente/Site podem ter excesso de comunicao com o(s) servidor(es)
Limitao de dispositivos/Replicao de cdigo.
54
SOLUO 3
Cria-se um novo web service
contm todo o uxo e regras da composio dos servios
controla transaes paralelismo e tratamento de excees
Os clientes, os sites, os dispositivos, ... todos passam a utilizar este web service
diretamente
55
PORM, ALGUNS DOS PROBLEMAS PERMANECEM
Fluxo vinculado a uma linguagem de programao especca
Fica por conta do programador os controles de paralelismo, transaes, falhas, ...
A criao de uma nova composio exigiria ou
a replicao/utilizao de uma biblioteca comum para o controle de transaes,
threads, ...
escrever mais cdigo para a denio de relaes entre os WS numa linguagem de
programao especca
56
COMPOSIO DE SERVIOS WEB
Orquestrao
Centralizado
Coreograas
Distribudo
57
DIAGRAMA DE COMPOSIO NO MUNDO REAL
58
Cloud, 2009
ORQUESTRAO
BPEL - Business Process Execution Language
Surgiu em 2002 (BPEL4WS) num esforo conjunto de BEA (agora Oracle), IBM
(WSFL) e Microsoft (XLANG). Nas verses seguintes juntaram-se SAP e Siebel
Systems.
Em 2003 foi apresentado como um padro aberto ao OASIS (WS-BPEL)
XML com extenso .bpel
Comumente chamado apenas de BPEL quando a verso especca no importa
59
MOTIVAES PARA USAR BPEL

Padro de mercado

Disponibilidade de ferramentas (pagas e gratuitas) de edio e mecanismos de execuo de


uxos BPEL

Apache - ODE

Sun (agora Oracle) - OpenESB, NetBeans 6.X

Active Endpoints - The Active BPEL, ActiveBPEL Designer

Microsofts BizTalk

Oracle - BPEL Process Manager

Portabilidade entre diferentes mecanismos de execuo*


60
DIGRESSO: BPMN
BPMN - Business Process Management Notation
Padro publicado pelo OMG (Object Management Group)
Permite analistas e arquitetos desenharem uxos de negcio (alto nvel)
Dirigido s pessoas ligadas ao negcio enquanto BPEL mais dirigido aos tcnicos
Servem normalmente como representaes de como as coisas funcionam, no entanto,
existem ferramentas que a partir de um documento BPMN so capazes de gerar um
documento BPEL
A maneira pela qual esse mapeamento feito est descrita no padro BPMN
61
BPEL
62
Shin, 2010
ESTRUTURA DO ARQUIVO BPEL
63
<process ...>
<!- Definies dos papis dos processos participantes -->
<partnerLinks>...</partnerLinks>
<!- Variveis utilizadas pelo processo -->
<variables>...</variables>
<!- Propriedades para permitir conversaes -->
<correlationSets>...</correlationSets>
<!- Recuperao de erros -->
<compensationHandlers>...</compensationHandlers>
<!-Eventos concorrentes com o prprio processo -->
<eventHandlers>...</eventHandlers>
<!- Cdigo do fluxo de negcio -->
(atividades)
</process>
ATIVIDADES DA BPEL
Bsicas

<invoke>

<receive>

<reply>

<assign>

<throw>

<wait>

<empty>

<exit>
Estruturadas

<if>

<while>

<repeatUntil>

<foreach>

<pick>

<flow>

<sequence>

<scope>
64
BPEL - ATIVIDADES BSICAS
<invoke>
Para invocar uma operao em um portType oferecido por um partner
<receive>
Espera pelo recebimento de uma mensagem. Geralmente o ponto de entrada para o
uxo
<reply>
Utilizado para enviar uma mensagem como resposta ao recebimento de uma
mensagem atravs do <receive>
A combinao <receive>/<reply> cria uma operao requisio/resposta no
portType da WSDL do processo 65
BPEL - ATIVIDADES ESTRUTURADAS

<sequence>
Executa as atividades contidas em ordem

<flow>
Executa as atividades contidas em paralelo

<if>
Execuo condicional das atividades

<scope>
Agrupa diversas atividades em um nico escopo
66
67
Shin, 2010
68
BPEL - EXEMPLO SNCRONO
<?xml version="1.0" encoding="UTF-8"?>
<process name="SynchronousSample" ...>
<import namespace="http://SynchronousSample"
location="SynchronousSample.xsd"
importType="http://www.w3.org/2001/XMLSchema"/>
<import namespace="http://SynchronousSample"
location="SynchronousSample.wsdl"
importType="http://schemas.xmlsoap.org/wsdl/"/>
69
BPEL - EXEMPLO SNCRONO
<partnerLinks>
<partnerLink
name="SynchronousSample"
partnerLinkType="ns1:partnerlinktype1"
myRole="partnerlinktyperole1">
</partnerLink>
</partnerLinks>
<variables>
<variable name="outputVar"
messageType="ns1:responseMessage"/>
<variable name="inputVar"
messageType="ns1:requestMessage"/>
</variables>
70
BPEL - EXEMPLO SNCRONO
<sequence>
<receive name="start" partnerLink="SynchronousSample" operation="operation1"
portType="ns1:portType1" variable="inputVar" createInstance="yes"/>
<assign name="Assign1">
<copy>
<from>concat('Hello ', $inputVar.inputType/ns2:paramA, '!!!')</from>
<to>$outputVar.resultType/ns2:paramA</to>
</copy>
</assign>

<reply name="end" partnerLink="SynchronousSample" operation="operation1"
portType="ns1:portType1" variable="outputVar">
</reply>

</sequence>
</process>
71
BPEL - EXEMPLO SNCRONO
72
BPEL - EXEMPLO SNCRONO
73
BPEL - EXEMPLO ASSNCRONO
74
BPEL - EXEMPLO ASSNCRONO
<sequence>
<receive name="start" partnerLink="partnerLinkA
portType="wsdlNS:MyPortType"
operation="asyncOperation" variable="inputVar"
createInstance="yes"/>
<assign name="assign">
<copy>
<from variable="inputVar" part="inputType"/>
<to variable="outputVar" part="resultType"/>
</copy>
</assign>

<invoke name="end" partnerLink="partnerLinkA
portType="wsdlNS:MyCallbackPortType"
operation="onResult" inputVariable="outputVar"/>
</sequence>
75
BPEL - FAZENDO ACESSO A UM SERVIO ASSNCRONO
76
<partnerLinks>
<partnerLink
name="partnerLinkA"
partnerLinkType="wsdlNS:AsynchronousClientPartnerLinkType"
myRole="AsynchronousClientProvider"/>
<partnerLink
name="partnerLinkB"
partnerLinkType="partnerNS:AsyncPartnerLinkType"
myRole="serviceRequestor"
partnerRole="serviceProvider">

</partnerLink>
</partnerLinks>
<correlationSets>
<correlationSet name="correlator" properties="wsdlNS:correlatorProp"/>
</correlationSets>
77
BPEL ASSNCRONO - PARTE 1
BPEL ASSNCRONO - PARTE 2
<sequence>
<receive name="start" partnerLink="partnerLinkA"
portType="wsdlNS:MyPortTypeClient"
operation="operationA" variable="inputVar" createInstance="yes">
<correlations>
<correlation set="correlator" initiate="yes"/>
</correlations>
</receive>

<assign name="assign1">
<copy>
<from variable="inputVar" part="inputType"/>
<to variable="partnerInputVar" part="inputType"/>
</copy>
</assign>

<invoke name="invokepartner" partnerLink="partnerLinkB"
portType="partnerNS:MyPortType"
operation="asyncOperation" inputVariable="partnerInputVar"/>

78
BPEL ASSNCRONO - PARTE 3
<receive name="receiveCallback" partnerLink="partnerLinkB"
portType="partnerNS:MyCallbackPortType"
operation="onResult" variable="partnerOutputVar" createInstance="no">
<correlations>
<correlation set="correlator"/>
</correlations>
</receive>

<assign name="assign2">
<copy>
<from variable="partnerOutputVar" part="resultType"/>
<to variable="outputVar" part="resultType"/>
</copy>
</assign>

<reply name="end" partnerLink="partnerLinkA"
portType="wsdlNS:MyPortTypeClient"
operation="operationA" variable="outputVar"/>
</sequence>
79
COREOGRAFIAS
Coreograas de Servios Web uma tcnica para composio de servios de forma
distribuda e descentralizada, vista sob uma perspectiva global.
No h um n coordenador.
Cada n sabe o que deve fazer; Cada n sabe como colaborar com seus vizinhos na
coreograa.
A coreograa o resultado do conhecimento e comportamento coletivo espalhado
pelo sistema.
80
A METFORA
Bailarinos danam seguindo uma coreograa que descreve um cenrio global, sem um
ponto nico de controle.
Cada danarino desempenha um papel.
Esse papel dene as suas aes e a sua interao com os demais bailarinos do
espetculo.
81
MOTIVAO

Orquestraes possuem o controle centralizado

O n central um ponto nico de falha

Arquiteturas centralizadas, em geral, tem problemas de

escalabilidade

conectividade (em redes de grande escala)

adaptabilidade

congurabilidade

Coreograas tentam resolver essas limitaes distribuindo as responsabilidades.


82
COMO FUNCIONA UMA COREOGRAFIA
Cada n/processo participante da coreograa sabe:
quando atuar
com quais outros processos deve interagir
quais operaes deve executar
quais mensagens deve trocar
qual o momento adequado para essa troca de mensagens
83
EXEMPLO DE CENRIO DE USO
84
HISTRIA
W3C Workshop on Web Services, 2001
muitas apresentaes apontaram a necessidade de padres permitindo a composio
de servios de uma forma descentralizada, i.e., coreograas.
W3C Web Services Architecture Working Group
considera coreograas como um fator crtico para o sucesso para servios nascentes da
Web
Criou-se ento em 2003 o W3C Architecture Domain Web Services Choreography
Working Group Charter
85
REQUISITOS PARA UMA LINGUAGEM
PARA COREOGRAFIAS (W3C)
Composies
Associaes
Troca de Mensagens
Gerenciamento de Estado
Dois aspectos a serem considerados:
interface, descrio externa, interao com outros servios
execuo, descrio interna, comportamento do servio
86
REQUISITOS PARA COMPOSIO
Coreograa um servio web: modelo de composio recursivo.
Denio do comportamento externo observvel de uma coreograa.
Habilidade de representar coreograas com estado.
Identicao das instncias das coreograas.
Gerenciamento do ciclo de vida (criao, trmino, etc.).
Interaes entre servios atravs de trocas de mensagens.
Denio de comportamento, regras de escopo, atividades.
87
REQUISITOS PARA ASSOCIAES
Papis baseado no uso de servios web.
Ligaes entre servios web.
Referncias a servios web.
88
REQUISITOS PARA TROCA DE
MENSAGENS
Conversas - trocas de mensagens inter-relacionadas que denem a interao entre
servios.
Correlaes e gerenciamento do seu ciclo de vida.
Correlao com instncias de coreograas e seus estados.
89
REQUISITOS PARA GERENCIAMENTO DE
ESTADO
Denio de estado
Manipulao de estado
Consulta ao estado
90
PRINCIPAIS PADRES PARA COREOGRAFIAS
WSCI (W3C, 2002)
WS-CDL (W3C, 2005)
BPSS by ebXML
WSFL by IBM
XLANG by Microsoft
BPEL4WS by IBM, Microsoft and BEA
BPML, BPMN, BPMN2
91
WSCI
WEB SERVICE CHOREOGRAPHY INTERFACE
uma linguagem de denio de interfaces, baseada em XML (W3C, 2002).
Descreve o uxo de mensagens entre os participantes de uma coreograa.
Trabalha em conjunto com WSDL mas descreve os aspectos dinmicos da interface de
um servio em funo de sua interface esttica.
pronncia: whiskey (como a bebida)
92
WSCI DEFINE O COMPORTAMENTO
OBSERVVEL DE UM SERVIO
Comportamento expresso em termos de
dependncias lgicas e temporais entre as mensagens trocadas
regras de sequenciamento, correlaes, tratamento de excees e transaes.
WSCI descreve as interaes coletivas entre os servios Web, provendo uma viso
global, orientada pelas mensagens das interaes.
93
DESCRIO DAS INTERDEPENDNCIAS
WCSI descreve as interdependncias entre as operaes de servios Web de forma
que qualquer cliente possa:
interagir com esse servio no contexto de um determinado processo e
antecipar o comportamento esperado desse servio em qualquer momento do seu
ciclo de vida.
94
PERGUNTAS RESPONDIDAS POR UMA
ESPECIFICAO WSCI
Qual a sequncia de mensagens esperada por um servio?
Quais regras so usadas para denir a sequncia de mensagens?
Qual a relao entre as mensagens de entrada e de sada de um servio?
Quando uma sequncia de mensagens comea e quando termina?
Uma sequncia de mensagens pode ser desfeita?
95
VISO GLOBAL
WCSI permite denir uma viso global da coreograa de modo que se possa
vericar se o servio se comporta da forma como est especicado (V&V)
derivar a coreograa de todo o processo de forma a descrev-la e modic-la
monitorar o comportamento do servio em relao a todos os participantes da
troca de mensagens.
96
ELEMENTOS DE WSCI

Coreograa de mensagens: ordem na qual mensagens so trocadas.

Transaes: dene quais operaes so executadas dentro de transaes


distribudas da forma tudo-ou-nada.

Tratamento de excees: descreve padres de comportamentos alternativos


quando coisas do errado.

Gerenciamento de Threads: descreve se e como servios tratam mltiplas


conversas simultneas.
(continua)
97
ELEMENTOS DE WSCI

Propriedades e seletores: descrevem os elementos que modicam o


comportamento observvel de um servio, tais como variaes baseadas em valores de
partes de mensagens.

Conectores: descrevem as ligaes entre operaes consumidoras de um servio e


operaes produtoras de outro servio.

Contexto operacional: descreve como um mesmo servio se comporta no


contexto de diferentes trocas de mensagens.

Participao dinmica: descreve como um servio especco selecionado em


tempo de execuo para compor uma coreograa.
98
RELAO COM WSDL
99
EXEMPLO
WSDL consegue denir as 3 operaes isoladamente mas no descreve como se d a
sequncia de mensagens, a coreograa em si.
100
O CDIGO WSCI (1/3)
mensagens com um
mesmo itineraryID
pertencem mesma
conversa
101
O CDIGO WSCI (2/3)
102
O CDIGO WSCI (3/3)
103
ATIVIDADES EM WSCI
podem ser atmicas (operao denida em WSDL) ou compostas:
execuo em sequncia
execuo em paralelo
laos (for-each, while, repeat-until)
condicional baseada na avaliao de uma condio (switch) ou na ocorrncia de um
evento (choice) que pode ser recebimento de mensagem associada a papel, ao ou
mensagem, falha, timeout.
104
PROCESSOS EM WSCI
Podem ser
disparados a partir do recebimento de uma mensagem especca,

criados a partir de uma operao do tipo call (a chamada ca bloqueada esperando


pela concluso da chamada) ou

criados em um novo thread a partir de uma operao do tipo spawn.


105
EXCEES EM WSCI
possvel denir casos excepcionais e quais atividades devem ser executadas quando a
exceo ocorre.
Podem ser consideradas excees:
mensagens especcas recebidas por um servio
ocorrncia de uma falha (tanto falha interna do servio quanto o recebimento de
uma mensagem de falha)
ocorrncia de um timeout.
106
TRANSAES EM WSCI
A coreograa pode denir que um conjunto de atividades deve ser executada de uma
forma tudo-ou-nada. Ou seja
Se nenhuma exceo ocorrer, a transao chega ao m.
Se uma exceo ocorrer, todas as atividades da transao so desfeitas e,
opcionalmente, um conjunto de atividades de compensao executado.
Transaes podem ser simples ou aninhadas.
107
APLICAO NA AIRLINE
108
O MODELO GLOBAL DE WSCI
O modelo global representado
pelo conjunto de interfaces dos vrios servios participantes da coreograa e
por uma coleo de ligaes conectando as operaes dos servios; ligaes indicam
que os servios iro trocar mensagens entre si.
O modelo global permite
visualizao, anlise,
vericao e validao,
simulao
109
MODELO GLOBAL
110
111
WS-CDL
Desenvolvido pelo W3C WS Choreography working group de 2003 a 2006.
Proposta de padro encaminhada 11/2005.
Elaborada por Oracle, Novell, Adobe, W3C, etc.
a proposta de padro mais recente.
Porm ainda pouco estudada e implementada.
Pode ser o caminho para o futuro (?)
http://www.w3.org/TR/ws-cdl-10
112
WS-CDL
Permite a denio de colaboraes de longa durao entre servios em ambientes
heterogneos
implementados em diferentes linguagens, tecnologias e modelos de programao
fazendo parte de vrias organizaes e domnios.
Dene comportamento comum e particular a partir de um ponto de vista global.
A Coreograa um contrato de comum acordo entre os vrios participantes da
colaborao.
113
WS-CDL
Colaborao denida de um ponto de vista global.
Diferentes organizaes concordam na coreograa que as
interligar mas no precisam expor seus processos internos.
No uma linguagem de processos de negcio (BPEL), mas um
participante pode usar uma BPEL para implementar seus
processos.
114
WS-CDL
115
DEFINIO DA COREOGRAFIA
So necessrios 3 passos:
declarar os relacionamentos (que atuam como uma checagem de tipos nos canais de
comunicao);
declarar variveis para as instncias dos canais e dos tipos de informao a serem
transmitidas;
denir as interaes e restries de ordenao entre as interaes.
vamos ver um pequeno exemplo simplicado
116
EXEMPLO SIMPLIFICADO
117
DEFINIO DAS INTERAES E VARIVEIS
118
119
120
COREOGRAFIAS MAIS COMPLEXAS
Uma coreograa tem um nome e uma raiz (ponto de entrada) e pode ter estruturas compostas por
sequncias
paralelizao
escolhas
unidades de trabalho
interaes
atribuio a variveis
aes silenciosas e noAction
ou a execuo de uma sub-coreograa
Ainda pode ter um Bloco de Exceo e um Bloco de Finalizao
121
COREOGRAFIAS MAIS INTERESSANTES
SERO MAIS COMPLEXAS...
122
DESAFIOS DE PESQUISA (1/5)

Projeto Baile - HP

Projeto CHOReOS - European Commission FP7

Realizao de Coreograas de Grande Escala

denio

execuo

anlise

monitoramento

depurao
123
DESAFIOS DE PESQUISA (2/5)

Vericao e Validao

testes

desenvolvimento dirigido por testes

monitorao em tempo de execuo

Modelagem analtica

modelos matemticos para

avaliar propriedades / corretude

prever desempenho/escalabilidade

Simulao 124
DESAFIOS DE PESQUISA (3/5)
Middleware para realizao (enactment)
Metodologia de desenvolvimento
Ferramentas
Mapeamento para
Computao em Grades
Computao em Nuvem
125
DESAFIOS DE PESQUISA (4/5)
Adaptao dinmica
Gerenciamento de dependncias
Gerncia de Qualidade de Servio
Internet das coisas / Computao ubqua
126
DESAFIOS DE PESQUISA (5/5)

Aplicaes-exemplo concretas

coreograas sintticas

para testes e avaliao de desempenho e escalabilidade

Aeroporto amigvel

Rede de taxis inteligentes

Coordenao mvel de pessoas

jornalismo dos cidados

coordenao de um brainstorming de grande escala


127
PERGUNTAS E DISCUSSO
Slides disponveis em:
www.ime.usp.br/~kon/presentations.html
www.ccsl.ime.usp.br/baile
128
REFERNCIAS

W3C Web Services Choreography Working Group Charter

http://www.w3.org/2005/12/wscwg-charter.html

Web Services Glossary, http://www.w3.org/TR/ws-gloss/

Bruno Martins Duarte dos Santos. Web Services Choreography. 2007. Disponvel em http://
www.webartigos.com/articles/2901/1/Web-Services-Choreography

W3C Web Services Choreography Description Language: Primer, 2006. http://www.w3.org/


TR/2006/WD-ws-cdl-10-primer-20060619/

W3C Web Service Choreography Interface (WSCI) 1.0. 2002. http://www.w3.org/TR/wsci

TILKOV, Stefan. A Brief Introduction to REST, http://www.infoq.com/articles/rest-introduction ,


2007
129
REFERNCIAS
Burke, Putting Java to REST, http://java.dzone.com/articles/putting-java-rest, 2008
ZHANG, Liang-Jie. Services Computing, Pequim, Springer, 2007
Hewitt, Eben, Java SOA Cookbook, 1st Edition, 2009,
Shin, San, SOA Using OpenESB, BPEL and NetBeans, 2010
http://ccsl.ime.usp.br/baile
http://ccsl.ime.usp.br/wiki/index.php/Baile
130

Você também pode gostar