de.bsvrz.sys.startstopp.prozessvew
Class ProzessVerwaltung

java.lang.Object
  extended by de.bsvrz.sys.startstopp.prozessvew.ProzessVerwaltung
All Implemented Interfaces:
java.io.Serializable

public class ProzessVerwaltung
extends java.lang.Object
implements java.io.Serializable

Die Klasse verwaltet die einzelnen Prozesse die durch StartStopp gestartet werden sollen. Sie verfügt über Methoden zum Starten, Stoppen und Neustarten einzelner oder aller Prozesse. Die Klasse wird als Singleton ausgeführt.

Author:
Dambach Werke GmbH
See Also:
Serialized Form

Nested Class Summary
static class ProzessVerwaltung.Inner
          Innere Klasse zum Sicherstellen, dass wirklich nur eine Instanz der Klasse gebildet wird
 
Method Summary
 void addListener(IKernsystemListener listener)
          Methode zum Hinzufügen eines Listeners
 void addProzessDatenRemote(ProzessDaten pd)
          Methode zum Hinzufügen der Prozessdaten eines Remoteprozesses
 void beendeStartStoppApplikation(long absender, boolean stoppeSofort)
          gezieltes Beenden aller gestarteten Prozesse und Beenden der StartStopp Applikation
 void beendeStartVorgang(boolean beendeLaufendeInkarnationen)
          Methode zum Beenden des Startvorgangs.
 void beendeStoppVorgang()
          Methode zum Beenden des Stoppvorgangs.
 java.lang.String bestimmeProzessPid(java.lang.String startStoppBlockId, java.lang.String name)
          Methode zum Bestimmen der Prozessid.
 java.lang.String bildeEindeutigenNamen(java.lang.String name)
          Methode prüft ob der übergebene Name bereits als Prozessname verwendet wird.
 java.util.List<ProzessDaten> getAlleProzessDaten()
          Methode liefet die Prozessdaten aller Prozesse
 java.util.List<ProzessDaten> getAlleProzessDatenRemote()
          Methode liefet die Prozessdaten aller Remoteprozesse als Liste
 int getAnzahlProzesse()
          Methode liefert die Anzahl der Prozesses
static ProzessVerwaltung getInstanz()
          Methode zum Lesen der einzigen Instanz der Klasse
 java.lang.String getPidByName(java.lang.String name)
          Methode bestimmt zu einem Prozess des lokalen Rechners die dazugehörende Pid
 java.lang.String getPidByNameRemote(java.lang.String name, java.lang.String ipAdresse)
          Methode bestimmt zu einem Prozess eines Remoterechners die dazugehörende Pid
 ProzessDaten getProzessDaten(java.lang.String id)
          Methode liefert die Prozessdaten eines lokalen Prozesses zurück, der über seine ID angesprochen wird
 ProzessDaten getProzessDaten(java.lang.String startStoppBlockId, java.lang.String rechnerAlias, java.lang.String prozessName)
          Methode bestimmt die Prozessdaten des Prozesses der durch die StartStopp Block Id, den Alias Namen eines Rechners und einem Prozessnamen beschrieben ist.
 ProzessDaten getProzessDatenRemote(java.lang.String id)
          Methode liefert die Prozessdaten eines remote Prozesses (Prozess der auf anderem Rechner läuft) zurück, der über seine ID angesprochen wird
 void initialisiereInkarnationen(org.jdom.Element root, long absender, java.lang.String startStoppBlockId, long simulationsVariante)
          Methode zum Auslesen der Inkarnationsdaten aus einer XML-Struktur.
 boolean isEindeutigerName(java.lang.String name)
          Methode prüft ob der übergebene Name als Prozessname eindeutig ist.
 boolean isInkarntionsTeilPlausibel()
          Methode liefert den Plausibilitätszustand des Inkarantionsanteils der StartStopp.xml Datei
 boolean isKernSystemGestartet()
          Methode liefert die Information, ob das Kernsystem gestartet ist und Informationen an des Kernsystem übertragen werden können.
 void loescheAlleProzessDatenRemote()
          Methode zum Entfernen aller Prozesseinträge, die auf anderen Rechnern gestartet wurden.
 void loescheProzess(java.lang.String prID, long absender)
          Methode zum Löschen eines Prozesses.
 void loescheProzessDatenRemote(java.lang.String ip)
          Methode zum Entfernen der Prozesseinträge, die auf einem anderen Rechner gestartet wurden.
 void loescheProzesse(java.util.List<java.lang.String> prIds, long absender)
          Methode zum Löschen mehrerer Prozesse.
