Finite State Machine (FSM) alias FCT

FSM ist unsere Implementierung einer Finite State Machine in PL/SQL mit Speicherung der Status, Events und Transitions in Datenbanktabellen.

Fokus dieser Implementierung ist, auf möglichst einfache Weise eine Finite State Machine zur Realisierung von Workflows in Anwendungen zu realisieren. Es basiert auf den PL/SQL Instrumentation Toolkit (PIT), indem es Meldung zu Statusübergängen, Fehlermeldungen etc. von dort bezieht und dessen Infrastruktur zur Speicherung der Meldungen nutzt.

Um dies zu erreichen, verfügt unsere Finite State Machine-Implementierung über ein eigenes Ausgabemodul für PIT. Dessen Schweregrade für Meldungen werden genutzt, um Milestones von weniger relevanten Statusübergängen zu unterscheiden. So ist es möglich, die Statusübergänge zu qualifizieren und zum Beispiel eine feingranulare Bereinigung der Statustabellen über die Wichtigkeit der erreichten Statusübergänge zu realisieren.

Events können automatisch oder manuell ausgelöst werden. Manuell ausgelöste Events können hierfür mit Bezeichnern, Icons etc. ausgestattet werden, um sie zum Beispiel in einer APEX-Anwendung dynamisch als Schaltflächen rendern zu lassen. Da die ausgelöste Aktion stets die gleiche ist (für ein Objekt wird der entsprechende Event ausgelöst), können so generische Oberflächen erstellt werden, die eine Objektinstanz der Finite State Machine bearbeiten zu können, ohne Kenntnis über den aktuellen Status und die erlaubten Events besitzen zu müssen. Diese Informationen werden dynamisch aus dem Framework gewonnen.