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 sealed class SimulationAutomaton extends Object implements de.bsvrz.dav.daf.main.ClientReceiverInterface permits OfflineSimulation, OnlineSimulation
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 final int
    Gelöscht - Zustand.
    protected static final int
    Vorstart - Zustand.
    protected static final int
    Neu - Zustand.
    protected static final int
    Pause - Zustand.
    protected static final int
    Start - Zustand.
    protected static final int
    Stop - Zustand.
    static final int
    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
    - 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
    Zustand 'Gelöscht' wird erreicht. - Löschen der Daten
    protected void
    Zustand 'Vorstart' wird erreicht. - Löschen der archivierten Simulationsdaten.
    protected void
    Zustand 'Neu' wird erreicht.
    protected void
    Zustand 'Start' wird erreicht.
    protected void
    Zustand 'Stop' wird erreicht. - 'Ende'-Meldung senden - Abmeldung vom Datenempfang
    protected void
    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
    Liefert die Simulationsvariante der Simulation.
    protected boolean
    sendSimulationState(boolean archiveReady)
    Legt den Simulationsstatus auf den Datenverteiler.
    void
    Beendet den Automaten.
     
    boolean
    Transition in den neuen Zustand.
    protected void
    Stoppt die Simulationsanmeldung.
    void
    update(de.bsvrz.dav.daf.main.ResultData[] results)
    Callback Methode die vom Dav aufgerufen wird, wenn neue Daten zum Simulationsobjekt eingehen.
    void
    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.
    • unsubscribe

      protected void unsubscribe()
      Stoppt die Simulationsanmeldung. Wartet nicht.
    • 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(SimulationManager.Transition)
    • wakeUp

      public void wakeUp()
      Benachrichtigt die Simulation, dass die Wartezeit abgelaufen ist.
      See Also:
    • getSimVar

      public short getSimVar()
      Liefert die Simulationsvariante der Simulation.
      Returns:
      Simulationsvariante. UNDEFINED falls noch nicht initialisiert.
    • toString

      public String toString()
      Overrides:
      toString in class Object