• Nenhum resultado encontrado

Plataforma para Agentes

N/A
N/A
Protected

Academic year: 2021

Share "Plataforma para Agentes"

Copied!
7
0
0

Texto

(1)

Setembro 2003 Eugénio Oliveira/ Univ.Porto

JATLite

JATLite

-

-

Java Agent Template,

Java Agent Template,

Lite

Lite

• O que é o JATLite?

y

Pacote de programas em Java permitindo:

• rápida criação de Agentes de Software e sistemas

que comunicam, usando a Internet, de forma robusta.

• Capacidades específicas de comunicação

• De uso geral. A arquitectura dos Agentes é deixada

ao projectista

http://java.stanford.edu/

http://www.fe.up.pt/~eol/AIAD/JATLITE/DOC/index.html

Plataforma para Agentes

Setembro 2003 Eugénio Oliveira/ Univ.Porto

• Agent Message Router (AMR) Encaminhador de Mensagens

y

Agentes JATLite

• aceita alteração dinâmica dos endereços

• Registo de nome e password, conecta/desconecta da

Internet, envia e recebe

• Uso de TCP/IP standard e sockets para a comunicação

JATLite: Infraestrutura

y

Message Router

• programa em Java “stand-alone” correndo no host

ligado à Internet

• Encaminha as mensagens entre agentes. Facilita

informação sobre endereços IP

• Agentes “applets” usam o Router correndo na máquina

do servidor HTTP como proxy para comunicar com

outros Agentes

(2)

Setembro 2003 Eugénio Oliveira/ Univ.Porto

• Arquitectura do JATLite como uma

hierarquia de camadas

– “Templates” (moldes) para a construção de Agentes

• Classes Java pré-definidas em diversas camadas facilitando

a construção dos Agentes

Protocol Layer

Router Layer

KQML Layer

Base Layer

Abstract Layer

Camadas JATLite

Pacotes

JATLite: Arquitectura

Setembro 2003 Eugénio Oliveira/ Univ.Porto

• Camadas JATLite

– Abstract Layer

• classes abstractas necessárias à implementação JATLite

– Base Layer

• communicação TCP/IP básica

• sem restrições na linguagem e protocolo de comunicação

– KQML Layer

• restrição da linguagem: memorização e análise (“parsing”) de

Mensagens em KQML

– Router Layer

• routing (encaminhamento) das mensagens em vez de polling(directo):

todos os agentes enviam/recebem mensagens via router

• ultrapassa restrições de segurança dos applets podendo comunicar

com agentes em outras máquinas

• 2 pacotes importantes:

– RouterLayer.AgentClient: package para os agentes clientes

– RouterLayer.Router: package do router

(3)

Setembro 2003 Eugénio Oliveira/ Univ.Porto

• Camadas (Layers) do JATLite

– Protocol Layer

• suporta os serviços “standard” da internet: SMTP (simple

mail), FTP

• agentes “stand-alone” podem usar os serviços existentes

SMTP e FTP sem os serviços proxy do Router

• agentes applet tem de usar o Router como proxy para ligar

aos servidores SMTP ou FTP em outras máquinas diferentes

Router

(FTP Proxy)

Applet

Agent

Stand-alone

Agent

FTP

Server

KQML

message

message

KQML

FTP

FTP

Data

JATLite: Arquitectura

Setembro 2003 Eugénio Oliveira/ Univ.Porto

– Agent Name Service (ANS)

• Router é um ANServer mantendo os endereços dos Agentes, que

podem alterar-se dinamicamente

• não é necessário para a passagem de mensagens mas um agente

pode perguntar ao Router o endereço de outro Agente

Ligação

crítica

Agente

emissor

Agente

receptor

Polling

- problemas quando a ligação

não pode ser establecida (N

receptores)

Ligação

crítica

Agente

emissor

Agente

receptor

Queuing

- memorização de mensagens (queuing):

guarda mensagem

- mecanismo de routing : envia mensagem

quando ligação do lado do receptor está

establecida (Receptor ligou ao Router)

Router Ligação do

lado do

receptor

•Router

–Polling (directo) vs. Queuing (indirecto)

(4)

Setembro 2003 Eugénio Oliveira/ Univ.Porto

• Router

– Comunicação dos Agentes Applets

Máquina

HTTP

Server

Router

Browser

Applet

Agent

Applet

Agent

Stand-alone

Agent

JATLite:Router

Setembro 2003 Eugénio Oliveira/ Univ.Porto

