de.bsvrz.ars.ars.mgmt.simulation
Class SimulationAutomaton

java.lang.Object
  extended by de.bsvrz.ars.ars.mgmt.simulation.SimulationAutomaton
All Implemented Interfaces:
ClientReceiverInterface
Direct Known Subclasses:
OfflineSimulation, OnlineSimulation

public class SimulationAutomaton
extends Object
implements ClientReceiverInterface

Deterministischer endlicher Automat für die Simulation. Nicht erlaubte Transitionen werden ignoriert. Treten Fehler auf, so werden diese geloggt.

Author:
beck et al. projects GmbH, Martin Hilgers

Nested Class Summary
private static class SimulationAutomaton.StateSender
           
 
Field Summary
private  SimulationAutomaton.StateSender _stateSender
           
private static int CREATED
          Automat wurde erzeugt, ist aber noch nicht aktiv.
private  Debug debug
          Debug Ausgabe.
protected static int ERASED
          Gelöscht - Zustand.
protected static int INIT
          Vorstart - Zustand.
protected static int NEW
          Neu - Zustand.
private  boolean noSource
          Zeigt an, dass der letzte erhaltene Datensatz für das SImulationsobjekt ein 'keine Quelle' Datensatz war.
protected static int PAUSE
          Pause - Zustand.
private  SimulationManager simManager
          Simulationsverwaltung
private  SystemObject simulation
          Simulationsobjekt
private  DataDescription simulationControl
          Steuerungsinformationen, auf die sich die Simulation beim Dav anmelden soll.
private  SystemObject simulationRange
          Simulationsstreckenobjekt.
private  short simVar
          Simulationsvariante der Simulation.
protected static int START
          Start - Zustand.
private  int state
          Zustand des Automaten.
protected static int STOP
          Stop - Zustand.
private static int SUBSCRIBED
          Automat wurde erzeugt und wurde aktiviert - d.h.
private  ArrayList<Integer> transitions
          Liste mit den Transitionen, die ausgeführt werden sollen.
static int UNDEFINED
          Undefinierter Zustand / Undefinierte Simulationsvariante
 
Constructor Summary
SimulationAutomaton(SimulationManager simManager, SystemObject simulation, DataDescription simulationControl)
          Erzeugt einen neuen Automaten für eine Simulation.
 
Method Summary
protected  void continueInitStateGetParams()
          - Anmelden auf Information, welche Daten archiviert werden sollen.
protected  void continueInitStateSubscribe(ResultData resultData)
          Fortsetzung Zustand 'Vorstart'.
 void dataDeleted(boolean successful)
          Wird aufgerufen, nachdem die Daten der Simulation gelöscht wurden.
protected  void enterErasedState()
          Zustand 'Gelöscht' wird erreicht.
protected  void enterInitState()
          Zustand 'Vorstart' wird erreicht.
protected  void enterNewState()
          Zustand 'Neu' wird erreicht.
protected  void enterStartState()
          Zustand 'Start' wird erreicht.
protected  void enterStopState()
          Zustand 'Stop' wird erreicht.
protected  void finishErasedState()
          Wird aufgerufen, nachdem alle Daten gelöscht wurden.
protected  void finishInitState(boolean successful)
          Wird vom ArchivConfig Task aufgerufen, nachdem das Archivsystem sich auf die Simulationsdaten angemeldet hat - Sendet die 'Bereit' Meldung, wenn Daten gelöscht, falls der Automat im Zustand Vorstart und die Anmeldung auf die zu archivierenden Simulationsdaten erfolgreich verlaufen ist.
 short getSimVar()
          Liefert die Simulationsvariante der Simulation.
protected  boolean sendSimulationState(boolean archiveReady)
          Legt den Simulationsstatus auf den Datenverteiler.
protected  void sendSimulationStateAndUnsubscribe(boolean archiveReady)
          Legt den Simulationsstatus auf den Datenverteiler.
private  void subscribeSimulation()
          Meldet das Objekt als Empfänger für die Simulationssteuerung an.
private  void subscribeSimulationRange()
          Meldet das Objekt als Empfänger für die Simulationsstrecke an.
