O que é e o que faz ?
	
	Uma aplicação é
	confeccionada para usar uma fonte de dados, estabelecendo forte
	dependência entre ambas, na qual mudanças em um repercutem no outro. O
	Integrate é uma infra-estrutura para integrar
	informações registradas em fontes de dados heterogêneas, a partir de
	aplicações
	existentes, e que não exige a modificação nem das aplicações nem das
	fontes de dados.
	
	É uma proposta na forma de 
framework
	a ser empregada por desenvolvedores de código de sistemas de integração
	de dados heterogêneos, e busca oferecer uma padronização tecnológica
	que facilite a geração deste tipo de sistemas. Este emprego exige que a
	infra-estrutura fornecida seja
	estendida para contemplar as especificidades do caso de integração em
	questão. A infra-estrutura disponibilizada é
	baseada na arquitetura de mediadores e tradutores 
[9].
	
	Diversas propostas de integração ressaltam o significativo uso desta
	arquitetura, como Integra 
[4],
	MOMIS 
[6], CoDIMS 
[5], Garlic 
[7],
	TSIMMIS 
[8],
	LORIS 
[3], XQuare 
[11],
	XMF 
[1],
	dentre outros, que têm em comum a necessidade de acessar as fontes
	de dados após os devidos tratamentos semânticos. O Integrate implementa
	esta arquitetura, como pode ser visto na figura abaixo:
	
	
 
	Fig. 1: modelo genérico
	
	A maioria dos sistemas de integração pesquisados que influenciaram o
	Integrate fazem uso de uma interface própria para a interação com seus
	usuários. Esta interface utiliza
	internamente o modelo de dados do mediador e o esquema global definido
	por ele. Para este cenário, a infra-estrutura aqui proposta
	apresenta-se como uma solução para o problema. Trata-se de uma proposta
	genérica
	de solução. Outros detalhes podem ser vistos no item "
Desenvolvedor de mediador -
	modelo genérico".
	
	Para permitir a integração de dados onde as fontes de dados e as
	aplicações não sejam alteradas, estes cenários ficam inviabilizados.
	Para tentar solucionar este
	problema, o modelo de solução foi estendido, incluindo um
	interceptador, que age entre a aplicação cliente e o
	mediador, conforme a figura abaixo:
	
	
 
	Fig. 2: modelo estendido
	
	No modelo proposto a consulta original é interceptada e reescrita pelo
	mediador, uma para cada tradutor, e os resultados obtidos são
	integrados (também pelo
	mediador) antes de serem retornados à aplicação cliente. Outros
	detalhes podem ser vistos no item "
Desenvolvedor
	de mediador - modelo  estendido".
	
	Segue uma breve descrição dos módulos do modelo adotado.
	
	
Controlador
	- É responsável pela interação entre o mediador e os tradutores, sendo
	responsável pelo fluxo de atividades (workflow). Este módulo se
	assemelha ao componente
	“Controle”, proposto no CoDIMS 
[5].
	
	
Mediador -
	Módulo responsável pelo processamento semântico, onde se aplica toda a
	inteligência do modelo. No modelo tradicional (figura 1), este
	módulo é responsável pela interface com a aplicação cliente, e executa
	as subconsultas através dos serviços disponibilizados pelo Controlador,
	integrando os resultados antes de retorná-los à aplicação. Neste
	cenário, o Mediador solicita os serviços ao Controlador.
	
	No modelo estendido (figura 2), este módulo oferece serviços
	de geração das subconsultas e de integração dos resultados parciais.
	Neste cenário, o Controlador solicita os serviços ao Mediador.
	
	
Tradutor -
	Módulo que interage diretamente com as fontes de dados. Há um tradutor
	para cada fonte de dados. Tradutores para alguns formatos mais
	comuns são
	fornecidos. O modelo de solução, contudo, permite que outros sejam
	implementados, possibilitando a integração de
	fontes de dados que fazem uso de outros formatos.
	
	