• Características do Router

– Message queuing

• As mensagens são memorizadas em ficheiros e recuperadas

ou apagadas de acordo com o pedido do agente

–Message routing

•As mensagens serão dirigidas para os receptores apropriados quando

possível

–Agent Name Service

–Registo

•só agentes que se registaram podem usar o Router

–Segurança

•teste de segurança usando a password do agente com um dado nome

–Lista de Agentes

•mensagem para conhecer todos agentes registados e seus estados de ligação

(5)

Setembro 2003 Eugénio Oliveira/ Univ.Porto

• Características do Router

– Desligar

• mensagem de desligar

• interrupção acidental (sem mensagem)

– agentes stand-alone :

» Router testa ligação ao agente em períodos

temporais

» falhando essas tentativas várias vezes, o

agente é apagado do registo

» Período de tempo e número de vezes de teste

são parâmetros dados

–Reserva de Mensagem

•podem reservar-se mensagens para serem enviadas num tempo

e endereço específicos

JATLite:Router

Setembro 2003 Eugénio Oliveira/ Univ.Porto

Exemplo

Exemplo

--

Router Layer

Router Layer

criação

criação

de

de

Agente

Agente

import java.io.*; import AbstractAbstract.*; import KQMLLayerKQMLLayer .*;

import RouterLayer.AgentClientRouterLayer.AgentClient.*;

public class PingPongextends extends RouterClientActionRouterClientAction { public static String localhost = “brooks.fe.up.pt”;

public PingPong(String id, String pw, String host, int port) throws Exception {

super

super(); //RouterClientAction constructor //id,host,port,type,description

String s = id+“,”+host+“,”+port+“,MessageRouter,(agent-info :password ”+pw+“)”;

Address

Address myAddress = new Address(s);

s = “Router,alf.fe.up.pt,1234,MessageRouter,(MessageRout er)”; Address routerAddress = new Address(s);

s = “RouterRegistrar,alf.fe.up.pt,1235,MessageRouter,(Me ssageRouterRegistrar)”; Address registrarAddress = new Address(s);

setMyAddress

setMyAddress(myAddress); //agent address

setRouterAddress

setRouterAddress(routerAddress); //Router address

setRegistrarAddress

setRegistrarAddress(registrarAddress); //registrar address try {

createServerThread

createServerThread (myAddress.getIDgetID(), Thread.NORM_PRIORITY); //server listener

register

register(); //register to Router

connect

connect(); //connect to Router } catch(ConnectionExceptionConnectionException e) {

throw new Exception(e.toString()); }

}

(6)

Setembro 2003 Eugénio Oliveira/ Univ.Porto

Exemplo

Exemplo

--

Router Layer

Router Layer

public

