Consulta ao AMS no SPADE
Nesse tutorial eu demonstro como identificar e listar o nome dos agentes existentes no ambiente.
O SPADE possui um agente chamado AMS, que é a implementação do componente AMS proposto pela FIPA e que tem por finalidade gerenciar os agentes do sistema. O agente AMS é consultado para identificar os agentes existentes no ambiente e inicia automaticamente com a plataforma SPADE.
Quando se cria um agente na plataforma, um processo de registro é realizado automaticamente (ele é definido na classe Agent que é estendida ao definir o agente), assim como seu registro é removido automaticamente quando esse agente finaliza.
O código abaixo irá mostrar, através da linha 10, as referências dos objetos de cada agente em uma lista. As linhas 12 e 13 são responsáveis por percorrer cada um dos agentes retornados e mostrar apenas o nome desse agente.
import spade
import time
class MyAgent(spade.Agent.Agent):
class MyBehav(spade.Behaviour.OneShotBehaviour):
def _process(self):
print "Busca por agentes do ambiente"
aad = spade.AMS.AmsAgentDescription()
search = self.myAgent.searchAgent(aad)
print search
for i in search:
print i.getAID().getName()
def _setup(self):
print "MyAgent starting . . ."
b = self.MyBehav()
self.addBehaviour(b, None)
a = MyAgent("agent@127.0.0.1", "secret")
a.start()
time.sleep(10)
a.stop()
O comportamento utilizado foi o OneShotBehaviour, o que faz com que sejam mostrados os agentes registrados na plataforma apenas no instante que o agente é executado.
Três agentes são retornados quando o código for rodado. O primeiro é o próprio agente, denominado “agent@127.0.0.1”. Os demais agentes são os agentes “df.127.0.0.1” e o “ams.127.0.0.1”, que gerenciam os serviços prestados pelos agentes do sistema (o agente Diretório Facilitador) e o endereçamento de cada agente existente (o agente AMS).