Interceptador
	- Este módulo é responsável pelo desvio de fluxo de controle entre a
	aplicação e a fonte de dados original, quando implementado o modelo de
	solução estendido.
	Após interceptar as requisições da aplicação cliente, este módulo as
	redireciona ao
	Controlador, que as repassa ao Mediador, para que este gere as
	subconsultas para as fontes de dados de
	interesse. Estas subconsultas são então direcionadas às respectivas
	fontes de dados, por meio dos
	tradutores.
	
	No sentido inverso, os resultados obtidos das fontes de dados são
	repassados ao mediador para que sejam integrados. O resultado integrado
	é então entregue à aplicação
	cliente, no modelo e formato esperado por ela, conforme a fonte de
	dados original. A figura abaixo
	resume este processo.
	
	
	
	
	Enquanto a (a) exibe o cenário tradicional, onde a aplicação
	acessa diretamente a fonte de dados usando o formato definido, o
	cenário da figura (b) ilustra as trocas
	de formato feitas durante o processo. As linhas tracejadas representam
	a requisição da aplicação 
A
	enviada no
	formato conhecido por ela (
f_bd1)
	e interceptada pelo Interceptador. As requisições são redirecionadas ao
	mediador que retorna as subconsultas referentes às fontes de dados
	envolvidas nos seus
	respectivos formatos (no exemplo, formatos 
f_bd1
	e 
f_bd2),
	que são posteriormente repassadas às fontes de dados correspondentes
	através dos tradutores. No sentido inverso, os resultados são novamente
	repassado ao mediador, que executa a integração no formato conhecido
	por 
A (
f_bd1). Este
	resultado integrado é então entregue à aplicação pelo Interceptador.
	
	
Lookup -
	Interage com as fontes de dados para extrair os esquemas destas fontes.
	Disponibiliza uma API extensível para permitir que novas fontes de
	dados possam ser
	adicionadas, semelhante ao proposto em 
[2].
	
	
Metadados -
	Módulo responsável por manipular os arquivos de configuração do 
framework. Estes
	arquivos de configuração descrevem quais as fontes de dados serão
	consultadas por uma dada aplicação, entre outras.
	
	
	
Algumas definições.
	
	- O modelo de dados adotado é o
	relacional. Além da solidez deste modelo, normalmente os dados
	a serem integrados estão armazenados em fontes de dados relacionais. A
	troca de mensagens é feita via JDBC, mas pode ser feita através de
	mensagens XML, em modelo definido pelo framework.
	- O mediador é responsável pela definição do esquema global
	integrado. Para auxiliar esta tarefa, o framework
	disponibiliza serviços que facilitam a obtenção dos esquemas das fontes
	a serem integradas.
	- É
	de responsabilidade do mediador a integração dos esquemas e dos
	resultados obtidos, além de fornecer as subconsultas que são repassadas
	aos tradutores, devido à questões semânticas inerentes.
Escopo
	O principal resultado esperado do Integrate é disponibilizar uma
	infra-estrutura tecnológica que facilite o desenvolvimento de sistemas
	de integração que acessem informações registradas em fontes de dados
	heterogêneas.
	
	Na
	solução aqui proposta, há ênfase nas funções atribuídas aos Tradutores
	e na interação entre estes e o Mediador. Em conseqüência, Mediadores
	propriamente ditos, ontologias e outras questões correlatas estão além
	do escopo do Integrate, e nestes casos pouca funcionalidade é oferecida.
	
	Os serviços disponibilizados pelo Integrate permitem a criação de
	mediadores sem que estes conheçam necessariamente os detalhes de acesso
	às fontes de dados a serem integradas. Cabe ao Mediador as questões
	semânticas e a interação com as aplicações clientes, no cenário da
	figura 1. Cabe ao Integrate intermediar as conversões entre o
	Mediador e as fontes de dados, além da interação com as aplicações
	clientes, no caso do cenário estendido.
	
	O escopo do Integrate é destacado na figura abaixo:
	
	
 
	
	Como
	proposto, a interação entre a aplicação cliente e o Interceptador é
	realizada via JDBC. Por trabalhar internamente com o modelo relacional,
	o Integrate permite a troca de mensagens com o mediador através de JDBC.
	Para
	que as trocas de mensagens não exijam do mediador o conhecimento de
	JDBC, um formato comum será posteriormente definido pelo Integrate,
	abstraindo do mediador este conhecimento.
	
	Diante da complexidade
	pertinente à solução adotada, naturalmente nem toda aplicação pode se
	comportar adequadamente neste cenário.
	
	Configurações e exemplos de uso podem ser vistos nos 
tutoriais. Um
	trabalho completo, contendo extensa documentação sobre os conceitos
	pertinentes, pode ser encontrado 
aqui.