• Nenhum resultado encontrado

Transformação de mensagens

No documento Bus de mensagens (páginas 32-35)

1. Introdução

2.4.1 Transformação de mensagens

A camada de transformação compreende o formato de todas as mensagens que passam no bus podendo alterar (transformar) o seu conteúdo. Os dados de uma mensagem são reestruturados resultando numa nova mensagem que é compatível com a(s) aplicações destino. A camada de transformação conhece a forma como cada aplicação comunica com o exterior, assim como que partes de informação têm significado para cada aplicação.

É comum a camada de transformação conter ferramentas de parsing e métodos de detecção de padrões para obter a estrutura dos formatos de mensagens suportados. Cada campo da mensagem é então representado individualmente. Uma vez que o corpo da mensagem se encontre decomposto em vários campos, é possível fazer diferentes combinações entre campos formando uma nova mensagem. A Figura 1 ilustra um cenário de transformação onde se altera a estrutura da mensagem (transformação de esquema) quando se retiram os campos SSN1, SSN2 e SSN3 substituindo-os pelo campo SSN. Também ocorre uma transformação de dados ao se substituir o valor “Virginia” por “Va”

Figura 1: Exemplo de transformação de uma mensagem. Fonte: [Linthicum – 2000]

2.4.1.1 Conversão de esquemas

Uma conversão de esquemas trata-se de um tipo de transformação da qual resulta a alteração da própria estrutura da mensagem com o objectivo de a tornar compatível com a aplicação destino [Lin04]. Por exemplo, considere-se um banco onde existe um conjunto de aplicações que trocam informação entre si. Entre elas, um sistema DB2 que utiliza a seguinte estrutura de dados para representar contas de clientes:

Cust_Nr. Alphanumeric 10

Amt_Due Numeric 10

Date_of_Last_Bill Date

E que envia mensagens com a seguinte informação:

Cust_Nr AB99999999

Amt_Due 560.50

Date_of_Last_Bill 09/17/2007

Suponha-se que estes dados têm de ser enviados para outro sistema onde a mesma informação é armazenada com a seguinte estrutura:

Customer_Number Numeric 20

Money_Due Numeric 8

Last_Billed Alphanumeric 10

No exemplo dado, o esquema utilizado pelo sistema destino é diferente do esquema utilizado pelo sistema origem. Mover informação entre estes dois sistemas sem uma conversão de esquemas apropriada, resultará em erros provocados por incompatibilidade. Para uma comunicação correcta é necessário converter a informação de “Cust_Nr”, cujo formato é alfanumérico, numa cadeia de 20 dígitos. Aqui terá de ser adoptada uma regra de conversão de caracteres em números (por exemplo assumir que A=1, B=2, C=3, etc.). O mesmo terá de ser feito em relação à data.

Muitos sistemas de mensagens utilizam o seu próprio formato interno. Cada mensagem que for recebida é convertida nesse formato, aplicadas as regras necessárias e à saída a mensagem é convertida no formato desejado pelo sistema destino.

2.4.1.2 Conversão de dados

Uma conversão de dados corresponde à alteração do valor de campos da mensagem, sem necessariamente alterar a sua estrutura. Um exemplo de uma conversão de dados consiste em substituir os caracteres “LX” pela palavra “Lisboa” num campo que indique uma cidade. Muitas vezes alterações de estrutura e dados são realizadas em simultâneo (como foi o caso no exemplo da secção anterior, onde se converteram os caracteres “A” e “B” em números).

[Lin04] indica duas formas para realizar uma conversão de dados; recorrer a algoritmos ou utilizar tabelas de look-up. O uso de algoritmos consiste em calcular o novo valor de um campo da mensagem com base num procedimento especificado (o algoritmo). Como exemplo de uma conversão por algoritmo tem-se o caso de uma mensagem que contém entre os seus campos o preço de um produto e a quantidade vendida e o sistema destino exige que a mensagem inclua um campo com o valor total facturado. A transformação é então feita utilizando um algoritmo que multiplica o valor de cada produto pelas unidades vendidas.

No caso do uso de tabelas look-up a conversão de campos é feita por análise de uma tabela de duas colunas e sem recurso a nenhum algoritmo extra. Por exemplo, para converter os caracteres “LX” em “Lisboa” é acrescentada à tabela de look-up uma linha com esta informação.

2.4.2 Encaminhamento

O encaminhamento constitui a camada do bus de mensagens capaz de identificar a chegada de uma mensagem e encaminhá-la para a aplicação apropriada.

Quando o bus recebe uma mensagem, inspecciona o seu conteúdo decidindo se a mensagem é entregue a uma ou várias aplicações ou se, em vez disso, é descartada. O funcionamento desta camada baseia-se em tabelas de encaminhamento cujas linhas são avaliadas como uma expressão booleana. O resultado de cada avaliação determina se a mensagem é ou não entregue a uma determinada aplicação.

O encaminhamento pode ser de vários tipos, nomeadamente:

Channel-based – Define-se canal (em algumas tecnologias referido por tópico) como um destino de mensagens e é atribuído a cada canal um significado específico. Por exemplo, no contexto de uma entidade bancária, um determinado canal pode representar todas as mensagens com ordens de débito numa conta. Os remetentes enviam as mensagens para os canais conforme o seu significado. As aplicações interessadas em mensagens com um determinado significado registam-se no canal respectivo.

Subject-based – Adiciona-se a cada mensagem o campo subject que inclui uma descrição que identifica o tipo do conteúdo da mensagem. As aplicações indicam

quais os padrões de texto que pretendem encontrar nos campos subject das mensagens recebidas.

Content-based – O encaminhamento é realizado com base na análise de todo o conteúdo da mensagem. As aplicações especificam qual o conteúdo (ou padrão) que pretendem encontrar no corpo das mensagens recebidas.

O encaminhamento pode revelar-se uma ferramenta útil na distribuição de carga entre várias aplicações que processam pedidos. Por exemplo, num sistema distribuído de processamento de encomendas configura-se o encaminhamento para entregar a uma aplicação mensagens com encomendas entre 0€ e 5€; outra aplicação recebe mensagens com encomendas entre 10€ e 50€; outra recebe mensagens com encomendas a partir de 50€, etc.…

No documento Bus de mensagens (páginas 32-35)