Class SimulationAutomaton

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

public class SimulationAutomaton
extends java.lang.Object
implements de.bsvrz.dav.daf.main.ClientReceiverInterface
Deterministischer endlicher Automat für die Simulation. Nicht erlaubte Transitionen werden ignoriert. Treten Fehler auf, so werden diese geloggt.
  • Field Summary

    Fields
    Modifier and Type Field Description
    protected static int ERASED
    Gelöscht - Zustand.
    protected static int INIT
    Vorstart - Zustand.
    protected static int NEW
    Neu - Zustand.
    protected static int PAUSE
    Pause - Zustand.
    protected static int START
    Start - Zustand.
    protected static int STOP
    Stop - Zustand.
    static int UNDEFINED
    Undefinierter Zustand / Undefinierte Simulationsvariante
  • Constructor Summary

    Constructors
    Constructor Description
    SimulationAutomaton​(SimulationManager simManager, de.bsvrz.dav.daf.main.config.SystemObject simulation, de.bsvrz.dav.daf.main.DataDescription simulationControl)
    Erzeugt einen neuen Automaten für eine Simulation.
  • Method Summary

    Modifier and Type Method Description
    protected void continueInitStateGetParams()
    - Anmelden auf Information, welche Daten archiviert werden sollen.
    protected void continueInitStateSubscribe​(de.bsvrz.dav.daf.main.ResultData resultData)
    Fortsetzung Zustand 'Vorstart'. - Meldet das Archivsystem auf die Simulationsdaten an.
    void dataDeleted​(boolean successful)
    Wird aufgerufen, nachdem die Daten der Simulation gelöscht wurden.
    protected void enterErasedState()
    Zustand 'Gelöscht' wird erreicht. - Löschen der Daten
    protected void enterInitState()
    Zustand 'Vorstart' wird erreicht. - Löschen der archivierten Simulationsdaten.
    protected void enterNewState()
    Zustand 'Neu' wird erreicht.
    protected void enterStartState()
    Zustand 'Start' wird erreicht.
    protected void enterStopState()
    Zustand 'Stop' wird erreicht. - 'Ende'-Meldung senden - Abmeldung vom Datenempfang
    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.
    void terminate()
    Beendet den Automaten.
    java.lang.String toString()  
    boolean transition()
    Transition in den neuen Zustand.
    void update​(de.bsvrz.dav.daf.main.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, wait, wait, wait
  • Field Details

  • Constructor Details

    • SimulationAutomaton

      public SimulationAutomaton​(SimulationManager simManager, de.bsvrz.dav.daf.main.config.SystemObject simulation, de.bsvrz.dav.daf.main.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 Details

    • 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​(de.bsvrz.dav.daf.main.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.
    • 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​(de.bsvrz.dav.daf.main.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 de.bsvrz.dav.daf.main.ClientReceiverInterface
      See Also:
      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.
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object