Jeder Agent besitzt einen oder mehrere Konstruktoren, von denen
jeder eine unterschiedliche Anzahl von Parametern besitzen kann,
die darüber hinaus verschiedenen Typs sein können. Es muß also dem
Benutzer des AgentSystemApplets eine Möglichkeit geboten werden,
zwischen den verschiedenen Konstruktoren eines Agenten zu wählen.
Überdies müssen die Datentypen der Parameter ersichtlich sein,
damit der Benutzer die Werte entsprechend eingeben kann.
Das
AgentSystemApplet bietet dazu eine Kombination aus einer
Auswahlbox, die für einen Agenten die möglichen Konstruktoren
anhand der Parameteranzahl zur Auswahl stellt, und einer
zweispaltigen Tabelle, die links die Datentypen aller Parameter
des gewählten Konstruktors enthält und rechts entsprechend die
Eingabe der Werte ermöglicht.
Sobald im AgentSystemApplet ein
Agent ausgewählt wurde, der gestartet werden soll, ruft das Applet
die Methode get_agent_parameters(...) des
ASManagementAgenten auf. Diese erstellt mittels Introspektion in
die Agentenklasse über die Java Reflection-API eine Liste
aller Parametertypen sämtlicher Konstruktoren. Diese Agentenklasse
kann sich auch in einem entfernten Code-Repository befinden.
Wie die Abbildung zeigt, werden die Parametertypen eines jeden
Konstruktors zusammen gruppiert. Ein String-Feld, in dem jedes Element
die Parametertypen eines bestimmten Konstruktors enthält, wird an das
aufrufende Applet zurückgeliefert und dort weiter verwertet. Durch die
Gruppierung der Parameterlisten in verschiedenen Feldelementen, ist es
im Applet möglich, für jeden Konstruktor die dazugehörige Liste von
Parametern bereitzustellen. Daher kann das Programm auch die Anzahl
der Parameter pro Konstruktor ermitteln, welche als Basis für die
Auswahl eines Konstruktors durch den Benutzer mit Hilfe der dafür
vorgesehenen Auswahlbox dient. Sobald der Benutzer den Konstruktor mit
der gewünschten Anzahl Parameter ausgewählt hat, werden die
Parametertypen, die zu diesem Konstruktor gehören, in der Tabelle
angezeigt.
Da die Festlegung der Parameterwerte über die Oberfläche
durch Eingabe in die rechte Spalte der Parametertabelle geschieht, ist
die Auswahl an erlaubten Parameterdatentypen eines Agentenkonstruktors
eingeschränkt auf solche, welche sich mittels eines Strings in ihrem
Wert festlegen lassen. Außerdem verbietet sich der Einsatz von
zusammengesetzten Datentypen und elementaren Datentypen (wie
int , float etc.), da die Methode
AgentManager.create_agent(...) , zuständig für den Start eines
Agenten im Agentensystem, die übergebenen Parameter in einem
java.util.Vector -Objekt gruppiert, was mit elementaren
Datentypen jedoch erst nach einer expliziten Umwandlung in die
entsprechenden elementaren Objekttypen (Integer, Float, etc.) möglich
wäre. Diese fehlt jedoch bislang im AgentManager. Da überdies die
Praxis zeigt, daß neben Strings und Booleans lediglich
ganze bzw. Gleitkommazahlen als Parameterdatentypen zum Einsatz
kommen, wird die Auswahl an akzeptierten Parameterdatentypen auf
folgende eingeschränkt: