Humboldt Universität zu Berlin | Institut für Informatik | Lehrstuhl der Theorie der Programmierung
INACommandFileGenerator

Der INACommandFileGenerator ist eine unabhängige Java-Klasse, welche als Schnittstelle für Java-Programme zum Integrated Net Analyser (INA) dienen soll, einem interaktiven, terminalbasierten Petrinetz-Analysetool. Die Bedienung von INA wird dahingehend vereinfacht, dass dem Generator lediglich die auszuführenden Aufgaben übergeben werden müssen. Als Ergebnis wird eine Kommandodatei erstellt, welche die gegebenen Aufgaben bezüglich eines gegebenen Netzes (siehe Nutzung des INACommandFileGenerator) korrekt ausführt. Alternativ kann jedoch auch gleich die von INA erzeugte Ergebnisdatei SESSION.ina gelesen werden, da diese Datei bei der Generierung der Kommandodatei ebenfalls entsteht. Die konkrete Auswertung der Ergebnisse ist nicht Teil des Generators.



Nutzung des INACommandFileGenerator

Um den INACommandFileGenerator in einem Java-Programm nutzen zu können, ist zuerst einmal ein Generator-Objekt zu instanziieren. Dafür müssen dem Konstruktor zwei Parameter vom Typ File übergeben werden, wobei der erste den Pfad mitsamt Programmnamen angibt, unter dem INA zu finden ist. Der zweite Pfad muss ein bereits existierendes Verzeichnis beschreiben. Dieses wird als Arbeitsverzeichnis genutzt (wenn im Folgenden vom Arbeitsverzeichnis die Rede ist, so ist dieses Verzeichnis gemeint), d.h. hier werden Dateien hineingeschrieben, welche bei der Arbeit mit INA notwendig sind, und auch die von INA erzeugten Dateien COMMAND.ina und SESSION.ina finden sich hier.

Nach der Instanziierung können dem Generator-Objekt nun die Aufgaben mitgeteilt werden, welche INA bearbeiten soll. Dies geschieht, indem ein Array von Integerwerten angelegt wird, welches für jede zu bearbeitende Aufgabe die entsprechende Konstante enthält. Bisher stehen folgende Aufgaben zur Auswahl:

  • DO_ANALYSE - Dieser Wert veranlasst den Generator dazu, INA ins Analysemenü zu steuern. Auch wenn innerhalb des Analyse-Menüs keine weiteren Aufgaben getätigt werden, nimmt INA schon einige Analysen vor, deren Ergebnisse dann in der Datei SESSION.ina nachgelesen werden können.
    Wird eine Aufgabe ausgewählt, welche in INA erst innerhalb des Analyse-Menüs erreichbar ist (z.B. DO_P_INVARIANTS), so erkennt dies der Generator selbst; der Nutzer muss also nicht daran denken, zusätzlich den Wert DO_ANALYSE anzugeben.
  • DO_P_INVARIANTS - Dieser Wert veranlasst die Suche nach Platzinvarianten. INA schreibt dann eine Basismatrix für die Platzinvarianten des analysierten Netzes in die Datei SESSION.ina.
  • DO_PRINT_STATIC_CONFLICTS Wird dieser Wert übergeben, so werden alle statischen Konflikte in die Datei SESSION.ina geschrieben.

Sollen also z.B. die Platzinvarianten des Netzes berechnet werden, so muss das Feld den Wert INACommandFileGenerator.DO_P_INVARIANTS enthalten. Durch den Aufruf der Methode setToDo(int[]) am Generator-Objekt, mit diesem Feld als Parameter, werden nun die Aufgaben mitgeteilt.

Spätestens jetzt muss das zu analysierende Netz im von INA lesbaren Format unter dem Namen tempnet.pnt im Arbeitsverzeichnis gespeichert werden. Allerdings kann dies auch vor dem Starten des den Generator nutzenden Java-Programmes manuell getan werden. Der Generator ist nur auf Platz-Transitions-Netze ausgelegt. Bei anderen Netztypen kann es zu Fehlern kommen.

Nun folgt der Aufruf der Methode generateCommandFile(), welcher die eigentliche Arbeit startet. Die Methode gibt einen Integerwert zurück, welcher Aufschluss über den Erfolg oder Misserfolg bei der Generierung der Kommandodatei gibt. Dieser Wert sollte gewissenhaft geprüft werden, bevor letztlich die generierten Dateien genutzt werden.

Folgende Rückgabewerte sind bei der Methode generateCommandFile() möglich:

  • RETURN_VALUE_OK - Es sind keine Probleme aufgetreten, sodass eine funktionsfähige, den Anforderungen entsprechende Kommandodatei erstellt wurde.
  • RETURN_VALUE_INVALID_INAFILE - Der Pfad, unter dem sich das Programm INA befinden soll, existiert nicht oder verweist zumindest nicht auf eine Datei. Demnach konnte INA nicht gestartet werden und somit auch keine Kommandodatei generiert werden.
  • RETURN_VALUE_INVALID_WORKINGDIR - Der Pfad, der das Arbeitsverzeichnis angeben sollte, existiert nicht oder verweist nicht auf ein Verzeichnis. Auch in diesem Fall konnte keine Kommandodatei generiert werden.
  • RETURN_VALUE_NO_INA - INA konnte nicht ausgeführt werden, so dass wiederum keine Kommandodatei generiert werden konnte.
  • RETURN_VALUE_NO_INA_OUTPUT_READABLE - INA konnte zwar gestartet werden, jedoch konnten die Ausgaben von INA nicht gelesen werden. Daher war es nicht möglich, eine korrekte Kommandodatei zu generieren.
  • RETURN_VALUE_INTERRUPTED - Der Generierungsprozess wurde von außen unterbrochen.
  • RETURN_VALUE_INCOMPLETE_COMMAND_FILE - Es wurde zwar eine funktionsfähige Kommandodatei erstellt, aber es konnten nicht alle verlangten Aufgaben ausgeführt werden.
  • RETURN_VALUE_FAULTY_COMMAND_FILE - Es konnte keine Kommandodatei erstellt werden, welche INA korrekt steuert.


Download

ICFG.zip



Hinweis

Es existiert bereits eine Anwendung, welche den Generator nutzt. Sie heißt InaControl und ist eine Anwendung des Petrinetz-Kerns (PNK). Siehe hierzu die Homepage des PNK sowie die Seite mit den implementierten Anwendungen.

Yvonne Gabriel
Letzte Änderung: 19.4.2004