static long myLong(java.lang.String s)
          Hilfmethode zum Umwandeln eines Longwertes in einen String
 void neuStartProzess(java.lang.String prID)
          Methode zum Neustarten eines Prozesses
 void neuStartProzess(java.lang.String prID, long absender, long simulationsVariante)
          Methode zum Neustarten eines Prozesses
 void removeListener(IKernsystemListener listener)
          Methode zum Entfernen eines Listeners
 void reset()
          Methode zum Resetten der Datenstrukturen der Prozessverwaltung
 void setKernSystemGestartet(boolean kernSystemGestartet)
          Methode setzt den Merker der signalisiert, dass das Kernsystem gestartet wurde.
 void setProzessDaten(java.lang.String id, ProzessDaten prozessDaten)
          Methode zum Setzen der Prozessdaten eines Prozesses
 void starteKernsystem()
          Methode zum Starten des Kernsystems.
 void starteProzess(java.lang.String prID)
          Methode zum Starten eines Prozesses
 void starteProzess(java.lang.String prID, long absender, long simulationsvariante)
          Methode zum Starten eines Prozesses
 void starteProzessManuell(java.lang.String prID, long absender, long simulationsvariante)
          Methode zum manuellen Starten eines Prozesses
 void starteProzessZyklisch(java.lang.String prID, long absender, long simulationsvariante)
          Methode zum zyklsichen Starten eines Prozesses
 void stoppeAlleProzesse(boolean beendeKernsystem, boolean stoppeSofort)
          Methode zum Stoppen aller Prozesse.
 void stoppeProzess(java.lang.String prID)
          Methode zum Stoppen eines Prozesses
 void stoppeProzess(java.lang.String prID, long absender, boolean stoppeSofort)
          Methode zum Stoppen eines Prozesses
 boolean wirdDateiMehrfachVerwendet(java.lang.String datei)
          Methode liefert die Information ob eine Datei mehrfach verwendet wird (mehrere Inkarnationen nutzen die selbe Datei für ihre Ausgaben)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstanz

public static ProzessVerwaltung getInstanz()
Methode zum Lesen der einzigen Instanz der Klasse

Returns:
einzige Instanz der Klasse

reset

public void reset()
Methode zum Resetten der Datenstrukturen der Prozessverwaltung


starteProzess

public void starteProzess(java.lang.String prID)
Methode zum Starten eines Prozesses

Parameters:
prID - Id des zu startenden Prozesses

starteProzess

public void starteProzess(java.lang.String prID,
                          long absender,
                          long simulationsvariante)
Methode zum Starten eines Prozesses

Parameters:
prID - ProzessID
absender - Absender der Start auslöst

starteProzessZyklisch

public void starteProzessZyklisch(java.lang.String prID,
                                  long absender,
                                  long simulationsvariante)
Methode zum zyklsichen Starten eines Prozesses

Parameters:
prID - ProzessID
absender - Absender der den zyklischen Start auslöst

starteProzessManuell

public void starteProzessManuell(java.lang.String prID,
                                 long absender,
                                 long simulationsvariante)
Methode zum manuellen Starten eines Prozesses

Parameters:
prID - ProzessID
absender - Absender der den manuellen Start auslöst

stoppeProzess

public void stoppeProzess(java.lang.String prID)
Methode zum Stoppen eines Prozesses

Parameters:
prID - Id des zu stoppenden Prozesses

stoppeProzess

public void stoppeProzess(java.lang.String prID,
                          long absender,
                          boolean stoppeSofort)
Methode zum Stoppen eines Prozesses

Parameters:
prID - ProzessID
absender - Absender der das Stoppen auslöst
stoppeSofort - sofort Stoppen ohne warten auf Stoppbedingung bzw. Delay

neuStartProzess

public void neuStartProzess(java.lang.String prID)
Methode zum Neustarten eines Prozesses

Parameters:
prID - Id des neu zu startenden Prozesses

neuStartProzess

public void neuStartProzess(java.lang.String prID,
                            long absender,
                            long simulationsVariante)
Methode zum Neustarten eines Prozesses

Parameters:
prID - Id des neu zu startenden Prozesses
absender - Absender der Start auslöst

loescheProzess

public void loescheProzess(java.lang.String prID,
                           long absender)
Methode zum Löschen eines Prozesses. Das Löschen wird als eigener Thread ausgeführt, da auf das Beenden des Prozesses gewartet werden muss

Parameters:
prID - Id des zu löschenden Prozesses
absender - Absender der das Löschen auslöst

