Information Technology Reference
In-Depth Information
deren Methoden,
initialize()
und
reset()
versetzen den Agenten in einen defi-
nierten Zustand. Die Methoden
startAgentProcessing()
und
stopAgentRo-
botprocessing()
starten oder stoppen Verarbeitungsprozesse des Agenten. Mit den
Methoden
suspendAgentProcessing()
und
resumeAgentProcessing()
kann der autonome Agent zeitweilig angehalten werden, wobei beide Methoden sich der
Methode
processTimerPop()
bedienen. Es stehen weiterhin die Methoden
add-
SoftRobot()
und
removeAgent()
zur Verfügung, um zusammengesetzte Agen-
ten zu erstellen, und die Methode
getChildren()
, um auf beliebige darin enthaltene
Agenten zuzugreifen. Die Klasse
Agent
implementiert die Schnittstelle
Serializa-
ble
, so dass Agenten-Objekte geladen und gespeichert werden können. Die verschiede-
nen Datenelemente sind als transient markiert, was bedeutet, dass sie nicht gespeichert
werden, wenn das Objekt in einer Datei serialisiert wird. Demzufolge wird die Methode
read0bject()
implementiert, die die als transient deklarierten Glieder neu erstellt,
wenn der Agent deserialisiert wird.
Das UML-Diagramm zeigt, dass die Klasse
AgentEvent
von der Klasse
Event-
Listener
abgeleitet ist, wie es die Spezifikation der JavaBeans vorschreibt. Es werden
zunächst drei Konstruktoren definiert. Der erste übernimmt einen einzelnen Parameter,
nämlich die Quelle
(source)
, die auf das Objekt verweist, dass das Ereignis gesendet
hat. Der zweite Konstruktor erzeugt ein Benachrichtigungsereignis, das
source
und ein
Ereignisargumentobjekt übernimmt. Der dritte Konstruktor wird verwendet, um ein Ak-
tionsereignis zu erzeugen und benötigt das Objekt
source
, einen String
action
, der
der Name einer Methode in dem Zielobjekt sein kann und ein Ereignisargumentobjekt.
Das Argument ist als ein Objekt definiert, so dass Unterklassen von
Agent
jedes beliebi-
ge Objekt als Argument in einem
AgentEvent
versenden können.
Die Klasse
AgentEventListener
implementiert eine Warteschlange von
Agen-
tEvents
. Ihr einziges Datenelement ist
eventQueue
, eine Vektorinstanz. Die Me-
thode
addEvent()
wird verwendet, um ein Ereignis an das Ende der Warteschlange
anzufügen. Die Methode
getNextEvent()
ist eine nicht blockierende Methode, die
entweder Null zurückgibt, wenn die Warteschlange leer ist, oder das erste Ereignis ent-
fernt und zurückgibt. Die Methode
peekEvent()
wird verwendet, um zu prüfen ob die
Warteschlange leer ist oder nicht. Sie gibt entweder Null zurück, was bedeutet, dass die
Warteschlange leer ist, oder das erste Ereignis, ohne es zu entfernen. Diese Methoden, die
von der Basisklasse
Agent
bereitgestellt werden, sollen in einer bestimmten Reihenfolge
verwendet werden, so dass der Zustand
AgentStatus
einem vorhersehbaren Satz von
Veränderungen folgt. Der Lebenszyklus eines Agenten sollte den folgenden Ablauf von
Zuständen umfassen:
• Konstruktion einer Instanz des Agent-Objekts. Der Zustand wird auf
UNINITIATED
gesetzt.
• Einstellung der Eigenschaften der JavaBeans entweder im Programm oder mit Hilfe
eines Customizers.
• Aufruf der Methode
initialize().
Der Zustand wird auf
INITIATED
gesetzt.