private  void subscribeSimulationState()
           
 void terminate()
          Beendet den Automaten.
 boolean transition()
          Transition in den neuen Zustand.
private  void unsubscribeSimulation()
          Meldet das Objekt vom Empfang für Simulationssteuerungsdaten ab.
private  void unsubscribeSimulationRange()
          Meldet das Objekt vom Empfang für Simulationsstreckendaten ab.
private  void unsubscribeSimulationState()
           
 void update(ResultData[] results)
          Callback Methode die vom Dav aufgerufen wird, wenn neue Daten zum Simulationsobjekt eingehen.
 void wakeUp()
          Benachrichtigt die Simulation, dass die Wartezeit abgelaufen ist.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UNDEFINED

public static final int UNDEFINED
Undefinierter Zustand / Undefinierte Simulationsvariante

See Also:
Constant Field Values

CREATED

private static final int CREATED
Automat wurde erzeugt, ist aber noch nicht aktiv.

See Also:
Constant Field Values

SUBSCRIBED

private static final int SUBSCRIBED
Automat wurde erzeugt und wurde aktiviert - d.h. Anmeldung auf Simulationssteuerung ist erfolgt.

See Also:
Constant Field Values

NEW

protected static final int NEW
Neu - Zustand.

See Also:
Constant Field Values

INIT

protected static final int INIT
Vorstart - Zustand.

See Also:
Constant Field Values

START

protected static final int START
Start - Zustand.

See Also:
Constant Field Values

PAUSE

protected static final int PAUSE
Pause - Zustand.

See Also:
Constant Field Values

STOP

protected static final int STOP
Stop - Zustand.

See Also:
Constant Field Values

ERASED

protected static final int ERASED
Gelöscht - Zustand.

See Also:
Constant Field Values

state

private int state
Zustand des Automaten.


debug

private Debug debug
Debug Ausgabe.


simulation

private SystemObject simulation
Simulationsobjekt


simulationRange

private SystemObject simulationRange
Simulationsstreckenobjekt.


transitions

private ArrayList<Integer> transitions
Liste mit den Transitionen, die ausgeführt werden sollen.


simVar

private short simVar
Simulationsvariante der Simulation.


noSource

private boolean noSource
Zeigt an, dass der letzte erhaltene Datensatz für das SImulationsobjekt ein 'keine Quelle' Datensatz war.


simulationControl

private final DataDescription simulationControl
Steuerungsinformationen, auf die sich die Simulation beim Dav anmelden soll.


simManager

private final SimulationManager simManager
Simulationsverwaltung


_stateSender

private SimulationAutomaton.StateSender _stateSender
Constructor Detail

SimulationAutomaton

public SimulationAutomaton(SimulationManager simManager,
                           SystemObject simulation,
                           DataDescription simulationControl)
Erzeugt einen neuen Automaten für eine Simulation. Meldet den Automaten als Empfänger für das Simuationsobjekt an.

Parameters:
simManager - Simulationsverwaltung
simulation - Simulationsobjekt.
simulationControl - Steuerungsinformationen, auf die sich die Simulation beim Dav anmelden soll.
Method Detail

subscribeSimulation

private void subscribeSimulation()
Meldet das Objekt als Empfänger für die Simulationssteuerung an.


unsubscribeSimulation

private void unsubscribeSimulation()
Meldet das Objekt vom Empfang für Simulationssteuerungsdaten ab.


subscribeSimulationRange

private void subscribeSimulationRange()
Meldet das Objekt als Empfänger für die Simulationsstrecke an.


unsubscribeSimulationRange

private void unsubscribeSimulationRange()
Meldet das Objekt vom Empfang für Simulationsstreckendaten ab.


transition

public boolean transition()
Transition in den neuen Zustand. Es wird überprüft, ob die Transition möglich ist.

Returns:
true falls der Automat in den neuen Zustand überführt werden konnte. false sonst.

enterNewState

protected void enterNewState()
Zustand 'Neu' wird erreicht. Meldet den Empfang von Steuerungsdaten an. Sendet, dass das Archivsystem nicht für die Durchführung der Simulation zur Verfügung steht.


enterInitState

