SOMA.agent
Class Agent

java.lang.Object
  |
  +--SOMA.agent.Agent

public abstract class Agent
extends java.lang.Object
implements java.io.Serializable

Classe astratta che rappresenta un agente.

Per creare un agente e' necessario sottoclassare la classe Agent ridefinendo i metodi run() e, se necessario, putArgument( Object obj ).

Il place mette a disposizione dell'agente un insieme di risorse, i cui riferimenti si trovano nel campo agentSystem.

Il place associa ad ogni agente un worker che permette di mandare in esecuzione l'agente stesso.


Author:
Livio Profiri
See Also:
AgentSystem, AgentWorker, Serialized Form

Field Summary
 AgentSystem agentSystem
          Interfaccia fra agente e sistema.
 java.lang.String start
           
 
Constructor Summary
Agent()
          Costruttore vuoto.
 
Method Summary
 AgentID getID()
          Restituisce l'identificatore dell'agente.
 void go(PlaceID destination, java.lang.String method)
          Metodo di migrazione verso un altro place.
 void putArgument(java.lang.Object obj)
          Permette di definire lo stato iniziale dell'agente.
abstract  void run()
          Metodo mandato in esecuzione all'avvio di un agente.
 void setID(AgentID myID)
          Permette di specificare l'ID di un agente.
 java.lang.String toString()
          Fornisce una rappresentazione in forma di stringa dell'agente.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

start

public java.lang.String start

agentSystem

public transient AgentSystem agentSystem

Interfaccia fra agente e sistema.

agentSystem contiene i riferimenti agli oggetti cui l'agente ha accesso. In questo modo e' garantita la protezione del sistema da possibili attacchi di agenti ostili, a cui non verranno forniti riferimenti a risorse critiche.

Questo campo e' transient perche' viene asegnato all'agente dal place in cui si trova.

Constructor Detail

Agent

public Agent()
Costruttore vuoto.
Method Detail

setID

public void setID(AgentID myID)

Permette di specificare l'ID di un agente.

L'implementazione permette di specificare l'ID di un agente una sola volta. Quest'operazione non č fatta dal costruttore per non complicare l'operazione di creazione di un agente: AgentManager.createAgent( String agentName, Object argument ).


getID

public AgentID getID()
Restituisce l'identificatore dell'agente.

putArgument

public void putArgument(java.lang.Object obj)
Permette di definire lo stato iniziale dell'agente.
Questo metodo č vuoto in nella classe Agent e deve essere ridefinito dalle sottoclassi che implementano agenti, in maniera analoga a run().
Parameters:
obj - Un oggetto contenente informazioni di inizializzazione. Ovviamente l'oggetto puņ anche contenere una struttura dati complessa.

run

public abstract void run()
Metodo mandato in esecuzione all'avvio di un agente.
Questo metodo astratto va ridefinito nell'implementazione di ogni agente.

go

public void go(PlaceID destination,
               java.lang.String method)
        throws CantGoException

Metodo di migrazione verso un altro place.

Viene invocato il metodo AgentSystem.go( Agent agent, PlaceID destination ).

Parameters:
destination - Il place di destinazione, che puņ appartenere ad un dominio qualsiasi.
method - Il metodo con cui verra' riattivato l'agente, vedi start

Attenzione: se un agente ha il riferimento ad un altro agente puņ chiamarne il metodo di migrazione, come ogni altro metodo. In sostanza ne puņ assumere il controllo completo. E' quindi estremamente opportuno mantenere nascosti ad ogni agente i riferiemnti ad altri agenti.


toString

public java.lang.String toString()
Fornisce una rappresentazione in forma di stringa dell'agente.
Overrides:
toString in class java.lang.Object