DALTON LUIZ MARCÍLIO
ANÁLISE DE LINGUAGENS DE COMPOSIÇÃO PARA WEB SERVICES
Dissertação apresentada como requisito parcial à obtenção do grau de Mestre em Informática, Curso de Pós-Graduação em Informática, Setor de Ciências Exatas, Universidade Federal do Paraná. Orientadora: Profa. Dra. Maria Salete Marcon Gomez Vaz
CURITIBA
JANEIRO 2006
II
SUMÁRIO
1 Introdução................................................................................................................................... 1
2 Componentes de Serviços e Software ....................................................................................... 3
3 Web Services.............................................................................................................................. 8
3.1 SOAP - Simple Object Access Protocol ............................................................................ 9
3.2 WSDL - Web Services Description Language ................................................................. 12
3.3 UDDI - Universal Description, Discovery and Integration................................................ 12
3.4 Entidades Regulamentadoras dos Web Services ........................................................... 16
3.4.1 OASIS - Organization for the Advancement for Structured Information Standards 16
3.4.2 W3C - World Wide Web Consortium....................................................................... 16
3.4.3 WS-I - Web Services Interoperability Organization................................................. 16
3.5 Composição de Web Services......................................................................................... 17
3.6 Linguagens de Composição para Web Services............................................................. 19
3.6.1 Requisitos de uma Linguagem de Composição...................................................... 21
3.6.2 Processo de Negócio no Contexto das Linguagens de Composição ..................... 22
3.6.3 Metadados e Padronização .................................................................................... 23
3.6.4 BPML – Business Process Modelling Language .................................................... 26
3.6.5 XLANG – X Language............................................................................................. 28
3.6.6 WSFL - Web Service Flow Language ..................................................................... 30
3.6.7 BPEL4WS - Business Process Execution Language for Web Services ................. 32
3.6.8 WSCI - Web Service Choreography Interface ........................................................ 35
3.6.9 WS-CDL - Web Service Choreography Description Language .............................. 38
4 Estudo de Caso e Análise ........................................................................................................ 40
4.1 Exemplo de um Processo interorganizacional................................................................. 40
4.2 Implementação WS-CDL da Coleta de Taxas Municipais............................................... 43
4.3 Implementação BPEL4WS da Coleta de Taxas Municipais. ........................................... 47
4.4 Características de Comparação dos Padrões de Linguagens de Composição .............. 49
4.5 Resultados Obtidos na Análise dos Padrões de Linguagens de Composição ............... 53
5 Conclusões e Trabalhos Futuros.............................................................................................. 57
Referências ....................................................................................................................................... 59
Anexos............................................................................................................................................... 63
A. Exemplo de uso dos Web Services ..................................................................................... 63
A.1. Código.............................................................................................................................. 63
A.2. Resultado final em XML................................................................................................... 63
A.2.1. Url que chama o WebService...................................................................................... 63
III
A.2.2. Retorno em XML.......................................................................................................... 64
A.3. Arquivo de publicação – WSDL ....................................................................................... 64
A.4. Arquivo envelope para WebService - SOAP ................................................................... 68
IV
ÍNDICE DE FIGURAS
FIGURA 1 – DEFINIÇÃO DE SERVIÇO ATRAVÉS DE UMA APLICAÇÃO ............................. 5
FIGURA 2 – CENÁRIOS DE WEB SERVICES............................................................................... 9
FIGURA 3 – ELEMENTOS DE UMA MENSAGEM SOAP.......................................................... 11
FIGURA 4 – UDDI DENTRO DA ESTRUTURA DE WEB SERVICES....................................... 14
FIGURA 5 – CENÁRIO DE PADRÕES DE WEB SERVICES...................................................... 15
FIGURA 6 – CENÁRIO DETALHADO DE PADRÕES DE WEB SERVICES ............................ 15
FIGURA 7 – EXEMPLO DE COMPOSIÇÃO DE SERVIÇOS ...................................................... 18
FIGURA 8 – LINGUAGENS DE COMPOSIÇÃO DE WEB SERVICES AO LONGO DO
TEMPO...................................................................................................................................... 20
FIGURA 9 – EXEMPLO DE CODIFICAÇÃO BPML.................................................................... 28
FIGURA 10 – EXEMPLO DE CODIFICAÇÃO XLANG............................................................... 30
FIGURA 11 – EXEMPLO DE CODIFICAÇÃO WSFL.................................................................. 31
FIGURA 12 – EXEMPLO DE CODIFICAÇÃO BPEL4WS........................................................... 34
FIGURA 13 – EXEMPLO DE CODIFICAÇÃO WSCI................................................................... 37
FIGURA 14 – EXEMPLO DE CODIFICAÇÃO WS-CDL ............................................................. 39
FIGURA 15 – DIAGRAMA DE ATIVIDADES – COLETA DE TAXAS MUNICIPAIS ............. 42
V
ÍNDICE DE TABELAS
TABELA 1 – PROTOCOLOS............................................................................................................ 14
TABELA 2 – PADRÕES DE METADADOS...................................................................................... 25
TABELA 3 – PADRÕES DE METADADOS E AMBIENTE DE DESENVOLVIMENTO ................. 26
TABELA 4 – COMPARAÇÃO DAS LINGUAGENS DE COMPOSIÇÃO ......................................... 53
VI
RESUMO
Web Services são componentes de software que podem ser acessados através da
Internet por outros softwares. O objetivo principal dos Web Services é a
interoperabilidade total entre aplicações. Como a integração entre sistemas requer
mais do que a habilidade de manipular simples operações, há a necessidade de
ferramentas para a modelagem de complexos processos de negócio, visando
assim maior qualidade nas informações a serem analisadas. Essas ferramentas
são linguagens de composição baseadas em Metadados, que apresentam
características próprias de descrição de serviços, composição, orquestração,
execução e interpretação. Neste trabalho são abordados os conceitos, descrições
e uma análise entre as mais importantes linguagens de composição para Web
Services com o objetivo de apresentar um entendimento do panorama relativo a
padronização dos componentes da referida tecnologia, com foco especial às
linguagens de composição.
Palavras-chave: Web Services, Metadados, Linguagens de Composição de
Web Services.
VII
ABSTRACT
Web Services are software components that can be accessed through the Internet
by other softwares. The main goal of Web Services is the full interoperability
among applications. Since the integration among systems requires more work than
the ability of manipulating simple operations, it’s necessary to use tools for
modeling complex business processes, aiming more quality of information that is to
be analyzed. These tools are language compositions based on Metadata that
presents its own features of description services, compositions, orchestration,
execution and interpretation. In this work, the concepts, descriptions and an
analysis among the most important composition languages for Web Services are
broached, with the objective to present an agreement of the relative overview the
standardization of the components of the related technology, with special focus to
the composition languages.
Keywords: Web Services, Metadata, Web Services Composition Languages.
1
1 Introdução
No cenário mundial atual a Internet é utilizada por muitas organizações para a
geração de negócios e troca de informações. Devido a esses fatores as
tecnologias de sistemas empregados por essas empresas muitas vezes precisam
passar por um processo de adaptação e re-implementação dos recursos
existentes a fim de fornecer subsídios para a divulgação dos seus serviços e o
intercâmbio de informações, levando assim ao ganho de vantagens competitivas.
É neste ambiente que a tecnologia de Web Services promete ser uma das
soluções viáveis a serem analisadas, pois seu objetivo principal é a integração de
sistemas, onde padrões web podem oferecer interoperabilidade total entre
aplicações. A tecnologia foi desenvolvida levando-se em consideração os
problemas e limitações encontradas em outras plataformas, a reutilização de
soluções previamente desenvolvidas nas empresas, servidores Web e protocolos
de comunicação, entre outras características.
Este documento envolve um estudo analítico das linguagens de
composição e seus Metadados referentes à gama de serviços Web Services, que
é um gabarito de tecnologias que permite que diferentes aplicações, em diferentes
plataformas e linguagens, conversem entre si através da Internet.
De acordo com esse contexto e com o advento das linguagens de
composição para Web Services, que envolvem estruturas que permitem a
execução e o gerenciamento de complexos processos de negócio em uma
organização, vêm à tona a necessidade de analisar tais linguagens a fim de
perceber suas características de adaptação às diversas situações que podem
existir tanto para uso acadêmico quanto comercial além de discutir as várias
padronizações de composição para auxiliar as diversas entidades na
compreensão das linguagens.
Este trabalho está estruturado como se segue: O capítulo 2 discute os
aspectos relacionados a composição de serviços e sistemas bem como a
contextualização sobre Web Services, apresentando assim os padrões já
estabelecidos para tal tecnologia.
2
O capítulo 3 relaciona a fundamentação e padronização existente na tecnologia
Web Services. Neste mesmo capítulo são apresentadas as principais entidades
reguladoras de Web Services e das linguagens de composição; uma abordagem
em relação a questão da composição de Web Services incorporada à composição
de sistemas; as características desejáveis de toda linguagem de composição e a
inserção da tecnologia na esfera pertinente aos processos de negócio bem como
a descrição das principais linguagens de composição em relação aos próprios
Metadados ao longo do tempo.
Um estudo de caso sendo ilustrado pelas linguagens de composição que
estão em contínuo processo de evolução é demonstrado no capítulo 4. No mesmo
capítulo é apresentada uma análise comparativa entre as linguagens abordadas,
levando em consideração características comuns e comportamentos analisados
em suas especificações. Finalmente, o capítulo 5 apresenta as conclusões deste
trabalho e questões a serem pesquisadas em um trabalho futuro.
3
2 Componentes de Serviços e Software
O conceito de transformação de desenvolvimento de aplicações em um
desenvolvimento baseado em componentes já possui vários anos de discussões.
Entretanto, sua adoção em grande escala ainda depende do desenvolvimento de
tecnologias e padrões que sejam aptos a descrever essas “peças” de software de
forma independente de sua codificação e implementação.
É possível estabelecer uma comparação entre a utilização de componentes
de software e um quebra-cabeça. Cada componente pode ser, de forma análoga,
como uma peça do quebra-cabeça que deve ser encaixada com as outras para
formar uma estrutura complexa (ou, no caso do software, a aplicação final).
Em se tratando de desenvolvimento de software, esta composição ainda
ganha mais uma dimensão, pois a questão abstrata dos componentes de software
permite uma dinâmica ainda maior no agrupamento, o que resulta em uma enorme
gama de criação de diferentes aplicações a partir dos mesmos componentes, o
que no caso do quebra-cabeça não é verdadeiro.
De acordo com esse contexto, um aspecto muito importante é a capacidade
de composição dinâmica destes componentes, que deve ser feita de forma
automatizada por alguma espécie de software responsável pela composição e
coordenação destes serviços. Com o advento da Web e a grande quantidade de
fontes de informação e de serviços disponíveis na rede, existe um fator
determinante que dificulta ainda mais essa composição, que é a semântica das
informações envolvidas. É sabido que não existe uma forma única de descrever os
recursos na Internet ou rede, então as inconsistências e ambigüidades que
fatalmente aparecerão precisam ser tratadas de alguma forma.
Por conta dos fatos descritos acima, o desenvolvimento de aplicações
baseadas em serviços distribuídos na Internet envolve a composição de serviços
tanto em relação as funcionalidades dos mesmos como a estruturação e
integração dos dados trocados entre os diferentes serviços que compõem o
sistema.
4
Assim, existe a necessidade da introdução de semânticas nos dados
trocados entre os módulos do sistema, permitindo que os computadores possam
“raciocinar” e executar tarefas complexas utilizando componentes de software que
não foram projetados para trabalhar juntos a princípio.
De uma forma genérica, um serviço pode ser definido como toda e qualquer
fonte de informações disponibilizada através da Internet. Estas fontes podem estar
conectadas diretamente a componentes de software (como sistemas de bancos de
dados) ou a tarefas que são executadas por pessoas intermediadas por algum
meio de comunicação (como uma reserva sendo feita através de e-mail em um
hotel).
Uma questão fundamental no desenvolvimento de aplicações orientadas a
serviços é a definição de uma forma única de acesso e gerenciamento dos
serviços. Isto pode ser feito através de um padrão para definição e descrição dos
serviços e de tecnologias de middleware para o desenvolvimento de software.
Componentes podem ser definidos como unidades de composição com
interfaces especificadas através de contratos e com dependências de contexto.
Um componente de software pode ser apresentado de forma independente e é
passível de composição por terceiros [30].
Uma outra definição apresenta componentes de software como unidades
reutilizáveis de uma solução, que devem ser integradas a um todo para que
efetuem um papel na solução [31].
De acordo com a definição de serviço apresentada anteriormente, um
Componente de software pode ser entendido como uma unidade de software
responsável por apresentar ao sistema as informações relativas a uma tarefa
atômica, que pode ser executada por uma máquina ou por uma pessoa. A Figura
1 representa os serviços compostos por componentes em um sistema.
5
FIGURA 1– DEFINIÇÃO DE SERVIÇO ATRAVÉS DE UMA APLICAÇÃO
A utilização plena destes componentes de software pode trazer como
conseqüência um substancial incremento na qualidade das soluções resultantes,
um aumento da produtividade da equipe e do processo de desenvolvimento
utilizado e incremento da confiança e segurança dos componentes propriamente
ditos, pois estes podem ser devidamente testados e validados.
A partir deste ponto, a solução de problemas através da decomposição de
uma solução em unidades relevantes, ou seja, dividir para conquistar, pode vir a
facilitar o entendimento do problema, além de contribuir para a redução dos custos
associados ao desenvolvimento e evolução da solução. Além de decompor, é
preciso documentar e evitar possíveis acoplamentos entre as unidades geradas,
para que o processo de evolução dos componentes da solução possa ser feito
com o menor impacto possível.
Como exemplos de componentes pode-se citar desde funções, classes,
pacotes, componentes CORBA, subsistemas, processos distribuídos, Web
Services até agentes de software. A taxa de complexidade e os serviços
oferecidos por cada uma dessas tecnologias variam bastante, acarretando com
6
isso uma inexistência de uma tecnologia que de fato possibilite a unificação entre
as mais diversas abordagens.
Além de todos estes aspectos, o desenvolvimento de software baseado em
componentes precisa ser analisado sobre duas perspectivas. A primeira diz
respeito a como desenvolver um componente e está interessada em definir
claramente o escopo, limitações e características oferecidas pela unidade. A
segunda se preocupa em como reutilizar e compor diferentes componentes para
solucionar determinado problema.
De acordo com esta visão sobre desenvolvimento orientado a
componentes, uma aplicação baseada em serviços tem como ponto principal a
escolha de uma tecnologia de componentes que permita o desmembramento e a
distribuição das partes através de uma rede. Uma vez escolhida, cabe ao analista
da aplicação determinar qual a melhor forma de realizar a composição dos dados
e das funcionalidades destes componentes de software. Como exemplo de
tecnologia de componentes para a realização de tais serviços, podemos citar Web
Services, tecnologia que é o escopo deste trabalho e é apresentada no capítulo
seguinte.
Como forma de entender o mecanismo de componentes no contexto de
uma aplicação baseada em serviços, é importante entender a arquitetura típica da
tecnologia de componentes. Tomando Web Services como base, é possível definir
três tipos básicos de entidades: Service Provider (Provedor de Serviço ou Área de
Publicação), Service Broker (Serviço de Busca e Registro) e Service Requester
(Serviço de Requisições e Gerenciamento). O comportamento desses serviços é
ilustrado na Figura 2.
Um serviço distinto é fornecido por um Provedor de Serviço. Este publica
suas funcionalidades em algum sistema de busca por serviços, que recebe o
nome de Serviço de Busca. Um Serviço de Requisições é uma classe que irá
utilizar alguma funcionalidade de um Web Service para realizar alguma tarefa mais
completa. Para tal, ela entra em contato com algum Broker de Serviços através de
algum padrão para descoberta (por exemplo, UDDI). Ao receber a resposta, o
7
Serviço de Requisições terá as interfaces padrão para acesso aos serviços que
atendem às suas necessidades.
Essas interfaces fazem parte da descrição do serviço, que normalmente é
feita em uma linguagem específica para isso, a WSDL (Web Services Description
Language). A partir deste ponto, os serviços fornecidos pelos Provedores de
Serviço poderão ser acessados utilizando um protocolo de acesso a objetos
remotos (como por exemplo, SOAP).
De acordo com os fatos apresentados, fica claro que são necessários três
padrões para a definição de uma tecnologia de componentes. Estes permitem que
componentes sejam descritos, acessados e publicados de uma forma homogênea.
Como forma de contextualizar estes três padrões e apresentar as suas
características mais comuns serão detalhados a seguir os conceitos comuns
utilizados na tecnologia de Web Services.
8
3 Web Services Recomendada pela W3C, uma das entidades regulamentadoras para Web
Services, o conceito de Web Services permite que aplicações criadas possam ser
publicadas e invocadas através da Internet. Esta tecnologia tornou-se rapidamente
um padrão porque tem como base a linguagem XML, que utiliza os protocolos
padrões da Internet, como o HTTP/SMTP, que já são amplamente utilizados
[26,27].
Sendo aplicações modulares, autodescritivas, acessíveis através de uma
URL, independentes das plataformas de desenvolvimento e que permitem a
interação entre aplicações sem intervenção humana, os Web Services
apresentam-se como a solução para os atuais problemas de integração de
aplicações.
Os componentes básicos de sistemas que utilizam Web Services,
independente de qualquer linguagem de programação, são os seguintes:
1. Protocolo de comunicação (SOAP – Simple Object Access Protocol);
2. Linguagem para a descrição dos seus serviços e tipo dos dados
utilizados (WSDL - Web Services Description Language);
3. Mecanismo de publicação e busca dos serviços (UDDI - Universal
Description, Discovery and Integration).
A Figura 2 ilustra o cenário de trabalho de um Web Services e as tecnologias
envolvidas.
9
FIGURA 2 – CENÁRIOS DE WEB SERVICES
Nas seções seguintes são descritas as tecnologias envolvidas e apresentadas na
Figura 2.
3.1 SOAP - Simple Object Access Protocol SOAP originou-se da idéia de um mecanismo de RPC (Remote Procedure Calls)
baseado em XML originalmente proposto por Dave Winer em 1998. SOAP é uma
especificação da W3C proposta por organizações como Userland®, Ariba®,
Microsoft®, IBM®, Compaq®, HP®, Lotus®, SAP® entre outras. É um protocolo
elaborado para facilitar a chamada remota de funções via Internet, permitindo que
dois programas se comuniquem de uma maneira muito semelhante às páginas
Web [28].
A comunicação entre clientes e servidores é feita através do protocolo
SOAP. Dessa maneira, as RPC (Remote Procedure Calls - Chamadas Remotas
de Procedimento) são codificadas em XML e operam sobre HTTP. Com isso,
pode-se acessar os serviços de um objeto localizado em um outro local da rede,
através de uma chamada local a este objeto. Para o transporte de mensagens é
Repositório Remoto de Web Services
Web Services Remotos
Web Services Remotos
Web Services Remotos
Execução
Composição
Invocação
Busca
Registro de Serviços
Publicação de Web Services
Composição e Execução
Execução
Web Service
Proc. Abs.
Individual
Lookup
Invocar WS
Gerenciador de Serviços
10
usado o HTTP, que torna o SOAP um protocolo leve, elimina inúmeros problemas
de outras tecnologias com proxys.
Antes de serem enviadas pela rede, as chamadas de RPC (emitidas pela
aplicação cliente) são encapsuladas segundo o Padrão SOAP. Ao receber a
mensagem ocorre o processo contrário, desencapsulando-as e extraindo as
chamadas de método. A aplicação servidora então processa esta chamada, e
envia uma resposta ao cliente. O processo então se repete: a resposta é também
encapsulada e enviada pela rede. Na máquina cliente, esta resposta é
desencapsulada e repassada para a aplicação cliente.
Uma grande vantagem do SOAP é a de que não tem que contornar os
esquemas de segurança para realizar a comunicação entre clientes e servidores.
Como o SOAP usa o HTTP como camada de transporte ele opera na porta 80,
que na maioria dos casos está liberada pelo proxy/firewall. Conceitualmente não
existe diferença entre uma requisição a um método e a uma página HTML.
A especificação SOAP (definida pela W3C) define as seguintes
informações, como necessárias em toda chamada de RPC:
• A URI, equivalente à URL, do HTTP do objeto alvo;
• Nome do método;
• Os parâmetros do método (requisição ou resposta);
• Uma assinatura do método opcional;
• Um cabeçalho opcional.
Uma mensagem SOAP consiste basicamente em uma estrutura com os elementos
apresentados na Figura 3:
11
FIGURA 3 – ELEMENTOS DE UMA MENSAGEM SOAP
Envelope: Toda mensagem SOAP deve ter um. É o elemento raiz do
documento XML. O Envelope pode conter declarações de namespaces e também
atributos adicionais, como o que define o estilo de codificação, que define como os
dados são representados no documento XML.
Cabeçalho (Header): É um cabeçalho opcional. Ele carrega informações
adicionais, como por exemplo, se a mensagem deve ser processada por um
determinado nó intermediário. Quando utilizado, o cabeçalho deve ser o primeiro
elemento do Envelope.
Corpo: O corpo é um elemento obrigatório e contém o payload, ou seja, a
informação a ser transportada para o seu destino final.
Fault: É um elemento opcional do corpo, usado para carregar mensagens
de status e erros retornadas pelos "nós" ao processarem a mensagem.
A segurança no envio de mensagens SOAP pode ser trocada pela rede utilizando
HTTPS ao invés de HTTP. Como HTTPS utiliza SSL no seu transporte, fica
garantida a proteção contra possíveis intervenções. Além disso, o cliente e
servidor podem verificar cada um suas respectivas identidades. Apesar de garantir
a segurança quanto a intrusos, em muitos casos é necessária a autenticação de
usuários de Web Services. Estes serviços irão fornecer algum tipo de combinação
de usuário/senha durante a fase inicial de registro no serviço e então será utilizada
para acessos futuros [28].
12
3.2 WSDL - Web Services Description Language A descrição de um Web Service se dá através de um arquivo WSDL cujo formato
está em XML. Este arquivo tem como objetivo descrever a interface do serviço, ou
seja, os métodos que são disponibilizados pelo Web Service, parâmetros
recebidos, a resposta enviada e ainda o processo de comunicação com o servidor
SOAP. É através do WSDL que o UDDI (Universal Description, Discovery and
Integration) descreve os detalhes de localização e chamada ao Web. Em outras
palavras, o WSDL é para o SOAP o que o IDL (Interface Definition Language) é
para o CORBA ou DCOM [29].
Um cliente SOAP vai ler a estrutura do arquivo WSDL e, a partir dos dados
referenciados, se comunicar com o servidor SOAP para acesso ao serviço
descrito.
O WSDL é extensível para permitir a descrição de serviços e suas
mensagens independentemente dos formatos de mensagem e dos protocolos de
rede que sejam usados.
Esse padrão possui cinco elementos importantes, divididos em duas
camadas: abstrata e concreta. A definição abstrata é composta por tipos,
mensagens e port (portas). Os tipos de dados são aqueles que são enviados e
recebidos dentro da mensagem. Depois de definidos os tipos, são definidos os
dados que serão enviados pelo sistema através da definição de mensagem. Já
port trata-se de uma série de operações relacionadas à mensagem, como entrada,
saída e tratamento de exceções.
A Definição concreta é composta das ligações e dos serviços. As ligações fazem
mapeamento da implementação com a interface descrita em XML. Já o serviço
está relacionado ao port. O serviço indica se o elemento, um nome ou um sub-
elemento que aparece várias vezes.
3.3 UDDI - Universal Description, Discovery and Integration O UDDI é um grande cadastro global. São as páginas amarelas dos Web
Services. Como as páginas amarelas tradicionais, pode-se procurar por uma
13
companhia que ofereça os serviços necessários, ler sobre o serviço oferecido ou
contatar alguém para obter mais informações.
Um diretório UDDI é um arquivo XML que descreve o negócio e os serviços.
O registro tem três partes:
Páginas brancas: descrevem a companhia: nome, endereço e contatos;
Páginas amarelas: incluem as categorias, baseada em taxonomias padrões.
Páginas verdes: descrevem a interface para o serviço, em nível de detalhe
suficiente para se escrever uma aplicação que use o Web Service.
A forma como os serviços são definidos no documento UDDI é chamado
Type Model ou tModel. Em muitos casos, o tModel contém o arquivo WSDL que
descreve a interface SOAP do Web Service.
O diretório UDDI também inclui várias maneiras de procurar os serviços.
Por exemplo, pode-se procurar por fornecedores de um serviço em uma locação
geográfica específica ou por negócios de um tipo específico. Os provedores de
serviço registram ou publicam seus Web Services nesse diretório e um
mecanismo de descoberta localiza o Web Service para um cliente, mediante uma
pesquisa. A pesquisa pode ser por tipo de serviço ou por fornecedor.
A versão atual do UDDI é a Versão 2(2002), mas a Versão 3 já se encontra
em discussão no W3C. Um aspecto importante na Versão 3 é o suporte a
assinaturas digitais. Isso vem ao encontro de questões relevantes de segurança
existentes até então. Através desse mecanismo passa a ser possível ter uma
maior certeza de que o serviço oferecido pelo fornecedor é realmente o esperado,
podendo-se ter mais confiança na sua integridade.
A Figura 4 ilustra o contexto do UDDI dentro da estrutura de um Web
Service, localizado em conexão direta com o servidor Web.
14
FIGURA 4 – UDDI DENTRO DA ESTRUTURA DE WEB SERVICES
Um Web Service é composto por vários protocolos, a grande maioria
padronizados, apresentados na Tabela 1. Nesta tabela, os protocolos
referenciados e a linguagem de marcação XML fazem parte da comunicação que
envolve o protocolo SOAP. WSDL e UDDI já foram explanados por este trabalho.
As linguagens de composição pertencem a área de “Outros padrões ainda não
definidos”, onde a discussão desses padrões é o foco deste trabalho.
Outros padrões ainda não definidos
Universal Description Discovery Integration ( UDDI )
Web Services Description Language ( WSDL )
Simple Object Access Protocol ( SOAP )
Extensible Markup Language ( XML )
Protocolos Internet ( TCP/IP , HTTP, SMTP )
TABELA 1 – PROTOCOLOS
A Figura 5 indica as linguagens de descrição de Web Services em um contexto
global, incluindo exemplos de linguagens de composição.
15
FIGURA 5 – CENÁRIO DE PADRÕES DE WEB SERVICES
FIGURA 6 – CENÁRIO DETALHADO DE PADRÕES DE WEB SERVICES
A Figura 5 detalha os principais componentes de uma estrutura de Web
Services, onde a sua camada de composição e os Metadados relacionados são
tratados nas seções seguintes. A Figura 6 apresenta o cenário de padrões para
Web Services de uma forma mais detalhada, desde os componentes dos
protocolos de comunicação SOAP (TCP/IP, HTTP e XML), os protocolos de
definição, busca e divulgação (WSDL e UDDI) e as linguagens de composição no
nível mais elevado da hierarquia, que são responsáveis pela segurança, a
qualidade de serviço (QoS) e gerenciamento dos Web Services.
Composição de Web Services BPEL4WS, WSFL, etc
Publicação e Busca UDDI
Camada de Descrição dos Serviços - WSDL
Camada de Comunicação XML - SOAP
Camada de Transporte: HTTP,SMTP, etc
16
3.4 Entidades Regulamentadoras dos Web Services
Algumas entidades que regulamentam o uso, padronização e divulgação dos
Web Services estão descritas neste capítulo.
3.4.1 OASIS - Organization for the Advancement for Structured Information Standards
A OASIS foi criada para estabelecer padrões para Web Services. É formada
por um Comitê Técnico criado para desenvolver um Modelo de Componentes para
Serviços em Web (WSCM). Dentro do Comitê Técnico WSCM existe o grupo de
trabalho "Working Group Web Services User Interface" (WSUI) que submeteu as
primeiras especificações ao OASIS para considerações do WSCM.
O novo comitê tem duas metas principais:
• Habilitar negócios para distribuir aplicações na Web através de múltiplos
canais de revenda;
• Habilitar novos serviços ou aplicações a serem criados ou liberar as
aplicações existentes através da Web.
Isto deve permitir que as companhias possam transferir Web Services
através de portais e plataformas independente de produtos proprietários.
3.4.2 W3C - World Wide Web Consortium A W3C, entidade criada em 1994 tem o objetivo de guiar a Internet de forma
concisa e padronizada. Para isto o W3C, desenvolve protocolos, especificações
(como HTML e CSS) e ferramentas que garantem a inter-operacionalidade da
Internet. É composta de vários subgrupos de estudo.
3.4.3 WS-I - Web Services Interoperability Organization A WS-I é uma organização que promove a divulgação dos Web Services, a
interoperabilidade entre plataformas, sistemas operacionais e linguagens de
17
programação. Tem o objetivo de criar protocolos genéricos e independentes para
a segurança e eficiência na entrega de mensagens, capaz de manter a
compatibilidade entre as plataformas. Promove também a educação e divulgação
de como os Web Services podem ser utilizados, suas potencialidades e
perspectivas de uso.
3.5 Composição de Web Services
A composição de Web Services envolve as mesmas dificuldades levantadas na
composição de componentes. Entre os maiores desafios para uma correta
coordenação de componentes, é possível citar três itens importantes:
• Em relação a dificuldade em garantir que os componentes efetuem as diferentes
tarefas de acordo com os contratos estabelecidos pela coordenação;
• A questão da necessidade de mecanismos de autenticação e segurança que
possam garantir uma não repudiação e sigilo nas transações descritas no
contrato;
• A importância da criação de módulos para controle de transações e tolerância a
falhas, dado que o fraco acoplamento entre os componentes faz com que os
mecanismos de tratamento de erros e controle de execução também sejam
fragmentados.
No entanto, o desenvolvimento de sistemas baseados em serviços permite
a criação de software sem que os desenvolvedores saibam que componentes irão
utilizar a princípio, sua localização e sua implementação. Esta característica
permite que os componentes sejam escolhidos de forma dinâmica em tempo de
execução. Essa propriedade garante maior poder de adaptação, distribuição e
tolerância a falhas por parte das aplicações. De acordo com esses princípios, uma
aplicação orientada a serviços é uma composição de componentes fracamente
acoplados.
Tomando como base às aplicações orientadas a serviços, é possível
imaginar a seguinte situação como exemplo: Um sistema de pacote de viagens,
18
detalhado na Figura 7, onde um cliente solicita reservas para um determinado
pacote turístico. Neste sistema, é possível realizar reservas para avião, hotel e
aluguel de carro. A partir do pedido de reserva, é então definido um processo para
reserva do itinerário. Esta especificação e definição podem definir ordens de
precedência e prioridade para chamada dos componentes do sistema bem como
critérios de parada em caso de erros e caminhos alternativos em função dos
resultados parciais.
FIGURA 7 – EXEMPLO DE COMPOSIÇÃO DE SERVIÇOS
Para a execução de todas as partes deste processo, é possível utilizar um
conjunto de componentes totalmente diferentes e de serviços distintos na Internet,
19
desde que estes atendam às especificações definidas de acordo com alguma
linguagem de especificação (por exemplo, WSDL).
Dessa forma, dois serviços distintos podem representar diferentes
entidades no mundo real (cada hotel ou companhia aérea pode representar um
serviço diferente) ou implementações independentes de uma mesma entidade
física (serviços e rotinas redundantes de um mesmo provedor).
3.6 Linguagens de Composição para Web Services
Embora os Web services terem estabelecido a base de mensagens e protocolos
para integração e são eficientes para algumas interações, eles não são suficientes
para a integração de processos de negócio que envolvem múltiplas empresas.
A integração de processos de negócio em cenários reais de negócio
envolvem interações de longa duração, gerenciamento de transações e invocação
de estados e são dirigidos por um motor de workflow que executa um processo
específico de negócio para automatizar o fluxo de informações e as operações de
negócio. Isso acarreta na necessidade de linguagens de composição de Web
Services, que provêm mecanismos que executarão a complexidade da execução
de processos de negócio.
A composição de Web Services é relacionada a agregação e composição
de Web Services para criar processos de negócio. Enquanto apenas uma única
linguagem padronizada é desejada para a especificação da composição de Web
Services, os esforços de organizações e indústrias têm resultado em duas idéias
principais:
• Vários trabalhos relacionados ao tema, como execuções de Web services,
orquestração de Web Services e coreografia de Web Services que
contribuem para a criação de processos de negócio baseados em Web
Services.
20
• Várias linguagens de composição de Web Services, como WSFL,
BPEL4WS e WS-CDL para a modelagem de processos de negócio com
Web Services.
As linguagens de composição para Web Services constituem o topo da
pirâmide dos padrões de Web Services, e são utilizadas para promover a
orquestração e coreografia de Web Services. A orquestração descreve os
processos de negócio que interagem com Web Services internos e/ou externos
em uma ordem pré-definida para realização do negócio lógico. A coreografia
descreve a colaboração entre os parceiros no processo de negócio, onde as
colaborações envolvem as trocas de mensagens que são realizadas entre os Web
Services.
De acordo com a complexidade dos processos de negócio, uma linguagem
de composição deve prover certos mecanismos para facilitar a modelagem e
execução de processos de negócio baseados em Web Services.
A composição de Web Services promete a interoperabilidade e reusabilidade de
vários processos de negócio, onde diversas empresas como IBM, Microsoft e Sun
desenvolveram vários padrões para essas linguagens. Os processos de
refinamento e convergência desses padrões ainda estão acontecendo.
FIGURA 8 – LINGUAGENS DE COMPOSIÇÃO DE WEB SERVICES AO LONGO DO TEMPO.
21
A Figura 8 mostra a evolução e as entidades envolvidas na criação desses
padrões através dos últimos anos.
3.6.1 Requisitos de uma Linguagem de Composição
Os requisitos para uma linguagem de composição para Web Services são os que
seguem:
• Deve ser auto-suficiente para expor detalhes de um serviço como seu
perfil, modelos de processos e mecanismos binding;
• Deve ser capaz de especificar interfaces de componentes em uma
implementação de maneiras independentes;
• Deve dar suporte ao desenvolvimento de componentes reutilizáveis em
um framework usando programação básica de controle de
construções;
• Deve prover suporte para processos baseados em construção e controle
de modelagens. O modelo deve ser capaz de manipular composições
seqüenciais, construções concorrentes como split, fork, split+join,
construções em loop como iterações, repeat and while e construções
não-determinísticas como choice e switch. Isso também implica em
prover suporte à modelagem de subprocessos.
• Deve ser capaz de especificar descrições de processos de uma maneira
abstrata sem amarrá-la a detalhes da execução atual para habilitar
descrições reutilizáveis e também ser capaz de modelar processos
executáveis que encapsulam o comportamento interno de um serviço.
• Deve expor a construção de modelagens que especificam
responsabilidades definidas pelos agentes envolvidos no processo de
composição, isto é, agentes de pedidos, agentes provedores e o
casamento de padrões;
• Deve fornecer tolerância a falhas, deadlocks, livelocks e mecanismos de
manipulação de exceções;
22
• Deve estar apta a modelar especificações de componentes, como
abstrações de comportamentos de componentes.
• Ser adequadamente expressiva tendo semântica de definição e uma
robusta base composta de modelos formais, para facilitar descrições
composições automatizadas de serviços através de agentes de
software;
• Deve ser capaz de modelar restrições, na forma de regras, para inibir
interações indesejadas entre os serviços. Isso também inclui suporte
para modelos transacionais e a qualidade do serviço.
• Segurança e Privacidade formam uma parte integral de qualquer serviço
de uma linguagem de composição. A linguagem deve estar apta a
modelar a segurança como uma requisição funcional do sistema.
3.6.2 Processo de Negócio no Contexto das Linguagens de Composição
Para o entendimento das linguagens de composição de Web Services, torna-se
necessário estabelecer alguns conceitos relacionados ao termo processo de
negócio.
• Processo de negócio da empresa: é a descrição dos passos
necessários à execução das atividades sem considerar o sistema
envolvido.
• Processo de negócio executável: esses sistemas são chamados de
BPMS (Business Process Management System). Limita-se a execução
dentro de uma única corporação. Sua execução não é limitada a
minutos ou horas, ao invés disso, ele pode demorar dias, meses ou
anos. BPML, XLNG e WSFL definem essa categoria de processo de
negócio.
• Processos de negócio ebXML: é uma especificação de colaboração a
qual pode ser usada para descrever como dois processos de negócio
concorrentes interagem no nível de negócio.
23
• Atividades do processo de negócio: representa uma interação de curta
duração entre usuários ou sistemas. Um exemplo típico é uma aplicação
OLTP (On Line Transaction Processing) J2EE.
• Workflow ou Workflow do processo de negócio: sistemas de workflow
são associados à gerência automatizada de documentos, os quais
requerem revisões e aprovações. Esses sistemas têm pouca ou
nenhuma integração com sistemas da empresa
No capítulo seguinte são apresentados os principais conceitos e os padrões
já estabelecidos de Metadados bem como as linguagens de composição e os
paradigmas de representação de processos de Web Services e seus respectivos
Metadados através de processos de negócio. São abordadas as linguagens de
composição WSFL, XLANG, WSCI, BPML, BPELW4S e WS-CDL, suas principais
características e a forma com que tratam os Metadados para a manipulação nos
Web Services.
3.6.3 Metadados e Padronização As pessoas que têm contato com ferramentas de Tecnologia da Informação
utilizam alguma forma de Metadados, mesmo eventualmente sem saber quem as
usam ou o seu significado.
A definição mais comum de Metadados é “dados sobre dados”. Embora
esta definição seja uma expressão da verdade e englobe todas as tentativas de
definição, ela não dá a verdadeira dimensão de todos os aspectos que a
envolvem.
Os Metadados não fornecem somente o formato e o nome dos itens de
dado, ele fornece o contexto em que o elemento de dado existe. Fornecem
também informações tais como o domínio dos possíveis valores, a relação do
elemento de dados com outros, regras de negócio do dado e mesmo a origem do
dado. A seguir são apresentados alguns conceitos formais de Metadados:
24
“São dados que descrevem os atributos de um recurso. Eles suportam funções
como: localização, descoberta, documentação e outros.”UKOLN(2000)”.
“Fornecem o contexto para entender os dados através do tempo”. Inmon (1998)
“São o instrumental para transformar dados brutos em conhecimento”.
ComputerWire(2000).
“É todo dado físico (contido em software ou outra mídia) e conhecimento
(adquirido pelos empregados e outras mídias) de dentro e fora da organização,
incluindo informação sobre dados físicos, processos técnicos e de negócio, regras
e restrições dos dados, e estrutura dos dados usados pela organização”. Marco
(2000, p. 4-5).
A finalidade principal dos Metadados é documentar e organizar de forma
estruturada os dados das organizações com o objetivo de minimizar duplicação de
esforços e facilitar a manutenção dos dados.
Segundo Terry Moriarty (1997, p. 57-59) estas diferentes interpretações
estão relacionadas ao estágio da organização dentro da hierarquia evolucionária
de gestão do conhecimento. Nesta abordagem, organizações no nível mais baixo
da hierarquia gerenciam dados brutos. Organizações mais avançadas são
capazes de administrar seus recursos de informação ao nível de Informação,
Conhecimento ou Sabedoria.
No nível de informação, o foco é nos relacionamentos entre todos os
componentes do sistema e os papéis individuais que eles assumem no sistema.
Uma organização que está envolvida ao ponto em que pode mostrar
explicitamente as regras de negócio governando seu comportamento está
atingindo o nível mais avançado da hierarquia. Neste patamar, a organização
monitora ativamente seus sistemas para garantir que seu comportamento esteja
como planejado, e dessa forma são possíveis as detecções e diagnósticos de
qualquer comportamento anormal do sistema.
25
Existem diversos padrões de Metadados para finalidades distintas de
informações. Para se ter uma idéia da variedade de esforços é mencionado alguns
destes padrões segundo a pesquisa de Souza (2000) na Tabela 2.
Padrão de Metadados Descrição
Directory Interchance Format (DIF) Cria entradas de diretórios que
descrevem um grupo de dados.
Government Information Locator Service (GILS) Informações governamentais.
Federal Geographic Data Committee (FGDC) Descrição de dados geo-espaciais.
Machine Readable Card (MARC) Catalogação bibliográfica.
Dublin Core (DC) Dados sobre páginas da web.
Consortium for the Interchange of Museum
Information (CIMI)
Informações sobre museus.
TABELA 2 – PADRÕES DE METADADOS
Para efeito deste estudo são considerados os principais padrões de
Metadados relacionados com o ambiente de desenvolvimento de aplicações
conforme Tabela 3.
Órgão Padrão Descrição Tipo
ISO ISO/IEC 11179
Especificação e padronização de
elementos de dados.
Jure
ISO IRDS - Information Resource
Dictionary System
Controle de um ambiente de
gerenciamento de recurso da
informação.
Jure
EIA CDIF - CASE Data Interchange
Format
Definição de metamodelos para
integração de ferramentas.
Facto
ECMA PCTE - Portable Common Tool
Environment
Trata de interfaces de
ferramentas/repositório.
Jure
W3C XML - eXtensible Mark-up
Language
Define e estrutura páginas da web.
Facilita a troca de Metadados na
Internet.
Facto
MDC MDIS - Meta Data Interchange
Specification
Padrão para troca de Metadados entre
Ferramentas da Tecnologia de
Informação.
Facto
26
MDC OIM - Open Information Model
Facilita compartilhamento e reuso no
desenvolvimento de aplicações e data
warehouse.
Facto
TABELA 3 – PADRÕES DE METADADOS E AMBIENTE DE DESENVOLVIMENTO
Deste conjunto (Tabela 3) a ser estudado, somente os trabalhos da ISO (11179 e
IRDS) e da ECMA (PCTE) são padrões “de jure”, ou seja, desenvolvidos por
representações nacionais e oficiais. Todos os outros são padrões “de facto”, ou
seja, conduzidas por consórcios de empresas do mercado.
3.6.4 BPML – Business Process Modelling Language
BPML é um padrão proposto pela BPMI.org (Business Process
Management Initiative), uma organização independente consorciada pela Sun,
Intalio, Sterling Commerce e outras. BPML pode ser visto como uma linguagem
que compete com outros standards como WSFL da IBM a XLANG da Microsoft, o
qual recentemente gerou uma fusão criando o BPEL4WS.
BPML foi originalmente desenvolvida para habilitar o gerenciamento
baseado em padrões para processos de e-business usados com a tecnologia
BPMS (Business Process Management System). Ela pode ser aplicada a uma
variedade de cenários, incluindo integração de aplicações empresariais e
composição de Web Services.
A linguagem BPML é uma especificação dedicada a processos de negócio
executáveis. A especificação inclui suporte compreensivo em controles de fluxos,
fluxo de dados e fluxo de eventos com estruturas de envio, recebimento e
execução paralela e sincronização.
Os principais ingredientes do BPML relacionados a Metadados são:
atividades, processos, contextos, propriedades e sinais. As atividades são
componentes que realizam funções específicas. Existem dois tipos de atividades:
simples e complexas. Atividades simples são atômicas enquanto que as
complexas são decompostas em atividades menores.
27
Um processo é uma atividade complexa que pode ser invocada por outros
processos. Um processo que é definido independentemente de outros processos é
chamado um processo top-level. Um processo que é definido para executar dentro
de outro processo é chamado de processo aninhado. Além disso, existem dois
tipos de processos especiais: processos de exceção e de compensação.
FIGURA 9 – EXEMPLO DE CODIFICAÇÃO BPML
A Figura 9 apresenta um exemplo de codificação em BPML, onde é
demonstrado um processo composto por uma ou mais seqüências, que por sua
vez são compostas por uma ou mais atividades.
Contextos são muito importantes em BPML. Um contexto define um
ambiente para execução de atividades relacionadas. O contexto pode ser usado
para trocas de informação e execuções coordenadas. Um contexto contém
definições locais que só são aplicadas dentro do escopo daquele contexto.
Definições locais incluem propriedades, processos e sinais, entre outros.
Contextos podem ser aninhados em um contexto filho (recursivamente) que herda
definições de seus contextos pai e podem sobrepor características. Um processo
pode ter um contexto no qual ele pode ser compartilhado por todas as atividades
que o executam como parte daquele processo.
Propriedades são usadas para trocas de informação e podem existir
somente em um contexto.
Uma definição de propriedade tem um nome e um tipo enquanto cada
instância da propriedade tem um valor no alcance dos tipos de uma definição
correspondente. Pode-se pensar em propriedades como atributos (ou variáveis de
28
instanciação) de um processo. Sinais são usados para coordenar a execução de
atividades que são executadas dentro de um contexto comum para sincronizar
atividades paralelas. Dessa forma, Sinais podem ser entendidos como
mensagens, e há construções a serem enviadas como uma mensagem (sinais
raise) e esperar uma mensagem sincronizar o sinal.
A notação das atividades é utilizada para especificar a execução de funções
com seus comportamentos especificados por atributos. Tipos suficientes de
atividades são contemplados, com 10 atividades simples e 7 complexas que
modelam a execução estruturada de processos de negócio. A definição de um
processo é um template que instancia instâncias de processos. Ela é construída
para modelar a execução de processos de negócio. As exceções são manipuladas
através de processos de exceção e manipuladores de falhas. A compensação
também é suportada para reverter o efeito das atividades em processos.
As transações de operações de negócio são suportados com três maneiras
através de declaração de atividades: Como atividades atômicas, processos
persistentes e transações aninhadas. A notação de agendamento é utilizada para
gerar eventos por tempo que podem ser disparados na instanciação de processos.
BPML foi construída no topo da descrição de serviço WSDL.
O padrão oferecido pela BPMI é muito similar a BPEL. Como diferenças
principais BPML habilita a especificação de múltiplos processos em um único
documento XML e relações de comunicação entre esses processos. Além disso,
BPML não está amarrada com WSDL. Conseqüentemente, o protocolo de
comunicação de BPML é concordante.
3.6.5 XLANG – X Language Originada pela Microsoft, XLANG é o segundo predecessor de BPEL. É uma
linguagem que torna possível formalizar processos de negócios como longas
interações em uma organização. As interações entre serviços podem ocorrer
através de trocas de mensagens expressas em forma de operações WSDL.
29
A especificação define extensões WSDL para descrever comportamentos
de processos de um Web Service similar a WSCI. De forma adicional, provê meios
de definir correlação de mensagens, regras, eventos e manipulação de exceções
bem como declaração de transações.
Um serviço de descrição XLANG é definido como um serviço de descrição
WSDL com elementos de extensão que descrevem o comportamento do serviço
como parte do processo de negócio. XLANG foca no comportamento público e
visível na forma de trocas de mensagens.
Uma interação em XLANG é uma instanciação de um serviço. Dessa forma
as mensagens trocadas não necessariamente precisam ser entregues para a
correta porta de destino, mas também para a instância correta do serviço que
define a porta, onde cada mensagem contém um “token de correlação”. Um
conjunto de tokens de correlação (chamado “conjunto de correlação”) é definido
como um conjunto de propriedades compartilhadas por todas as mensagens no
grupo de correlação.
XLANG assume que determinadas port types, usadas na definição de
serviços de descrição XLANG, são restrições que contém somente operações de
entrada, ou somente operações de saída. Um comportamento de um serviço
XLANG é composto por ações.
Essas ações podem ser operações WSDL, delays (por exemplo, uma
thread tem que ser pausada para outros processos serem executados), e “ações
raise” (isto é, a notificação de condições excepcionais).
Em um serviço XLANG, as ações são combinadas usando processos
básicos de controle, como ‘while’, ‘sequence’, ‘empty’, ‘switch’, ‘all’, ‘pick’ e formas
avançadas ‘context’ e ‘compensate’. O processo de ‘context’ provê um framework
para declarações locais, manipulação de exceções e comportamentos
transacionais. Contextos podem ser usados para delinear o escopo de parte de
um comportamento que tem propriedades de transação. Um exemplo de uma
codificação XLANG está na Figura 10, que demonstra o operador all, que compõe
toda a seqüência de atividades do processo de negócio.:
30
<all>
<sequence>
<!—realizar reserva de avião -->
</sequence>
<sequence>
<!-- realizar reserva de veículo-->
</sequence>
<sequence>
<!—realizar reserva de hotel-->
</sequence>
</all>
FIGURA 10 – EXEMPLO DE CODIFICAÇÃO XLANG
Internamente XLANG sinaliza que um processo de compensação implícito
ou explícito está associado com um contexto, e isso pode ser invocado usando o
processo de compensação. XLANG não informa a respeito de ações de
compensação, mas sobre processos de compensação.
3.6.6 WSFL - Web Service Flow Language A linguagem proposta pela IBM é um dos predecessores de BPEL. É uma
linguagem completa e neutra e está integrada com UDDI e WSDL para seleção
dinâmica de Web Services. WSFL habilita desenvolvedores a criar, executar e
combinar Web Services em complexos processos e fluxos de trabalhos.
Em um ambiente WSFL são inclusos os conceitos de suporte de transação,
informação gráfica de posições, e dados estatísticos. O controle de fluxo em
WSFL é modelado via grafos direcionados.
WSFL por si só não negocia com modelos de processos de negócio;
particularmente é uma especificação de como implementar um modelo de
processo de negócio usando a arquitetura de Web Services. WSFL pode ser
usado para criar uma representação em XML de um modelo de negócio, e então
suprir a representação XML em uma aplicação middleware desenvolvida para
invocar e gerenciar os processos.
Um documento WSFL usa elementos de Metadados como ‘Tipos
Provedores de Serviço’ para identificar as regras dos implementadores de
31
atividades específicas dentro do contexto de um dado modelo de processo de
negócio. O ‘Tipo Provedores de Serviço’ é definido por um documento interface de
Web Service usando WSDL.
Provedores de serviço devem oportunamente implementar a interface de
Web Service apropriada em razão de classificar os tipos apropriados de
provedores de serviço para manipular uma atividade em particular nos processos
de negócios. Cada processo é representado em um modelo XML chamado
modelo de fluxo. O modelo de fluxo é uma definição abstrata do processo de fluxo
de trabalho. O modelo contém elementos ‘Ativos’, que definem atividades que
serão implementadas na forma de um Web Service definido pela WSDL. Ligações
de controle e ligações de dados também são partes do modelo de fluxo. O
primeiro descreve a seqüência de atividades, enquanto que o último define o fluxo
de dados de uma atividade para outra.
Além do modelo de fluxo há um ‘Modelo Global’ que detalha como um dado
processo é implementado. O “modelo global” define a identidade, a locação e a
implementação do provedor de serviço que implementa uma regra específica.
Uma vez que o global e o modelo de fluxo de um dado processo de negócio está
definido, todo o processo de negócio pode ser definido como um único Web
Service, que dever ser usado por outros processos de negócio.
FIGURA 11 – EXEMPLO DE CODIFICAÇÃO WSFL
32
Um exemplo de codificação WSFL se encontra na Figura 11, onde é ilustrada uma
atividade com suas variáveis de entrada e saída bem como chamadas a funções
(no caso, a operação “checar”).
3.6.7 BPEL4WS - Business Process Execution Language for Web Services
A especificação BPEL4WS (ou comumente chamada de BPEL), é um esforço
combinado da IBM e Microsoft. Ela foi construída combinando as características
de WSFL e XLANG, através de blocos de linguagem estruturada herdada de
XLANG com grafos direcionados originário da WSFL.
BPEL é especificada como um formato de trocas somente via esquemas
XML, que é capaz de modelar tarefas como chamadas a Web Services onde as
entradas e as saídas são especificadas por mensagens e os endereços são
identificados via URI (Uniform Resource Identifiers) através de port types WSDL.
SOAP é utilizado como o protocolo de comunicação. A intenção da linguagem é
dar suporte tanto a modelagem de processos executáveis como abstratos.
O fluxo de controle de BPEL pode ser modelado orientado a blocos ou
orientado a grafos, e a manipulação de dados é expressa via variáveis e
operações relacionadas. A identificação de instanciação de processos é
executada via conjuntos de correlações. Regras de processos participantes são
definidas via chamadas a links de parceiros.
Um processo abstrato é um protocolo de negócio que especifica o
comportamento de trocas de mensagens entre diferentes parceiros sem revelar
seu comportamento interno.
Um processo executável especifica a ordem de execução entre um número
de atividades que constituem o processo, os parceiros envolvidos no processo, as
trocas de mensagens entre esses parceiros e as falhas e manipulação de
exceções que especificam o comportamento a ser adotado em casos de erros e
exceções.
O processo BPEL4WS é um tipo de fluxograma, onde cada elemento no
processo é chamado de atividade. Uma atividade pode ser tanto primitiva ou
33
estruturada. O conjunto de atividades primitivas contém: invocações ou chamadas,
as quais são utilizadas para invocar uma operação em algum Web Service;
atividade de receber, que é utilizada para esperar por uma mensagem de uma
fonte externa; atividade de responder, que é usada quando é necessária uma
resposta a uma fonte externa; atividade de esperar, quanto é necessário esperar
por algum tempo; atividade de designar ou atribuir, para copiar dados de um lugar
para outro; atividade de informar, para indicar erros na execução; atividade de
finalização, quando é necessário finalizar toda a instância do serviço; e atividade
de verificação, quando o processo está ocioso.
Algumas atividades estruturadas baseadas em Metadados são definidas
para habilitar a apresentação de estruturas complexas. Elas são: sequence, que é
usada para definir uma ordem de execução; switch, usada para roteamentos
condicionais; while, usado para loopings, pick, para saída de condições baseadas
em tempo ou triggers externas; flow, usada para execução paralela de atividades
para roteamentos paralelos; scope, para agrupamento de atividades a serem
tratadas pelo mesmo manipulador de falhas; e compensate, que é usado para
desfazer os efeitos de atividades já completadas.
Um exemplo da codificação BPEL se encontra na figura 12, onde o
operador sequence determina o fluxo de negócio como um todo; o operador
partner, que indica os parceiros e regras de um processo; container, que
estabelece as entidades para validação do processo; invoke, responsável por
executar um Web Service e reply, que envia uma resposta.
34
FIGURA 12 – EXEMPLO DE CODIFICAÇÃO BPEL4WS
Atividades estruturadas podem ser aninhadas e combinadas de diferentes
maneiras. Atividades internas que são executadas em paralelo o uso dos links
podem facilitar o controle da ordem de execução. Há alguns casos chamados
controle de ligações que permitem a definição de grafos direcionados. Os grafos
podem ser aninhados, mas devem ser acíclicos.
Além disso, BPEL suporta manipulação de erros e falhas bem como
compensações de transações. BPEL pode ser usada para descrever composição
e coreografia de Web Services.
BPEL também faz uso de duas especificações significantes e
complementares, as quais são Coordenação-WS e Transação–WS e foram
também desenvolvidas juntamente por IBM e Microsoft. Eles tratam em como
coordenar a dependência de resultado de curtos e longos processos de negócio. A
Transação-WS especifica um framework que permite que um Web Service
monitore o sucesso ou fracasso de cada atividade individual e coordenada.
<partners> <partner name = “customer” serviceLinkType = “Ins:loanApproveLinkType” myRole=”approver”/> <partner name = “approver” serviceLinkType = “Ins:loanApproveLinkType” partnerRole = “approver”/> </partners> <containers> <container name = “request” messageType=”loandef:CreditInformationMessage”/> <container name = “approvalinfo” messageType=”apns:approvalMessage”/> </containers> <sequence> <receive name = “receive1” partner = ”customer” portType = “apns:loanApprovalPT” operation = “approve” container = “request” createInstance = “yes”> </receive> <invoke name = “invokeapprover” partner = “approver” portType = “apns:loanApprovalPT” operation = “approve” inputContainer = “request” outputContainer = “approvalInfo”></invoke> <reply name=”reply” partner = “customer” portType = “apns:loanApprovalPT” operation = “approve” container= “approvalinfo”></reply> </sequence>
35
Também provê o monitoramento de processos e, de forma confiável, cancelar o
processo em caso de alguma coisa dar errado durante o trajeto da informação. A
especificação de Coordenação-WS por outro lado define um framework pelo qual
os serviços podem trabalhar em um “contexto de coordenação” compartilhado.
Esse contexto contém a informação necessária para conectar várias atividades
conjuntas.
BPEL4WS emprega o conceito de parceiros para modelar diretamente a
colaboração peer-to-peer entre processos de negócio e serviços parceiros. Uma
instância de processo de negócio pode somente ser criada quando uma
mensagem ou evento são recebidos pelo link de parceiros. Os links parceiros
definem as relações estáticas e abstratas com outro parceiro baseados em Web
Services port types utilizados na interação.
O primeiro working draft de BPEL4WS foi lançado em Abril de 2004 pela
OASIS BPEL TC, na qual foi baseada na especificação de BPEL4WS que foi
originalmente desenvolvida juntamente com IBM, Microsoft e BEA em Agosto de
2002, e então posteriormente modificada na v.1.1 em Abril 2003 com participação
adicional da SAP e Siebel Sistemas.
3.6.8 WSCI - Web Service Choreography Interface
WSCI foi desenvolvida juntamente com Sun, SAP, BEA e Intalio em Junho
de 2002, dirigido a descrever uma linguagem de definição de interface para
coreografar o fluxo de mensagens entre Web Services. A linguagem foi concebida
no topo de WSDL que define as operações Web Services envolvidas em
atividades WSCI.
Essa especificação foi a primeira em se tratando de composição de Web
Services baseada em XML que provê um padrão para especificação de toda a
colaboração entre Web Services provedores e usuários de serviços, descrevendo
dessa forma as trocas de mensagens que acontecem entre as partes envolvidas.
WSCI especifica apenas “processos de negócio abstratos” que são
observados entre Web Services modelados. Ações são utilizadas para definir um
36
pedido básico e mensagens de resposta. Serviços externos são invocados através
de chamadas. WSCL também suporta transações e manipulação de exceções.
Os conceitos fundamentais do modelo são a interface de definição,
coreografia de atividades, definição de processos e suas propriedades, correlação
de mensagens, manipulação de exceções, transação, descrição de compensação
e participação dinâmica. Os detalhes do comportamento dos Web Services são
descritos nos processos que estão contidos na interface. Um Web Service pode
expor múltiplas interfaces para suportar múltiplos cenários.
A especificação WSCI endereça a coreografia de Web Services em dois
níveis primários. No primeiro nível, WSCI constrói no topo das port types WSDL
capacidades de descrever o fluxo de mensagens trocadas por um Web Service no
contexto de um processo.
A construção introduzida por WSCI permite a descrição de
“comportamentos observáveis” externamente de um Web Service, facilitando a
expressão de dependências seqüenciais e lógicas de trocas em diferentes
operações em port types WSDL.
As atividades podem ser atômicas representando a unidade básica de
comportamento de um Web Service, como atividades complexas nos quais são
compostas recursivamente de serviços atômicos. WSCI suporta execuções
seqüenciais, paralelas, loopings e execuções condicionais. WSCI suporta a
definição de dois tipos de processos, em outras palavras, Níveis Top e processos
aninhados podem ser referenciados usando-se expressões Call ou Spawn.
Propriedades são introduzidas no WSCI como modelagem de artefatos
usados para referenciar um “valor” dentro da definição da interface. São
equivalentes a variáveis em outras linguagens. Contexto é um conceito WSCI que
descreve o ambiente no qual um conjunto de atividades é executado. Uma
definição de contexto pode conter dois diferentes tipos de declarações:
propriedades locais e definições de processos locais. O conceito de correlação
descreve como as conversações estão estruturadas e quais as propriedades
devem ser trocadas para reter a consistência semântica da conversação. A
37
correlação não está limitada a uma simples conversação entre dois participantes;
ela pode se multiplicar em várias conversações entre diferentes participantes.
A especificação também suporta declarações de comportamentos
excepcionais que são exibidas por um Web Service num dado ponto da
coreografia.
A declaração de comportamentos excepcionais é parte da definição de
contexto. A transação descreve, através de uma perspectiva de interface, as
propriedades transacionais das atividades que são executadas nesse contexto.
Uma transação pode ser tanto atômica como aninhada. WSCI suporta também a
descrição de visões multi-participantes de todo o processo de trocas de
mensagens do Modelo Global WSCI. WSCI também dá suporte a extensibilidade
de construção de linguagens.
Como características adicionais, WSCI incorpora a correlação de trocas
relacionadas, agrupamento de trocas em transações, manipulação de exceções e
aspectos comportamentais dinâmicos de um Web Service.
FIGURA 13 – EXEMPLO DE CODIFICAÇÃO WSCI
Na Figura 13 se encontra um exemplo da codificação WSCI, no qual
apresenta uma operação de recebimento de mensagens por um Web Service,
através da função Receive Order, e a confirmação, através do operador action e
da função Confirm.
WSCI foi submetido ao W3C em Agosto de 2002. A W3C formou um novo
grupo de trabalho chamado Web Services Choreography Working Group dentro
38
das atividades de Web Services, A especificação WSCI é uma das idéias
primárias para a formação de WS-CDL que o W3C está trabalhando atualmente.
3.6.9 WS-CDL - Web Service Choreography Description Language
WS-CDL é uma especificação da W3C cujo principal objetivo é a
interoperabilidade em composições, longas interações e colaboração peer-to-peer
entre os Web Services participantes. A especificação descreve uma visão global
do comportamento de trocas de mensagens de todos os Web Services
participantes que estão envolvidos na colaboração do negócio. WS-CDL é
puramente uma especificação para processos de negócio abstratos, independente
de plataforma e linguagens de programação que são utilizadas para implementar a
participação dos Web Services.
Os modelos WS-CDL na colaboração peer-to-peer entre participantes com
diferentes regras utilizam coreografia. A coreografia faz uso de interações e
notações de atividades para definir os relacionamentos, que representam as
trocas de mensagens entre dois Web Services participantes descritos em WSDL.
A coreografia suporta exceções e compensações com Exception Block e
Finalizer Block. As mensagens que são trocadas entre os participantes são
modeladas com variáveis e tokens, onde tipos podem ser especificados em XML
Schema ou WSDL. Canais são utilizados para especificar como e onde as trocas
de mensagens podem ter lugar. Atividades realizam o trabalho de interação com
os operadores de interação, bem como os resultados nas trocas de mensagens.
Operadores Perform invocam outras coreografias, e Assigns associam os valores
as variáveis. Control são estruturas que modelam atividades combinadas simples,
incluindo Sequence, Parallel e Choice. A sincronização entre atividades pode ser
ativada via WorkUnit, que define a condição que deve ser satisfeita para a
atividade ter progresso. A Figura 14 apresenta um exemplo de um trecho de
codificação em WS-CDL, onde é apresentado o operador de seqüência, as suas
operações e os relacionamentos participantes.
39
FIGURA 14 – EXEMPLO DE CODIFICAÇÃO WS-CDL
O primeiro working draft da especificação WS-CDL foi lançado em Abril de
2004. A situação atual do padrão é “Candidato a Recomendação”, com sugestões
a serem enviadas até 31 de Março de 2006 para a W3C.
40
4 Estudo de Caso e Análise
4.1 Exemplo de um Processo interorganizacional
O processo a ser analisado ilustra vários aspectos dos relacionamentos
entre coreografias externas e orquestrações internas dos parceiros da
colaboração. As linguagens de composição escolhidas para a análise deste caso
são WS-CDL e BPEL4WS, por serem standards mais recentes e em constante
processo de atualização e evolução. A codificação em BPEL4WS foi feita com o
estudo da ferramenta ORACLE BPEL Process Manager, e a codificação em WS-
CDL foi realizada de acordo com especificação própria, pois a linguagem ainda
não possui interface gráfica.
O exemplo utilizado é um cenário de workflow chamado de “Coleta de
Taxas Municipais” que descreve um Web Services com uma interação entre três
participantes: o pagador(Cliente), o agente de negócio ou administrador de taxas
(o responsável pela coleta das taxas) e o provedor público de serviços (o poder
local).
De acordo com o processo tradicional, as empresas estão sujeitas as taxas
municipais, e as mesmas devem enviar uma situação anual via responsável para o
poder público, que é o responsável por coletar as taxas. O município checa a
declaração de estado anual das empresas, calcula as taxas e retorna uma
avaliação ao responsável.
Neste caso os administradores públicos concordaram em implementar um
novo serviço online, no qual oferecem ao público e companhias a submissão de
seus status e informações para as tarifas anuais via internet. Devido a várias
considerações legais, o processo deve ser realizado de uma maneira peer-to-peer
e deve integrar requerimentos de segurança como integridade, confidencialidade e
não repudiação.
De uma forma bastante condensada são apresentados os passos chave
que descrevem os fundamentos da colaboração de como a se chegar nos
objetivos comuns do negócio:
41
1) O cliente envia seu estado anual ao administrador público;
2) O administrador checa a informação para validação e completude e
rejeita a documentação em algum caso onde alguma informação chave esteja
ausente e notifica o Cliente. Nesse caso o cliente complementará a informação e
reenviará o documento;
3) O administrador realiza algumas complementações para o
processamento do documento (por exemplo, formatação, complementar dados
legais, etc);
4) O administrador encaminha o processo de situação anual do seu
Cliente para o poder público e envia a ele uma confirmação de aceitação;
5) O município calcula os impostos;
6) O município retorna o valor dos tributos a administrador de taxas;
7) O administrador processa a avaliação do município;
8) O administrador informa seu cliente sobre as taxas resultantes.
A Figura 15 mostra o modelo da coreografia como um Diagrama de
Atividades UML. Ele descreve a colaboração de três serviços em termos das
interações no qual os participantes estão envolvidos. A informação do modelo está
delimitada para os comportamentos da colaboração, correspondendo assim ao
fluxo de mensagens entre os participantes, a interação lógica – ou as interfaces
requeridas que são chamadas pelos participantes – e o fluxo de controle entre as
ações como o envio ou recebimento das interações resultantes em mensagens
enviadas de um dos participantes para outro.
42
Cliente Administrador de Taxas Município
FIGURA 15 – DIAGRAMA DE ATIVIDADES – COLETA DE TAXAS MUNICIPAIS
Enviar Situação Anual
Receber Situação Anual
Checar Situação Anual
SA
Receber Rejeição
Receber Confirmação de Aceitação
Receber Pedido de Taxa Processada
Enviar Rejeição
[Dados incompletos] [Dados Completos]
Enviar Confirmação de Aceitação
Enviar Situação Anual Processada
Receber Situação Anual Processada
Enviar Pedido de Cobrança de Taxa
Receber Pedido de Taxa
Enviar Pedido de Taxa Processada
R
A
PTP
PT
SA
43
4.2 Implementação WS-CDL da Coleta de Taxas Municipais
WS-CDL é uma linguagem declarativa em XML para a especificação de
protocolos de colaboração baseados em Web Services. Esta especificação prevê
uma visão global ou pública dos participantes de uma colaboração em um modelo
peer-to-peer de Web Services distribuídos de forma a se chegar em um objetivo
comum no negócio. O protocolo descreve seus comportamentos através de
mensagens que são trocadas bem como as operações que são oferecidas.
Levando em consideração o exemplo da “Coleta de Taxas Municipais”, a
codificação abaixo mostra duas partes de um documento WS-CDL: a informação
de pacotes e a definição de coreografia, conceitos cuja definição se encontra
abaixo.
Definição do Processo em WS-CDL Informação do Pacote 1 <package name="ServicodeSituacaoAnual" ...> 2 <informationType 3 name="correlationId" 4 type="string"/> 5 <informationType 6 name="SituacaoAnual " 7 type="SituacaoAnual.xsd"/> … 8 <roleType name="RegrasServicoProvedor"> 9 <behavior name="ReceberSituacaoAnual " 10 interface="AdministradordeTaxa.wsdl"/> 11 </roleType> 12 <roleType name="RegrasServicoRequisitor"> 13 <behavior name="ReceberPedidodeTaxa" 14 interface="AdministradordeTaxa.wsdl"/> 15 </roleType> … 16 <relationshipType name ="AdministradorTaxasCliente"> 17 <role type="RegraCliente" /> 18 <role type="RegraServicoProvedor "/> 19 </relationshipType > … 20 <participantType name ="AdministradordeTaxa"> 21 <role type="RegradoServicoProvedor "/>
44
22 <role type="RegradoServicoRequisitor "/> 23 </participantType> ... 24 <channelType 25 name="SubmeterSituacaoAnualdeTaxa " 26 action="request "> 27 <passing 28 action= "respond" 29 channel= " SubmeterSituacaoAnualdeTaxaProcessada "/> 30 <reference> 31 <token name="taxAdvisorRef"/> 32 </reference > 33 <identity> 34 <token name="processId"/> 45 </identity> 36 </channelType> ... 37 <choreography > ...</choreography > 38 </package> Definição de Coreografia 1 <choreography name="SubmissaodeSituacaoAtual " 2 root="true"> 3 <relationship type="tns:AdministradorTaxasCliente"/> 4 <relationship type="tns:MunicipioTaxasCliente "/> ... 5 <variableDefinitions > 6 <variable name= "AS" 7 mutable= "true" 8 free= "false" 9 informationType = "SituacaoAnual " 10 silent= "false"/> 11 roleTypes =“Cliente, AdministradordeTaxas^“ ... 12 </variableDefinitions > 13 <sequence> 14 <interaction name="SubmissaoSituacaoAnual " 15 channelVariable ="tns:SubmeterSituacaoAnual " 16 operation ="ReceberSituacaoAnual " initiate="true"> 17 <participate relationshipType =" AdministradorTaxasCliente" 18 fromRole="tns:RegraCliente" 19 toRole="RegraServicoProvedor "/> 20 <exchange name = "EnvioeTrocadeSituacaoAnual "
45
21 action= "request" 22 informationType = "SituacaoAnual " > 23 <send variable = "AS"/> 24 <receive variable= "AS"/> 25 </exchange> 26 </interaction> … 27 </sequence> ...
28 </choreography >
Informação de Pacotes: O elemento pacote é a raiz de toda a definição de
coreografia e contém definições de informationType para as mensagens e
variáveis, por exemplo, o documento “SituacaoAnual” enviado do Cliente para o
Administrador de Taxas (linhas 5 a 7), que processa instâncias de dados
correlacionados (linhas 2-4). Esses tipos de dados são utilizados dentro da parte
da definição da coreografia. Um roleType representa um ator da colaboração
como a “RegrasdeProvedordeServico” nas linhas 8-11. Esse elemento associa
nomes de operações a suas respectivas interfaces WSDL via elemento behavior
(comportamento). Por exemplo, a “RegrasdeProvedordeServico” é esperada para
implementar a operação “ReceberSituacaoAnual”, o qual é especificada no
arquivo WSDL correspondente.
O elemento relationshipType casa duas regras e opcionalmente um
subconjunto do comportamento que eles exibem. Por exemplo, o relationshipType
“AdministradorTaxaCliente” associa uma “RegraCliente” para uma
“RegraServicoProvedor”, que por sua vez é uma das duas regras onde um
“AdministradordeTaxas” é esperado para a implementação (linhas 16 a 19).
Um participantType representa um grupo lógico de regras. Por exemplo, o
participantType “AdministradordeTaxa” implementa duas regras: de um lado o
“RegrasdeProvedordeServiço” e do outro lado o “RegrasdoRequisitordoServiço”.
Um channelType indica a regra que um recebedor de uma mensagem que está
sendo executada e opcionalmente quais comportamentos são esperados para a
implementação: o channelType “SubmeteSituacaoAnual” especifica um canal de
46
retorno para respostas para a submissão de um documento (linhas 24-26).
Finalmente, cada pacote contém uma ou mais definições de coreografia (linha 37).
Definição de Coreografia: O centro de uma colaboração é definido pelo
elemento choreography. Ele especifica um conjunto de interações peer-to-peer.
Um pacote pode conter uma ou mais coreografias, uma é declarada como a
coreografia raiz (linhas 1-2). A coreografia em primeiro lugar especifica os
relacionamentos. Neste caso existem dois relacionamentos: um entre um
Administrador de Taxas e seu Cliente, e outro entre o Administrador de Taxas e o
Município (linhas 3-4). Em segundo lugar, as variáveis são declaradas, por
exemplo, a variável “AS” do tipo “SituacaoAnual” somente será usada pela
“RegradoCliente” e a “RegradoServicoProvedor”.
O elemento interaction é ao bloco básico de construção da comunicação.
Ele participa em um relationshipType e especifica a direção do fluxo de mensagem
em um padrão de interação: a mensagem flui do remetente(especificado pelo
FromRole) para o destinatário (ToRole) se o atributo action do elemento exchange
estiver atribuído para request. O elemento exchange também captura o nome da
operação associada com essa interação. Elementos de interação podem ser
aninhados internamente por atividades de controle de fluxo (por exemplo, linhas
13-27).
47
4.3 Implementação BPEL4WS da Coleta de Taxas Municipais.
A codificação abaixo mostra um exemplo de um processo BPEL para um
dos participantes da coreografia. Com o intuito de implementar essa parte da
coreografia, o Administrador de Taxas orquestra a seqüência de chamadas para
serviços internos e externos através de um processo BPEL chamado
“ProcessoAdministradorTaxas”.
Definição do Processo em BPEL 1 <process name="ProcessoAdministradorTaxas" …> 2 <partnerLinks > 3 <partnerLink name="SubmissaoSituacaoAnual " 4 myRole="RegradoProvedordeServico" partnerRole ="RegraCliente"/> 5 partnerLinkType =“SubmissaoSituacaoAnual “ ... 6 </partnerLinks > 7 <partners > 8 <partner name ="RegraCliente"> 9 </partner > 10 <partner name ="RegraServicoProvedor "> … 11 </partners > 12 <variables > 13 <variable name="AS" messageType="SituacaoAnual"/> …. 14 </variables> 15 <sequence name ="1st level"> 16 <receive name="ReceberSituacaoAnual" 17 partnerLink ="SubmeterSituacaoAnual " 18 portType="PTReceberSituacaoAnual" 19 operation="ReceberSituacaoAnual " 20 variable="AS" createInstance="yes"> 21 <correlations > 22 <correlation set="tax:processId" initiate="yes"/> 23 </correlations > 24 </receive> 25 <invoke name="ChecarSituacaoAnualLocal " 26 partnerLink="Local" operation ="ChecarSituacaoAnual "
48
27 inputVariable="CheckASLocalVar"> 28 <correlations > 29 <correlation set="tax:processId" initiate="yes"/> 30 </correlations > 31 </invoke> ... 32 </sequence> 33 </process>
A composição dos serviços orquestrados é oferecida através de uma
interface de acordo com a especificação da coreografia. Um partnerLink define
partes internas e externas (myRole e partnerrole) que interagem com as instâncias
do processo e os port types que são necessitam ser implementados (linhas 2-6).
Um partnerLinkType é uma extensão BPEL, o qual é utilizada na definição
WSDL. Ela define duas regras de uma troca bilateral de mensagens e suas port
types.
Um elemento partner (linhas 7-9) pode ser utilizado para agrupar múltiplos
partnerLinks.
Variables (12-14) descrevem os tipos de mensagens utilizadas em um
processo BPEL. Uma variable é identificada por um único nome e está associado
com um tipo de mensagem.
Variáveis armazenam mensagens recebidas e gerenciam mensagens a
serem enviadas para outras partes. Um processo BPEL descreve a ordem de
execução das operações Web Services via atividades básicas e estruturadas. Um
exemplo de atividade é o receive (17-25). A atividade bloqueia o processo até a
mensagem correta chegar. Invocações de operações de web service remotos são
modelados como atividades invoke. As linhas 26-32 ilustram uma invocação one-
way assíncrona, isto é, apenas uma variável de entrada, mas nenhuma variável de
saída é declarada. Interações de pedido/resposta síncronas podem ser expressas
incluindo uma variável de saída para armazenar a sincronia da mensagem de
resposta enviada.
O controle de fluxo lógico de um processo BPEL é definido através de
atividades estruturadas. No exemplo é utilizado um sequence para a execução
seqüencial. Um correlationSet descreve partes das mensagens que são únicas
49
para uma instância do processo. Os apelidos para essas partes das mensagens
são chamados de propriedades.
4.4 Características de Comparação dos Padrões de Linguagens de Composição As linguagens de composição para especificações de Web Services têm um
importante papel na habilitação de serviços dinâmicos e composição por usuários
e agentes de software.
De acordo com as características apresentadas e descritas na Seção 3.6,
existem várias linguagens de composição, propostas por pesquisas acadêmicas e
grupos industriais para descrição de serviços, composição, execução e
interpretação com XML sendo a base para a tecnologia de composição de Web
Services.
Algumas das linguagens de composição para Web Services possuem
semânticas bem definidas, outras são baseadas em padrões de fluxo de trabalho,
enquanto algumas são a combinação de outras linguagens independentes.
Esta seção apresenta as características das linguagens para composição
de serviços de Web Services (também chamada de linguagens de execução de
Web Services ou ainda linguagens de Orquestração de Web Services) e a lista de
especificações comuns a todas as linguagens.
Outra motivação para este trabalho é não só mostrar uma comparação
entre as linguagens, mais ainda ressaltar os pontos fortes e fracos de cada
implementação.
Através de uma análise das especificações obteve-se uma lista com 13
conceitos de alto nível comuns as linguagens de composição relacionados a
metamodelos(modelo de representação de dados/Metadados de cada linguagem,
ou seja, a sua especificação propriamente dita):
1 –Tarefas de Entrada e Saída – Utiliza-se o termo tarefa para referenciar
as unidades básicas de trabalho em como os relacionamentos lógicos e temporais
são modelados em um processo. As entradas e saídas dessas tarefas podem ser
modeladas usando tipos XML simples ou complexos.
50
2 – Endereço das Tarefas – O endereço especifica onde ou como um
serviço pode ser localizado para realizar uma tarefa. O endereço pode ser
modelado diretamente via uma referência de serviço ou indiretamente via uma
consulta que identifica um endereço de serviço.
3 – Atributos de Qualidade – Quando um conjunto de serviços potenciais
são gerados por uma consulta, os atributos de qualidade podem ser utilizados
para identificar o melhor serviço.
4 – Protocolo de tarefas – O protocolo define um conjunto de convenções
para controlar as interações com um serviço realizando uma tarefa. Web Services
utilizam SOAP como esse protocolo.
5 – Controle de Fluxo – O controle de fluxo define os relacionamentos
temporais e lógicos entre diferentes tarefas. O fluxo de controle pode ser
especificado via grafos direcionados, blocos aninhados de instruções de controle
ou processos de álgebra.
6 – Manipulação de Dados – especifica quais variáveis serão utilizadas em
uma instância de um processo e como os valores atuais dessas variáveis serão
calculados.
7 – Identidade de instâncias – Esse conceito endereça como uma instância
de um processo e as mensagens relacionadas são identificadas. A correlação
utiliza um conjunto de elementos de mensagem que são únicos para uma
instância de um processo para rotear as mensagens para instâncias de processos.
A geração de um identificador único que é incluído nas trocas de mensagens pode
ser uma abordagem alternativa.
51
8 – Regras – As regras provém de uma abstração dos participantes em um
processo. Regras são assinaladas para tarefas e usuários para regras. Um
mecanismo de resolução pode alocar tarefas de um processo instanciado para
usuários.
9 – Eventos – Eventos representam mudanças no mundo real. Eventos
manipuladores fornecem os meios para responder a eles através de uma forma
predefinida.
10 – Exceções – exceções ou faltas são erros durante a execução de um
processo. Em caso de exceções dedicadas manipuladores de exceções irão
desfazer tarefas com insucesso ou terminar a instância do processo.
11 – Transações – transações ACID definem um conjunto de operações
que tem semântica do “tudo ou nada”. Eles têm que efetuar rollbacks quando uma
operação parcial falha. Transações de Negócio representam transações de longa
duração. Em caso de falha os efeitos de uma transação de negócio devem ser
apagadas por um processo de compensação.
12 - Apresentação Gráfica – A representação gráfica de um modelo de
processo de negócio contribui para a sua compreensibilidade. Os anexos de uma
representação gráfica pode ser uma parte explícita do metamodelo.
13 – Dados estatísticos: Análise de Performance de um processo de
negócio em dados estatísticos como custo de duração das tarefas.
Os 13 conceitos ainda possuem formatos que são utilizados em pelo menos
quatro áreas de aplicação:
52
Composição: Refere-se a definição da implementação interna de processos
executáveis de negócio. Composição de Web Services definem processos de
negócio executáveis que são construídos por um conjunto de Web Services.
Coreografia: Define externamente o comportamento de um processo de
negócio. A coreografia de Web Services se refere ao correto contento e ordem de
mensagens de trocas de duas partes em um processo de negócio.
Análise de Negócio: Análise de Negócio se refere a apresentação de
processos de negócio a gerentes. É construído na visualização de processos e
anotações com estatísticas.
Análise Formal: Refere-se a verificação de diferenças formais de critérios
de qualidade. Como exemplo, pode-se citar a característica “prazo de validade”.
Recentemente, a modelagem de processos de negócio vêm se tornando
assunto de várias especificações e esforços de padronização. Diferentes
consórcios incluindo a OMG(Object Management Group), OASIS(Organization for
the Advancement of Structured Information Standards), BPMI(Business Process
Management Initiative, UM/CEFACT (United Nation Centre for Trade Facilitation
and Electronic Business), W3C (World Wide Web Consortium), e a WfMC
(Workflow Management Coalition), e também instituições comerciais e grupos
acadêmicos já tem ou irão propor metamodelos e formatos para a modelagem de
processos de negócio.
Dessa forma as 13 características comuns ao estudo de cada linguagem
apresentadas na descrição acima foram estudadas, sugerindo assim informações
que possam contribuir para um processo de padronização das linguagens de
composição explanadas, sejam na forma de salientar características com
comportamentos ideais bem como a sugestão de uma nova linguagem de
composição para Web Services.
53
4.5 Resultados Obtidos na Análise dos Padrões de Linguagens de Composição
De acordo com as especificações de cada linguagem e análise das
características apresentadas na seção anterior é apresentado um quadro
comparativo das linguagens de composição analisadas, onde um “Sim” indica que
a linguagem suporta a característica apresentada, e o “X” indica que a linguagem
não suporta a característica analisada.
WSFL XLANG WSCI BPML BPEL4WS WS-CDL
Tarefas de Entrada e Saída Sim Sim Sim Sim Sim Sim
Endereço das Tarefas Sim Sim Sim Sim Sim Sim
Atributos de Qualidade Sim X X X X X
Protocolos de Tarefas Sim Sim Sim X Sim Sim
Controle de Fluxo Sim Sim Sim Sim Sim Sim
Manipulação de Dados Sim X X Sim Sim Sim
Identidade de Instâncias Sim Sim Sim Sim Sim X
Regras Sim Sim Sim Sim Sim Sim
Eventos Sim Sim X Sim Sim X
Exceções Sim Sim Sim Sim Sim Sim
Transações X Sim Sim Sim Sim Sim
Apresentação Gráfica X X X X X X
Dados Estatísticos X X X X X X
TABELA 4 – COMPARAÇÃO DAS LINGUAGENS DE COMPOSIÇÃO
Tendo em vista as informações acima apresentadas e o estudo formal de
cada linguagem, observa-se que as linguagens WS-CDL, BPML e BPEL4WS são
as únicas que possuem um mínimo de evolução ao longo dos últimos anos (de
acordo com a Figura 8). Por essa razão, um resultado mais aprofundado dessas
linguagens é apresentado.
WS-CDL provê mecanismos suficientes para modelar comportamentos de
trocas de mensagens, BPML facilita a modelagem de execução de processos
enquanto BPEL4WS se atém a cobrir ambos os aspectos. BPML possui uma
54
semântica mais abrangente às necessidades de suporte às empresas,
principalmente em se tratando de aplicações de integração, enquanto WS-CDL é
mais natural para modelagem de colaborações business-to-business.
A colaboração peer-to-peer é uma característica essencial que precisa ser
modelada. Tanto BPEL4WS como WS-CDL modelam a colaboração em notações
de interações entre serviços descritos em WSDL.
WS-CDL possui alternativas mais flexíveis para representar regras que
parceiros pretendam utilizar, enquanto BPEL4WS facilita a ligação de processos
de colaboração para privar os processos via padrões de recebimento e resposta.
Colaborações de negócio requerem o estabelecimento e aplicação de
acordos para a qualidade dos serviços, porém todas as linguagens analisadas não
endereçam isso.
Todas as especificações suportam a parte imperativa de composição de
serviços, que inclui a manipulação de exceções, compensação, estados de
contexto e todas as capacidades para compor estruturas mais complexas e
atividades. As estruturas de controle dessas linguagens são suficientes o bastante
para modelar seqüências, paralelos, sincronização, escolhas exclusivas e
escolhas simples, enquanto que BPEL4WS tem a capacidade de modelar
escolhas múltiplas e merges de sincronização. BPEL4WS tem mais poder
semântico em manipulação de eventos que BPML. Em transações e suporte a
alinhamentos de estados, WS-CDL está à frente de BPEL4WS.
Questões de segurança e mensagens confiáveis não são bem manipuladas
em todas essas linguagens embora WS-CDL e BPEL4WS possuem algumas
estruturas de controle para tais finalidades. O suporte a representações
semânticas e a descrição não está presente, com exceção de um suporte simples
de WS-CDL em descrições textuais ou referências a documentos para propósitos
de documentação.
Em se tratando de ferramentas de desenvolvimento, BPEL4WS tem um
maior suporte da indústria. Os maiores fabricantes de software aliaram BPEL4WS
em seus produtos, incluindo IBM, Microsoft, SeeBeyound, Intalio, Popkin,
FiveSight, Collaxa e Proforma. BPWS4J da IBM é a engine que executa os scripts
55
da linguagem. A Microsoft construiu o BPEL4WS suport para o Biztalk Server
2004 e a Oracle possui suporte ao BPEL4WS através de módulos em sua suíte de
desenvolvimento - Oracle BPEL Process Manager, que utiliza a ferramenta
JDeveloper. Alguns produtos suportam BPML e são encontrados em alguns
produtores de software como a InfoSys.
O fato é que existe mais suporte no mercado para BPEL4WS. Atualmente
não há suporte para WS-CDL, e ainda não está claro se o mercado aceitará o WS-
CDL. Contudo, essa é uma alternativa dirigida pelo W3C agora, que pode emergir
num futuro proeminente.
O estudo comparativo mostra que BPEL4WS, BPML e WS-CDL se
sobrepõem em muitos aspectos. BPEL4WS é mais expressivo e completo se
comparado a BPML, especialmente no aspecto de modelagem de colaboração. A
modelagem de processos de negócio com Web Services no aspecto de
colaboração de negócio e ligação com processos internos executáveis vem se
tornando o foco principal. Por razões históricas de desenvolvimento de padrões os
grandes produtores de software vêm atuando de acordo com os seus produtos,
onde complexidades desnecessárias existem e semânticas incompletas precisam
se tornar claras.
A ausência na promoção de desenvolvimentos relacionados ao BPML
desde 2002 e o desvio dos maiores suportes de desenvolvimento do BPML para o
campo do BPEL4WS, tem tornado este último mais promissor. BPEL4WS também
cobre a modelagem de comportamentos de trocas de mensagens, chamados
“protocolos de negócio”, que também é domínio para WS-CDL.
É difícil prever se a convergência da composição de Web Services
acarretará em uma linguagem única e padronizada. Isso acontece devido
principalmente as diferentes escolas de pensamento das produtoras de software.
A grande carência de definições formais e semânticas de estruturas das
linguagens também atrasa esse processo. A continuidade da padronização pode
conduzir a alguns níveis de convergência nos conceitos atrás dos padrões. Com a
maturidade dos padrões, cada vez mais as ferramentas de software estão
incorporando novas atividades para a execução de processos.
56
É interessante notar particularmente o desenvolvimento tanto de BPEL4WS
como de WS-CDL, pois eles foram especificados por duas grandes organizações
de padronização – OASIS e W3C, respectivamente. O suporte dos fornecedores
não pode ser negligenciado pela influência e formação de padrões abertos.
No mundo acadêmico, a pesquisa em composição de Web Services está
focada na descoberta e composição de Web Services automatizados e dinâmicos.
É esperado então que o trabalho em Web Services semânticos auxiliará na
criação de um framework de composição para a composição de processos de
negócio baseados em Web Services.
57
5 Conclusões e Trabalhos Futuros
Este trabalho procurou levantar os principais esforços existentes na área de
tratamento da composição de serviços em sistemas baseados em linguagens para
Web Services.
Os Web Services se tornarão em pouco tempo ferramentas consideradas
indispensáveis em novas aplicações, principalmente aquelas em que existam
implementações complexas para validação e recuperação das informações, a fim
de aumentar a agilidade e segurança dos dados e diminuir a intervenção do ser
humano.
Embora de forma bastante condensada, foi demonstrado o estado da arte
relacionado à questão dos protocolos já padronizados na arquitetura de Web
Services, assim como o levantamento das questões relacionadas à composição
de serviços e um panorama das principais linguagens de composição ao longo do
tempo.
Enquanto ainda há um longo caminho a ser alcançado para se estabelecer
um padrão de um protocolo para a composição de Web Services, os usuários e os
analistas de sistemas têm que escolher uma linguagem apropriada que vai de
encontro aos seus objetivos de negócio sem esperar por padronizações maduras.
Os usuários estão em face de um desconhecimento das capacidades de vários
padrões e ferramentas disponíveis para composição de Web Services. Um dos
propósitos deste trabalho foi discutir as várias padronizações para auxiliar as
diversas entidades na compreensão das linguagens.
Supondo que o mercado adote uma realidade onde a maioria das
linguagens a serem analisadas se tornem padrões a serem estabelecidos. De
acordo com tal afirmação, isto acarretaria uma perspectiva onde serviços
independentes estariam sendo descritos em diferentes linguagens.
Um dos problemas que vêm à tona em conseqüência disto seria a
interoperabilidade entre os agentes de software tentando compor serviços de
composição diferentes, onde seriam necessários, por exemplo, ontologias para se
estabelecerem mapeamentos entre essas linguagens. Frente a esse possível
58
cenário, é necessário estabelecer uma alternativa para a padronização das
linguagens de descrição e composição de Web Services.
Com o surgimento dessa variedade de linguagens, onde cada uma se
propõe a ser o padrão, se tornou necessário a avaliação de tais linguagens e uma
análise crítica dos méritos e deméritos das mesmas, com o intuito de facilitar o
entendimento e aumentar um possível escopo que leve a uma linguagem
padronizada e universal de composição para Web Services, além de enfatizar as
principais características de tais linguagens.
Dessa forma, chega-se como resultado que as linguagens WS-CDL e
BPEL4WS estão em vantagem na disputa das ferramentas de desenvolvimento
para Web Services, pois são standards que estão em constante atualização, com
vantagem para BPEL devido, sobretudo, por este estar presente no mercado
sendo utilizado em muitas suítes de desenvolvimento, por apresentar a maioria
das características pesquisadas e a ausência de uma especificação mais
elaborada por parte da W3C.
Sendo assim acredita-se que foi imprescindível uma análise aprofundada
das linguagens de composição para Web Services, contribuindo também para um
melhor tratamento dos Metadados relacionados ao trâmite de dados na Web e
gerando, conseqüentemente, maior rapidez e qualidade no fluxo das informações.
Este trabalho pretendeu se tornar um ponto de partida para futuros desafios
que pretendam usufruir das arquiteturas aqui apresentadas, seja na
implementação de protótipos, a criação de uma nova linguagem utilizando as
principais características expostas ou até mesmo na criação de novas extensões
para as linguagens de composição de Web Services existentes.
59
Referências
[1] Borden, R. The metadata interchange specification. Disponível em:
<http://www.tdan.com/i001fe11.htm>. Acesso em: Março. 2005.
[2] Business Rules Group. What is a Business Rule?. Disponível em:
<http://www.businessrulesgroup.org/brgdefn.htm>. Acesso em: Março 2005.
[3] Computerwire. What is metadata? Disponível em:
<http://it.civil.auc.dk/it/education/thesis/broendsted_larsen_2002/html/metadatadefi
nitioner/computerwire.html>. Acesso em: Março 2005
2000.
[4] Ikematu, R.S. A Importância De Um Repositório De Metadados Para A
Celepar. CURITIBA: FESP, 2001.
[5] Heb, A; Kushmerick, N. Learning to Attach Semantic Metadata to Web
Services. Computer Science Department, University College Dublin, Ireland.
[6] Mendling, J. Metadata Relationships for the Comparison of BPML and
BPEL4WS. University of Trier, Business Information Systems, Germany.
[7] Mendling, J; Müller, M. A Comparison of BPML and BPEL4WS. Universität
Trier, D-54286 Trier, Germany.
[8] BPEL4WS(2005) Disponível em <http://dev2dev.bea.com/technologies/Web
Services/BPEL4WS.jsp>. Arquivo consultado em Janeiro 2005.
60
[9] BPEL4WS(2005) Disponível em < http://www-
106.ibm.com/developerworks/Web Services/library/ws-bpel/>. Arquivo consultado
em Janeiro 2005.
[10] Wohed, P; M.P. Van der Aalst, W; Dumas, M. Analysis of Web Services
Composition
Languages: The Case of BPEL4WS
[11] Lazovik, A; Aiello, M; Papazoglou, M. Planning and monitoring the
execution of web service requests. Department of Information and
Telecommunication Technologies
University of Trento
[12] Woodman, S.J.; Palmer, D.J.; Shrivastava, S.K.; Wheater, S.M. Notations for
the Specification and Verification of Composite Web Services. School of
Computing Science,
University of Newcastle. June 2004. Technical Report Series
[13] M.P. Van der Aalst; Dumas, M. Web Service Composition Languages: Old
Wine in New Bottles?. Department of Technology Management Eindhoven
University of Technology, Centre for Information Technology Innovation
Queensland University of Technology
[14] Benatallah, B; Casasti, F; Toumani, F.; Hamadi, R. Conceptual Modeling of
Web Service Conversations. Intelligent Enterprise Technologies Laboratory
HP Laboratories Palo Alto. March 27th , 2003*
[15] Srivastava, S.; Koehler, J. Web Service Composition - Current Solutions
and Open Problem. IBM India Research Laboratory, IBM Zurich Research
Laboratory
61
[16] Maciel Pereira, D. Uso do XML na Representação de Processos.
Universidade Federal do Rio de Janeiro – IM-DCC/NCE, Dezembro de 2002
[17] Shapiro, R. A Comparison of XPDL, BPML and BPEL4WS, Cape Visions.
[18] J. Feijó Lopes, C; Carlos Ramalho, J. Web Services: Metodologias de
Desenvolvimento, Fevereiro de 2004.
Chandrasekaran, S.; A. Miller, J; S. Silver, G; Arpinar, B; P. Sheth, A.
Composition, Performance Analysis and Simulation of Web Services.
Department of Computer Science/LSDIS Lab The University of Georgia .
[19] Leymann, F.; Web Services Flow Language (WSFL 1.0). Member IBM
Academy of Technology IBM Software Group.
[20] M.P. Van der Aalst; Dumas, M.; H.M. ter Hofstede, A; Wohed, P. Pattern
Based Analysis of BPML (and WSCI)
[21] Ukoln Metadata Group. An overview of resource description issues.
Disponível em: <http://www.ukoln.ac.uk/metadata/desire/overview/rev_01.htm>.
Acesso em: Dez. 2004.
[22] Inmon, William H. Enterprise meta data. DM Review Magazine, v. 8, n. 10,
Nov.
1998. Disponível em: <http://www.dmreview.com/master.cfm?NavID=1>.
Acesso em: Dez. 2004.
[23] Marco, David. Building and managing the meta data repository – a full
lifecycle
guide. New York: J. Wiley & Sons, 2000.
62
[24] Souza, Terezinha B. et al. Metadados: catalogando dados na internet.
Disponível
em: <http://www.puccamp.br/~biblio/tbsouza92.html>. Acesso em: Jan. 2005.
[25] Moriarty, Terry. A metadata management how-to. Disponível em:
<http://www.inastrol.com/Articles/9702.htm>. Acesso em: Fev. 2005.
[26] World Wide Web Consortium ( W3C ) – XML. Disponível em:
http://www.w3.org/XML/. Acessado em Fevereiro/2005
[27] Object Management Group ( OMG ) - XML Technology. Disponível em:
http://www.omg.org/technology/xml/index.htm. Acessado em Fevereiro/2005
[28] Becker, A. K. e Sobral, D. B. C. J. B. S. Web Services e XML - Um Novo
Paradigma da Computação Distribuída - Universidade Federal de Santa
Catarina
[29] <http//:www.develop.com/downloads/Web ServicesLGFLN.pdf>. Disponível na
Internet em 01/8/2003
[30] SZYPERSKI, C. Component software : beyond object-oriented programming.
New York : Addison-Wesley, 1998.
[31] Sametinger, J. Software Engineering with Reusable Components.
Springer-Verlag, 1997
63
Anexos
A. Exemplo de uso dos Web Services
Este capítulo apresenta um exemplo que converte graus Celsius em
Fahrenheit. Foi desenvolvido utilizando a plataforma Visual Studio.
A.1. Código
O código apresentado abaixo possui um método que recebe o valor, que é
utilizado no cálculo e retorna o valor em XML que será utilizado na exibição no
browser do usuário.
<%@ WebService Language="VB" Class="MathService" %>
Imports System
Imports System.Web.Services
Public Class MathService : Inherits WebService
<WebMethod()> Public Function Conversao(a As Integer) As Integer
Return((a -32) * 5) / 9
End Function
End Class
A.2. Resultado final em XML
O resultado ao se consumir um WebService, é o retorno ao brownser do
resultado, sempre em formato XML, o qual é interpretado e exibido para o usuário.
A.2.1. Url que chama o WebService
Url que informa o valor do parâmetro A, para o arquivo conversão.asmx,
passando 50 como valor.
HTTP://localhost:8081/conversao.asmx/Conversao?a=50
64
A.2.2. Retorno em XML
Este é o código enviado em formato XML para o brownser do usuário, o qual
interpreta e mostra o resultado na tela.
<?xml version="1.0" encoding="utf-8" ?>
<int xmlns="HTTP://tempuri.org/">10</int>
A.3. Arquivo de publicação – WSDL
Este é o arquivo de publicação dos Web Services, para facilitar a sua
localização.
<?xml version="1.0" encoding="utf-8" ?>
- <definitions xmlns:HTTP="HTTP://schemas.xmlsoap.org/wsdl/HTTP/"
xmlns:soap="HTTP://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="HTTP://www.w3.org/2001/XMLSchema"
xmlns:s0="HTTP://tempuri.org/"
xmlns:soapenc="HTTP://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="HTTP://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="HTTP://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="HTTP://tempuri.org/"
xmlns="HTTP://schemas.xmlsoap.org/wsdl/">
- <types>
- <s:schema elementFormDefault="qualified"
targetNamespace="HTTP://tempuri.org/">
- <s:element name="Conversao">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" />
</s:sequence>
</s:complexType>
65
</s:element>
- <s:element name="ConversaoResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="ConversaoResult"
type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="int" type="s:int" />
</s:schema>
</types>
- <message name="ConversaoSoapIn">
<part name="parameters" element="s0:Conversao" />
</message>
- <message name="ConversaoSoapOut">
<part name="parameters" element="s0:ConversaoResponse" />
</message>
- <message name="ConversaoHttpGetIn">
<part name="a" type="s:string" />
</message>
- <message name="ConversaoHttpGetOut">
<part name="Body" element="s0:int" />
</message>
- <message name="ConversaoHttpPostIn">
<part name="a" type="s:string" />
</message>
- <message name="ConversaoHttpPostOut">
<part name="Body" element="s0:int" />
</message>
- <portType name="MathServiceSoap">
66
- <operation name="Conversao">
<input message="s0:ConversaoSoapIn" />
<output message="s0:ConversaoSoapOut" />
</operation>
</portType>
- <portType name="MathServiceHttpGet">
- <operation name="Conversao">
<input message="s0:ConversaoHttpGetIn" />
<output message="s0:ConversaoHttpGetOut" />
</operation>
</portType>
- <portType name="MathServiceHttpPost">
- <operation name="Conversao">
<input message="s0:ConversaoHttpPostIn" />
<output message="s0:ConversaoHttpPostOut" />
</operation>
</portType>
- <binding name="MathServiceSoap" type="s0:MathServiceSoap">
<soap:binding transport="HTTP://schemas.xmlsoap.org/soap/HTTP"
style="document" />
- <operation name="Conversao">
<soap:operation soapAction="HTTP://tempuri.org/Conversao"
style="document" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
</binding>
67
- <binding name="MathServiceHttpGet" type="s0:MathServiceHttpGet">
<HTTP:binding verb="GET" />
- <operation name="Conversao">
<HTTP:operation location="/Conversao" />
- <input>
<HTTP:urlEncoded />
</input>
- <output>
<mime:mimeXml part="Body" />
</output>
</operation>
</binding>
- <binding name="MathServiceHttpPost" type="s0:MathServiceHttpPost">
<HTTP:binding verb="POST" />
- <operation name="Conversao">
<HTTP:operation location="/Conversao" />
- <input>
<mime:content type="application/x-www-form-urlencoded" />
</input>
- <output>
<mime:mimeXml part="Body" />
</output>
</operation>
</binding>
- <service name="MathService">
- <port name="MathServiceSoap" binding="s0:MathServiceSoap">
<soap:address location="HTTP://localhost:8081/conversao.asmx" />
</port>
- <port name="MathServiceHttpGet" binding="s0:MathServiceHttpGet">
<HTTP:address location="HTTP://localhost:8081/conversao.asmx" />
</port>
68
- <port name="MathServiceHttpPost" binding="s0:MathServiceHttpPost">
<HTTP:address location="HTTP://localhost:8081/conversao.asmx" />
</port>
</service>
</definitions>
A.4. Arquivo envelope para WebService - SOAP
O arquivo descrito abaixo é o envelope para os Web Services que permite
aos mesmos circularem sob o protocolo HTTP.
POST /conversao.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "HTTP://tempuri.org/Conversao"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="HTTP://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="HTTP://www.w3.org/2001/XMLSchema"
xmlns:soap="HTTP://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Conversao xmlns="HTTP://tempuri.org/">
<a>int</a>
</Conversao>
</soap:Body>
</soap:Envelope>HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="HTTP://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="HTTP://www.w3.org/2001/XMLSchema"
xmlns:soap="HTTP://schemas.xmlsoap.org/soap/envelope/">