loescheProzesse

public void loescheProzesse(java.util.List<java.lang.String> prIds,
                            long absender)
Methode zum Löschen mehrerer Prozesse. Das Löschen wird als eigener Thread ausgeführt, da auf das Beenden der Prozesse gewartet werden muss

Parameters:
prIds - Liste mit den Ids der zu löschenden Prozesse
absender - Absender der das Löschen auslöst

setProzessDaten

public void setProzessDaten(java.lang.String id,
                            ProzessDaten prozessDaten)
Methode zum Setzen der Prozessdaten eines Prozesses

Parameters:
id - Id des Prozesses
prozessDaten - Prozessdaten des Prozesses

getAnzahlProzesse

public int getAnzahlProzesse()
Methode liefert die Anzahl der Prozesses

Returns:
Anzahl der Prozesses

getProzessDaten

public ProzessDaten getProzessDaten(java.lang.String id)
Methode liefert die Prozessdaten eines lokalen Prozesses zurück, der über seine ID angesprochen wird

Returns:
Prozessdaten eines Prozesses

getProzessDatenRemote

public ProzessDaten getProzessDatenRemote(java.lang.String id)
Methode liefert die Prozessdaten eines remote Prozesses (Prozess der auf anderem Rechner läuft) zurück, der über seine ID angesprochen wird

Returns:
Prozessdaten eines remote Prozesses

initialisiereInkarnationen

public void initialisiereInkarnationen(org.jdom.Element root,
                                       long absender,
                                       java.lang.String startStoppBlockId,
                                       long simulationsVariante)
Methode zum Auslesen der Inkarnationsdaten aus einer XML-Struktur.

Parameters:
root - Verweis auf Root Element der XML-Struktur
absender - Absender
startStoppBlockId - ID des StartStopp Blocks
simulationsVariante - Simulationsvariante des StartStopp Blocks

wirdDateiMehrfachVerwendet

public boolean wirdDateiMehrfachVerwendet(java.lang.String datei)
Methode liefert die Information ob eine Datei mehrfach verwendet wird (mehrere Inkarnationen nutzen die selbe Datei für ihre Ausgaben)

Parameters:
datei - Name der Datei
Returns:
true Datei wird mehrfach genutzt, sonst false.

bildeEindeutigenNamen

public java.lang.String bildeEindeutigenNamen(java.lang.String name)
Methode prüft ob der übergebene Name bereits als Prozessname verwendet wird. Wenn ja, dann wird der Namen erweitert um eine Zähler der Form xxx_1.

Parameters:
name - Name der geprüft werden soll
Returns:
orginal Name wenn eindeutig, sonst modifizierter Name

isEindeutigerName

public boolean isEindeutigerName(java.lang.String name)
Methode prüft ob der übergebene Name als Prozessname eindeutig ist.

Parameters:
name - Name der geprüft werden soll
Returns:
true: Name ist eindeutig, sonst false

bestimmeProzessPid

public java.lang.String bestimmeProzessPid(java.lang.String startStoppBlockId,
                                           java.lang.String name)
Methode zum Bestimmen der Prozessid. Die Prozessid setzt sich zusammen aus der ID des StartStopp Blocks zu dem der Prozess gehört plus dem Inkarantionsnamen,

Parameters:
startStoppBlockId - Id des zu diesem Prozess gehörenden StartStoppBlocks
name - Name der Inkarnation
Returns:
eindeutiger Key der Inkarnation

starteKernsystem

public void starteKernsystem()
Methode zum Starten des Kernsystems. Das Starten selbst wird durch einen Thread ausgeführt. Über die Methode "isKernsystemGestartet" kann geprüft werden ob das Kernsystem läuft oder nicht.


isKernSystemGestartet

public boolean isKernSystemGestartet()
Methode liefert die Information, ob das Kernsystem gestartet ist und Informationen an des Kernsystem übertragen werden können.


setKernSystemGestartet

public void setKernSystemGestartet(boolean kernSystemGestartet)
Methode setzt den Merker der signalisiert, dass das Kernsystem gestartet wurde.

Parameters:
kernSystemGestartet - Kernsystem gestartet

getPidByName

public java.lang.String getPidByName(java.lang.String name)
Methode bestimmt zu einem Prozess des lokalen Rechners die dazugehörende Pid

Parameters:
name - Name des Prozess
Returns:
Pid des Prozess

getPidByNameRemote

public java.lang.String getPidByNameRemote(java.lang.String name,
                                           java.lang.String ipAdresse)
