JADE: Framework de sistemas de agentes em Java
Veja neste artigo um framework feito em java para desenvolver aplicações baseadas em agentes. As aplicações JADE podem ser executadas em vários tipos de dispositivos desde servidores até celulares.
Artigos Java JADE: Framework de sistemas de agentes em Java
Como tem sido observado que as empresas tem dado atenção a sistemas de software orientado a agentes, ferramentas e metodologias vem sendo desenvolvidas para auxiliar o desenvolvimento dessas aplicações. Entre estas ferramentas de desenvolvimento está o JADE (Java Agent Development framework), um framework para desenvolvimento de aplicações de agentes em Java, que seguem o padrão FIPA (Foundation For Intelligent, Physical Agents). O JADE é uma ferramenta desenvolvida pela Telecom Itália em parceria com a Universidade de Parma, onde atualmente é um projeto open source com licença LGPL (Lesser General Public Licence).
Figura 1: Interface Gráfica da ferramenta JADE
Este também dispõe de API (Application Programming Interface) para utilização dos seus serviços. A figura 1 ilustra a interface gráfica do JADE; como pode ser observado, a visualização de plataformas de agentes e agentes contidas nestas plataformas.
A FIPA é uma associação internacional de várias companhias que trabalham para especificar tecnologias de agentes genéricas. Promove um conjunto de tecnologias para diferentes áreas de aplicação para criar sistemas complexos com grande interoperabilidade. A FIPA define um modelo de plataforma que permita a existência, operação e gerenciamento de agentes. A figura 2 ilustra este modelo; o modelo é composto do AMS (Agent Management System), responsável por supervisionar a plataforma e gerenciar o ciclo de vida dos agentes; DF (Directory Facilitator), responsável pelo serviço de páginas amarelas, um registro de serviços desenvolvidos pelos agentes e de agentes que requisitam serviços e criação de confederações; ACC (Agent Communicattion Channel), que gerencia a comunicação entre os agentes dentro e fora da plataforma.
Figura 2: Modelo de plataforma do padrão FIPA (TEIXEIRA, [s.d.]).
O JADE é um framework de software que provê funcionalidades na camada de middleware. Totalmente escrito em Java. É interoperável, uma vez que permite a comunicação entre agentes JADE com outros tipos de agentes fora da plataforma. Uniforme e portátil já que faz uso homogêneo de várias APIs independentes da versão Java e APIs para J2SE e J2ME. Aplicações JADE podem ser executados em vários tipos de dispositivos desde servidores até celulares; dispositivos portáteis devem ter suporte a Java MIDP (Mobile Information Device Profile) 1.0 ou versões mais altas.
É um sistema distribuído, onde os agentes habitam e possuem como forma básica de comunicação as mensagens assíncronas; baseado no paradigma peer-to-peer. A estrutura dessas mensagens é baseada na linguagem ACL (Agent Communication Language) do padrão FIPA que contém campos como contexto da mensagem e o tempo limite de aguardo a resposta da mensagem. Os agentes são identificados por um nome global único. Possui recursos para depuração e monitoramento, permitindo controlar plataformas JADE e seus componentes distribuídos. Integração com diversas tecnologias web como applets, web services e etc (TEIXEIRA, [s.d.]).
Arquitetura do JADE
O JADE é composto de vários elementos. É composto de containers de agentes e que podem estar distribuídos na rede. O container é um ambiente que permite a habitação de agentes; é responsável por disponibilizar todos os recursos que o agente viva e execute as suas tarefas. O container pode abrigar de um a vários agentes e o conjunto de container forma a plataforma JADE. Plataformas JADE obrigatoriamente devem conter o Main Container, um container responsável pelo gerenciamento de agentes, container e recursos da plataforma; este é composto dos componentes AMS, DF e ACC além do CT (Container Table), registra os container da plataforma e do GADT (Global Agent Descriptor Table), que registra todos os agentes presentes na plataforma, inclusive agentes estrangeiros e suas localizações; este container deve ser o primeiro a ser inicializado pois este é responsável pelo gerenciamento de toda a plataforma. Só existe um containet por host (BELLIFEMINE; CAIRE; GREENWOOD, 2007).
Figura 3: Arquitura do JADE (TEIXEIRA, [s.d.]).
A figura 3 ilustra a arquitetura do JADE. Como pode ser observado, a plataforma é o conjunto de containers, onde cada um é executado em um único host.
O host 1 possui o Main Container que gerencia a plataforma. Cada container está executando 3 agentes de software.
O agente JADE é uma instância da classe Agent da API do JADE. Possui uma thread interna para sua execução. Dispõem de comportamentos que são as tarefas executas pelos agentes e ciclo de vida. Além de poder migrar entre containers e plataformas. A figura 4 ilustra a arquitetura de um agente JADE; como pode ser observado um agente JADE possui crenças e capacidades que são recursos implementados pelo programador; existe um gerenciador de ciclo de vida que será mostrado adiante; um escalonador de comportamento para escalonar quais comportamentos o agente deve executar e quando executar; e uma fila de mensagens que o agente recebe de outros agentes.
Figura 4: Arquitetura de um agente JADE (SILVA, 2003).
Agentes JADE possuem um ciclo de vida. Este ciclo de vida é ilustrado na figura 5. Inicialmente o agente é criado e logo após inicializado. Ao ser invocado ele se torna ativo para execução de tarefas ou comportamentos. Do estado ativo ele pode ser suspenso e depois voltar ao estado de ativo. Outra ocasião é quando o agente está em modo de espera quando em busca de algum recurso que outro está executando e acordar quando este recurso for liberado. Outro estado é quando o agente está em trânsito se movimentando pela rede. Em qualquer estado que o agente esteja ele pode ser destruído.
Figura 5: Ciclo do agente JADE (SILVA, 2003).
Além do ciclo de vida de agente JADE existe também o ciclo de escalonamento de comportamentos, que corresponde como o agente JADE procede para executar as suas tarefas. Os comportamentos do agente JADE são classificados em dois tipos: comportamentos ativos, tarefas que não foram concluídas e comportamentos bloqueados, que são tarefas que foram concluídas. A figura 6 ilustra, a partir de um fluxograma, a estrutura do ciclo de comportamento. No primeiro momento é analisado se o agente está em execução, se a condição é sim, ele pega o próximo comportamento da lista de comportamentos ativos do agente e executa; se o agente finalizou a execução deste comportamento, este é bloqueado e movido para uma lista de comportamentos bloqueados; se o agente não finalizou à execução do comportamento, este é colocado no final da lista de comportamentos ativos. Se o agente não está em execução, este é finalizado.
Figura 6: Execução do ciclo de vida (BATISTA, 2008).
Podemos concluir que o JADE é um framework bem estruturado e que facilita o desenvolvimento de aplicações de agentes, porque disponibilizada vários recursos. Podem ser desenvolvidas vários tipos de aplicações para diversos dispositivos, desde servidores até dispositivos embarcados que suportem a Java. É uma ferramenta open source e que segue as especificações da FIPA, uma associação internacional dedicada a tecnologias de agentes; o que torna o uso desta ferramenta seguro e confiável. Esta ferramenta pode ser obtida no site: http://jade.tilab.com/index.html, onde contém vários documentos sobre a ferramenta e como utilizar, além de documentos que descrevem aplicações JADE implantadas no mundo real. Mais informações sobre a associação FIPA podem ser obtidas aqui: http://www.fipa.org/; neste site é possível ter acesso a documentos de especificações para a tecnologia de agentes. Espero que vocês tenham gostado deste artigo até a próxima.
BATISTA, A. F. DE M. Desenvolvendo Sistemas Multiagentes na plataforma JADE, 2008.
BELLIFEMINE, F.; CAIRE, G.; GREENWOOD, D. Developing multi-agent systems with JADE. United Kingdom: Jhon Wiley & Sons, 2007.
SILVA, L. A. DE M. E. Estudo e desenvolvimento de sistemas multiagentes usando JADE: Java Agent DEvelopment framework. Monografia-Fortaleza: Universidade de Fortaleza, 2003.