# EAI

EAI (do inglês Enterprise Application Integration) é uma referência aos meios computacionais e aos princípios de arquitetura de sistemas utilizados no processo de Integração de Aplicações Corporativas. Os procedimentos e ferramentas de EAI viabilizam a interação entre sistemas corporativos heterogêneos por meio da utilização de serviços.

## Pontos básicos

Os pontos básicos de uma arquitetura de EAI são com aplicações internas e externas da empresa que servem de suporte ao processo de negócio da mesma, como por exemplo processo financeiro, recursos humanos, dentre outros.
* Conjunto de ferramentas de análise e monitoração de processos em tempo real.

## Componentes da Arquitetura EAI

Os componentes presentes em uma arquitetura de integração de sistemas são:
* Sistemas - Refere-se aos sistemas que trocarão informações entre si. (ex. Software de CRM (SIEBEL) trocando informações com software de faturamento (SAP)
* Dados - Conjunto de dados (layouts de arquivos) que serão trafegados pela arquitetura durante a troca de dados entre os sistemas.(Ex. XML ou texto)
* Interface - Forma de enviar receber dados entre os sistemas. (Ex. Web services, adaptadores)
* Comunicação - Tipo de comunicação a ser utilizada durante a troca de informações entre os sistemas. (Ex. síncrona ou assíncrona).

## Estilos de Integração

Os estilos de integração entre sistemas utilizando-se do EAI são:
* File Transfer - Integração entre aplicativos através da troca de arquivos em formato de texto definido.
* Shared Database - Integração entre aplicativos através da troca de dados entre bases de dados ou tabelas.
* Remote Procedure Invocation - Integração entre aplicativos através da chamada a programas remotos os quais são responsáveis pela extração, envio/recebimento e persistência dos dados no sistema.
* Messaging - Integração entre aplicativos de um middleware orientado a mensagem (MOM) o qual é responsável pela entrega dos dados aos sistema integrados.

## Melhores práticas na integração de aplicações

* Buscar uma padronização na forma de integração com os sistemas legados facilita manutenções futuras.
* A definição de um padrão na forma de trabalho das interfaces pode promover o reuso das mesmas.
* Quanto menos camadas existirem entre à aplicação legada e a plataforma de integração (EAI) menores são as chances de ocorrerem erros durante a troca de dados entre elas.
* A redução no número de camadas por onde os dados tem de passar até chegar ao seu destino, promove também uma melhor performance durante o processo de troca de dados entre aplicações.

## Linguagem Específica de Domínio (DSL) para EAI

A seguir são relacionados alguns projetos de DSLs para modelar soluções de Enterprise Application Integration (EAI) a um alto nível de abstração.
* Guaraná DSL

## Soluções de EAI

A seguir são relacionadas alguns produtos para suportar uma arquitetura de integração - EAI:
* Betalike - EAI
* Q-Ware Family
* Intersystems Ensemble
* TIBCO
* Webmethods
* WebSphere MQSeries/Broker - IBM
* Vitria
* BizTalk - Microsoft
* SeeBeyond - SunMicrosystem
* BEA Weblogic Integration - BEA
* SAP Exchange Infrastructure (XI) ou Process Integration (PI) - SAP
* Datasul EAI - Datasul
* IRIS - Databridge
* IntraFlow BPMS 2.0 - IntraFlow
* Guaraná SDK
* Magic xpi
* OIC - ORACLE Integration Cloud