Methode bestimmt zu einem Prozess eines Remoterechners die dazugehörende Pid

Parameters:
name - Name des Prozess
ipAdresse - IP-Adresse des Rechners auf dem der Prozess läuft
Returns:
Pid des Prozess

myLong

public static long myLong(java.lang.String s)
Hilfmethode zum Umwandeln eines Longwertes in einen String

Parameters:
s - String der umgewandelt werden soll
Returns:
String als Longwert

getAlleProzessDaten

public java.util.List<ProzessDaten> getAlleProzessDaten()
Methode liefet die Prozessdaten aller Prozesse

Returns:
Prozessdaten aller Prozesse

getAlleProzessDatenRemote

public java.util.List<ProzessDaten> getAlleProzessDatenRemote()
Methode liefet die Prozessdaten aller Remoteprozesse als Liste

Returns:
Prozessdaten aller Remote Rrozesse

beendeStartVorgang

public void beendeStartVorgang(boolean beendeLaufendeInkarnationen)
Methode zum Beenden des Startvorgangs. Alle noch nicht gestarteten Inkarnationen werden nicht gestartet. Über das Flag "beendeLaufendeInkarnationen" kann gesteuert werden, ob bereits gestartete Inkarnationen beendet werden oder nicht

Parameters:
beendeLaufendeInkarnationen - true: bereits gestartete Inkarnationen werden beendet, false: bereits gestartet Inakrantionen laufen weiter.

beendeStoppVorgang

public void beendeStoppVorgang()
Methode zum Beenden des Stoppvorgangs. Alle noch nicht gestoppten Inkarnationen werden nicht gestoppt.


stoppeAlleProzesse

public void stoppeAlleProzesse(boolean beendeKernsystem,
                               boolean stoppeSofort)
Methode zum Stoppen aller Prozesse. Das Kernsystem wird als letztes in umgekehrter Reihenfolge beendet wie beim Start

Parameters:
beendeKernsystem - soll Kensystem beendet werden oder nicht
stoppeSofort - soll System sofort (d.h. ohne Warten auf Erfüllung der Stoppbedingung) beendet werden.

beendeStartStoppApplikation

public void beendeStartStoppApplikation(long absender,
                                        boolean stoppeSofort)
gezieltes Beenden aller gestarteten Prozesse und Beenden der StartStopp Applikation

Parameters:
absender - Absender Auslöser der Aktivität
stoppeSofort - soll System sofort (d.h. ohne Warten auf Erfüllung der Stoppbedingung) beendet werden.

isInkarntionsTeilPlausibel

public boolean isInkarntionsTeilPlausibel()
Methode liefert den Plausibilitätszustand des Inkarantionsanteils der StartStopp.xml Datei

Returns:
true: Inkarnationsanteil der StartStopp.xml Datei ist sematisch korrekt, sonst false

getProzessDaten

public ProzessDaten getProzessDaten(java.lang.String startStoppBlockId,
                                    java.lang.String rechnerAlias,
                                    java.lang.String prozessName)
Methode bestimmt die Prozessdaten des Prozesses der durch die StartStopp Block Id, den Alias Namen eines Rechners und einem Prozessnamen beschrieben ist.

Parameters:
startStoppBlockId - Id des Startstopp Blocks in dem der Rechner Alias definiert wurde
rechnerAlias - Alias Bezeichnung des Rechners
prozessName - Prozessname
Returns:
Prozessdaten des Prozesses oder null falls keine Prozessdaten für diesen Prozess existieren.

loescheProzessDatenRemote

public void loescheProzessDatenRemote(java.lang.String ip)
Methode zum Entfernen der Prozesseinträge, die auf einem anderen Rechner gestartet wurden. Der Rechner wird über seine TCP/IP Adresse angesprochen.

Parameters:
ip - IP-Adresse des Remoterechners

loescheAlleProzessDatenRemote

public void loescheAlleProzessDatenRemote()
Methode zum Entfernen aller Prozesseinträge, die auf anderen Rechnern gestartet wurden.


addListener

public void addListener(IKernsystemListener listener)
Methode zum Hinzufügen eines Listeners

Parameters:
listener - Listener der hinzugefügt werden soll

removeListener

public void removeListener(IKernsystemListener listener)
Methode zum Entfernen eines Listeners

Parameters:
listener - Listener der entfernt werden soll

addProzessDatenRemote

public void addProzessDatenRemote(ProzessDaten pd)
Methode zum Hinzufügen der Prozessdaten eines Remoteprozesses

Parameters:
pd - Prozessdaten des Remoteprozesses