Os aplicativos de serviços de mediação interceptam e modificam mensagens transmitidas entre serviços existentes (provedores) e clientes (solicitantes) que desejam utilizar estes serviços. Os serviços de mediação são implementados utilizando módulos de mediação que contêm fluxos de mediação.
Os módulos de mediação podem ser implementados no Barramento do WebSphere Enterprise Service ou no WebSphere Process Server.
Na SOA (Arquitetura Orientada a Serviços), os serviços representam funções de negócios que podem ser reutilizadas e combinadas em uma forma ad hoc para criar sistemas de negócios responsivos. Estes serviços possuem conexões livremente acopladas em vez de serem conectados diretamente uns aos outros.
Para ilustrar os conceitos abordados neste tópico, utilizaremos um exemplo de um simples serviço de mediação que fornece cotações de ações. Um aplicativo cliente fornece uma consulta contendo um símbolo de ações e um ID do cliente para o serviço de mediação, o qual processa a consulta. O nível de assinatura do cliente é determinado e, dependendo desse nível, a consulta é roteada para o fornecedor de serviços apropriado. A cotação que é retornada do fornecedor de serviços é convertida na moeda de preferência do cliente antes de ela ser retornada ao aplicativo cliente.
Estamos utilizando um serviço de mediação porque desejamos utilizar diferentes interfaces a partir de dois fornecedores de serviços externos e expor uma interface única ao aplicativo cliente. Também precisamos construir o serviço rapidamente, com a capacidade de alteração on demand e sem modelar um processo de negócios.
Exemplo Cotação de Ações
No exemplo cotação de ações, essas são as partes no módulo de mediação, conforme visto no editor Montagem.
Os Serviços fornecem acesso às suas funções de negócios por meio de interfaces, para que o serviço possa ser utilizado ou chamado. Os módulos de mediação e módulos de integração de negócios possuem interfaces em suas exportações para que o módulo possa ser chamado. A interface define as operações que podem ser chamadas e os dados que são transmitidos, dados tais como argumentos de entrada, valores retornados e exceções. Nos componentes do fluxo de mediação, estes dados são transmitidos em forma de mensagens.
Em um componente de mediação, a interface que permite que o solicitante de serviços acesse a mediação por meio de uma exportação chamada de interface de origem.
Um componente do fluxo de mediação acessa um fornecedor de serviços (ou importação) por meio de uma referência que especifica a interface utilizada pela importação para chamar o serviço. Em um componente do fluxo de mediação, esta referência é chamada de referência de destino.
Exemplo Cotação de Ações
Estas são as interfaces e referências utilizadas no exemplo Cotação de Ações:
Exemplo Cotação de Ações
No exemplo de cotação de ações, StockQuote_MediationFlowComponent é o componente do fluxo de mediação que aceita um ID do cliente e um símbolo como entrada, processa a mensagem e retorna a cotação na moeda preferida pelo cliente. Estas são as partes do componente do fluxo de mediação
Um fluxo de mediação consiste em uma seqüência de etapas de processamento que são executadas quando uma mensagem de entrada é recebida. Um fluxo de mediação é criado no editor de Fluxos de Mediação, ao incluir um número de primitivas de mediação que definem as etapas de processamento. As conexões representam o fluxo da mensagem entre as primitivas de mediação.
Exemplo Cotação de Ações
No exemplo Cotação de Ações, o fluxo de mediação é definido pelas seguintes conexões de operação:
Consulte os tópicos "Editor de Fluxo de Mediação" e "Construindo Fluxos de Pedido e de Resposta" sob os links relacionados para obter informações adicionais.
.Os fluxos de mediação
consistem em uma seqüência de primitivas de mediação, que definem as etapas de
processamento. Uma primitiva de mediação recebe uma mensagem, processa-a e propaga a mensagem processada ao próximo nó ou primitiva no fluxo. Por exemplo,
uma primitiva Busca ao Banco de Dados recupera um valor de um banco de dados e configura-o na mensagem. Um conjunto de primitivas
de mediação prontas para serem utilizadas está disponível na paleta do editor de Fluxos de Mediação. Se precisar de recursos de mediação que não são fornecidos por este conjunto de primitivas,
poderá criar primitivas de mediação customizadas para chamar sua própria implementação Java ou um serviço importado.
As primitivas de mediação possuem terminais que recebem e propagam mensagens.
Por exemplo, estes são os terminais de um Registrador de Mensagens:
Consulte os tópicos "Editor de Fluxo de Mediação" e "Construindo Fluxos de Pedido e de Resposta" sob os links relacionados para obter informações adicionais.
Conforme definido anteriormente, uma mensagem é uma comunicação enviada de um aplicativo ou serviço para outro aplicativo ou serviço. As mensagens em fluxos de mediação são representadas como SMOs (Service Message Objects).
Os Service Message Objects são objetos de negócios aprimorados que incluem os dados do aplicativo e informações do cabeçalho relacionados ao protocolo de transporte utilizado para chamar um serviço como SOAP ou JMS. Um Service Message Object é composto de um corpo que contém os dados do aplicativo (também conhecidos como carga útil ou mensagem de operação) em um objeto de negócios e cabeçalhos contendo informações de contexto adicionais. Você pode utilizar as expressões XPath 1.0 para acessar elementos em uma mensagem. A figura a seguir representa um Service Message Object:
Consulte "Construindo Expressões XPath" no tópico "Construindo Fluxos de Pedido e de Resposta" sob tarefas relacionadas para obter um exemplo do relacionamento entre um objeto de negócios em uma interface e uma condição XPath 1.0.
A maioria das primitivas de mediação possui propriedades especificadas usando uma expressão XPath 1.0, por exemplo, a propriedade raiz leva uma expressão do XPath 1.0 que especifica a parte da mensagem que está disponível para a primitiva para ser processada. Você também pode utilizar uma expressão XPath 1.0 para identificar um ou mais campos em uma mensagem e utilizá-los para filtrar ou selecionar ao especificar um valor.
Consulte "Construindo Expressões XPath" no tópico "Construindo Fluxos de Pedido e de Resposta" sob tarefas relacionadas para obter um exemplo do relacionamento entre um objeto de negócios em uma interface e uma condição XPath 1.0.
Geralmente, as interfaces e operações de serviços diferentes não são idênticas e o Service Message Object da origem precisa ser transformado em um formato que possa ser aceito pelo destino. Uma primitiva de mediação de transformação XSL é requerida quando os tipos de mensagens de origem e de destino são diferentes.
Para transformar a mensagem no editor de Fluxos de Mediação, defina o escopo da mensagem a ser transformada com uma expressão XPath 1.0. Em seguida, mapeie os objetos de mensagem de origem e de destino utilizando o editor de mapeamento XML.
Informações relacionadas