protected void enterInitState()
Zustand 'Vorstart' wird erreicht. - Löschen der archivierten Simulationsdaten. Ist diese Aufgabe abgeschlossen, wird die Callback MethodedataDeleted(boolean) vom Löschtask aufgerufen.


continueInitStateGetParams

protected void continueInitStateGetParams()
- Anmelden auf Information, welche Daten archiviert werden sollen. Geht diese Information ein, wird continueInitStateSubscribe(ResultData) durch update(ResultData[]) aufgerufen. Diese Methode Wird von dataDeleted(boolean) aufgerufen, wenn der Zustand der Simulation INIT ist.


continueInitStateSubscribe

protected void continueInitStateSubscribe(ResultData resultData)
Fortsetzung Zustand 'Vorstart'. - Meldet das Archivsystem auf die Simulationsdaten an. Wird durch update(ResultData[]) aufgerufen, sobald die zu archivierenden Daten bekannt sind.

Parameters:
resultData - Information, auf welche Daten sich das Archivsystem anmelden soll.

finishInitState

protected void finishInitState(boolean successful)
Wird vom ArchivConfig Task aufgerufen, nachdem das Archivsystem sich auf die Simulationsdaten angemeldet hat - Sendet die 'Bereit' Meldung, wenn Daten gelöscht, falls der Automat im Zustand Vorstart und die Anmeldung auf die zu archivierenden Simulationsdaten erfolgreich verlaufen ist.

Parameters:
successful - Zeigt an ob der Auftrag erfolgreich durchgeführt wurde.

enterStartState

protected void enterStartState()
Zustand 'Start' wird erreicht. Meldet die Simulation vom Empfang von Anmeldeinformationen


enterStopState

protected void enterStopState()
Zustand 'Stop' wird erreicht. - 'Ende'-Meldung senden - Abmeldung vom Datenempfang


enterErasedState

protected void enterErasedState()
Zustand 'Gelöscht' wird erreicht. - Löschen der Daten


finishErasedState

protected void finishErasedState()
Wird aufgerufen, nachdem alle Daten gelöscht wurden. Wird durch dataDeleted(boolean) aufgerufen, wenn der Zustand ERASED ist. - Benachrichtigung senden, dass Simulationsobjekt gelsöcht werden kann.


subscribeSimulationState

private void subscribeSimulationState()

unsubscribeSimulationState

private void unsubscribeSimulationState()

sendSimulationState

protected boolean sendSimulationState(boolean archiveReady)
Legt den Simulationsstatus auf den Datenverteiler. Blockiert, bis das Senden abgeschlossen wurde, maximal jedoch 10 Sekunden.

Parameters:
archiveReady - Ist das Archiv für die Simulation bereit?
Returns:
true falls das Senden erfolgreich durchgeführt wurde.

sendSimulationStateAndUnsubscribe

protected void sendSimulationStateAndUnsubscribe(boolean archiveReady)
Legt den Simulationsstatus auf den Datenverteiler. Wartet nicht.

Parameters:
archiveReady - Ist das Archiv für die Simulation bereit?

dataDeleted

public void dataDeleted(boolean successful)
Wird aufgerufen, nachdem die Daten der Simulation gelöscht wurden.

Parameters:
successful - Zeigt an ob die Daten gelöscht werden konnten.

terminate

public void terminate()
Beendet den Automaten. Meldet den Empfang von Daten ab.


update

public void update(ResultData[] results)
Callback Methode die vom Dav aufgerufen wird, wenn neue Daten zum Simulationsobjekt eingehen. Benachrichtigt Simulationsverwaltung, wenn eine Zustandsänderung der Simulation eingegangen ist.

Specified by:
update in interface ClientReceiverInterface
See Also:
ClientReceiverInterface.update(ResultData[]), SimulationManager.addTransition(SimulationAutomaton)

wakeUp

public void wakeUp()
Benachrichtigt die Simulation, dass die Wartezeit abgelaufen ist.

See Also:
SimulationManager.addWakeUp(SimulationAutomaton)

getSimVar

public short getSimVar()
Liefert die Simulationsvariante der Simulation.

Returns:
Simulationsvariante. UNDEFINED falls noch nicht initialisiert.