public booleanboolean Act(Object o)Act(Object o) { //invoked automatically when a message is received String message = (String) o;

try {

KQMLmail

KQMLmail mail = new KQMLmail(message, 0); //KQMLmail wrap the KQMLmessage

_

_mailQueue.addElementmailQueue.addElement(mail); //message repository (to delete message after)

KQMLmessage

KQMLmessage kqml = mail.getKQMLmessagegetKQMLmessage(); //get KQMLmessage object String perf = kqml.getValuegetValue(“performative”);

String content = kqml.getValue(“content”); if(perf.equals(“tell”) && content != null) {

System.out.println(content);

acknowledge(kqml.getValue(“sender”), content);

addToDeleteBuffer

addToDeleteBuffer(0); //send delete message to Router } else { sendErrorMessage(kqml); return false; } } catch (Exception e) { return false; } return true; } public void

public void processMessage(StringprocessMessage(Stringcommand, Object command, Object objobj)) {} //not implemented

JATLite:Exemplo

Setembro 2003 Eugénio Oliveira/ Univ.Porto

Exemplo

Exemplo

--

Router Layer

Router Layer

protected void acknowledge(String receiver, String toContent ) throws Exception {

KQMLmessage

KQMLmessage sendkqml = new KQMLmessage ();

sendkqml.addFieldValuePairaddFieldValuePair (“performative”, “tell”); sendkqml.addFieldValuePair(“sender”, this.getNamegetName()); sendkqml.addFieldValuePair(“receiver”, receiver); //...

if(toContent.equals(“(ping )”)) sendkqml.addFieldValuePair(“content”, “(pong)”); else sendkqml.addFieldValuePair(“content”, “(ping)”);

sendMessage

sendMessage(sendkqml ); //send message to Router: throws ConnectionExceptionConnectionException }

protected void sendErrorMessage(KQMLmessage kqml ) throws Exception { String msg = “(error :sender ” + this.getNamegetName() + “ :receiver ” +

kqml.getValue(“sender”) + “ :content (” + kqml.getSendStringgetSendString() + “))”;

sendMessage

sendMessage(msg); //send Router: throws ConnectionExceptionConnectionException and ParseExceptionParseException

addToDeleteBuffer

addToDeleteBuffer(0); //send delete message to Router }

public static void main(String argv[]) throws Exception {

PingPong pingA = new PingPong(“ping”, “xyz”, localhost, 2222); //create pingA PingPong pongA = new PingPong(“pong”, “hjk”, localhost, 2223); //create pongA pingA.startstart(); pongA.start(); //start agent action

pingA.sendKQMLMessagesendKQMLMessage(“(tell :sender ” + pingA.getNamegetName() + “ :receiver ” + pongA.getName() + “ :content (ping))”); //or sendMessage sleep(60000);

pingA.disconnectdisconnect(); pongA.disconnect(); //disconnect from Router pingA.unregisterunregister(); pongA.unregister(); //unregister from Router pingA.endActionendAction(); pongA.endAction(); //clean up and stop agent action System.exit(0);

} }

(7)

Setembro 2003 Eugénio Oliveira/ Univ.Porto

Plataforma para Agentes: PVM

PVM: Parallel Virtual Machine

- Desenvolvida no início dos anos 90 tem dezenas de milhar de utilizadores

- Considerada como um standard “de facto” para computação distribuída

- Características:

-Redes Heterogéneas (liga diferentes plataformas e linguagens)

- Entrada/saída dinâmica de participantes

- Tarefas podem aparecer/desaparecer dinamicamente

- passagem de mensagens (envio e recepção de blocos, envio para

grupos, ...)

- Grupos dinâmicos

- Tolerância a falhas detectadas automaticamente

- Ferramentas de debug próprias (XPVM)

- Corre em Unix/Linux e Windows

- Consome cerca de 5Mb na instalação

- obtida em: htt://www.epm.ornl.gov/pvm/pvm_home.html

Setembro 2003 Eugénio Oliveira/ Univ.Porto

Plataformas para Agentes

Outras PLATAFORMAS para desenvolvimento e comunicação de Agentes:

y

JINI

xda SUN microsystems; JAVA Spaces; Leasing

xhttp://www.binnetcorp.com/Jinni/

y

JADE

xJava Agent Development Environment; de acordo com as normas da FIPA

xhttp://sharon.cselt.it/projects/jade

y

BEEGENT

xfornecido pela Toshiba; facilidades para desenvolver agentes BDI; KQML

xhttp://www2.toshiba.co.jp/beegent/index.html

y

ZEUS

xfornecido pela BT; editor de ontologia simples; KQML

xhttp://www.labs.bt.com/projects/agents/zeus/index.htm

y

AGLETS

xda IBM; Agentes móveis

xhttp://www.trl.ibm.com/aglets/

y

JATLiteBean: desenvolvimento do JATLite

Referências

Documentos relacionados

Andrade, na sua biografia de Newton: "Great men do not occur in mental and spiritual isolation from their times." É evidente que a originalidade de Blake não reside nas

A bacia do Rio Alcântara, localizada no município de São Gonçalo (Figura 3), apresenta as condições gerais de degradação, que são representativas das

Para modelar uma turbina eólica todos os componentes tem que ser modelados bem como as entradas do sistema, o vento, o modelo do rotor que converte a energia

Nos últimos anos a plataforma Arduino se apresentou como uma ferramenta de grande valia para o desenvolvimento de projetos eletrônicos com baixo custo. Além disso, a

Screening for the GJB2 donor splice site and basal promoter, and for the two common GJB6 deletions, allowed the elucidation of the HL etiology in some of the cases with only

Unidentified mabobese tchill Moreira 74 DC children ’s disease root and leaves boil and paste drink and poultice méné Moreira 41 TC/DC swollen limbs leaves boil wash and.. fumigate

Resultados: O grupo com AVC tem um perceção imagem corporal (condição física, habilidade corporal, saúde e aparência) com scores inferiores ao grupo de comparação;

A Diretiva Europeia 97/69/CE, substituída pelo Regulamento (CE) n° 1272/2008 relativo à classificação, rotulagem e embalagem de substâncias e misturas, não classifica as