next up previous contents
Next: Automatische Benachrichtigung der Applets Up: 3 Realisierung Previous: Erstellung der Übersicht ladbarer

3.2 Parameter zum Start eines Agenten

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.


 
Abbildung 3.2: Ermittlung der Datentypen der Parameter
\begin{figure}
\begin{center}

\includegraphics [width=11.5cm]{Bilder/ParameterAufruf.ps}
\end{center}\end{figure}

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:

Alle anderen Datentypen werden durch das Applet abgelehnt, was dem Benutzer durch eine Meldung mitgeteilt wird. Der Autor des Agenten muß in einem solchen Fall den Konstruktor entsprechend anpassen.
Hat der Benutzer die Werte der Parameter in die Tabelle eingegeben und drückt den create agent Button, so wird für jeden der Parameter eine Instanz des entsprechenden Datentypen mit dem eingegebenen String initialisiert und an AgentManager.create_agent(...) übergeben.


next up previous contents
Next: Automatische Benachrichtigung der Applets Up: 3 Realisierung Previous: Erstellung der Übersicht ladbarer
Copyright Munich Network Management Team