CX_STATE_MONITOR
Klassenhierarchie
- CX_CLASS
- CX_SIMPLE
- CX_TERMED
- CX_EXPANDABLE
- CX_MONITOR
- CX_LOG_MONITOR
- CX_ACCOUNT
- CX_STATE_MONITOR
- CX_ACCOUNT
- CX_LOG_MONITOR
- CX_MONITOR
- CX_EXPANDABLE
- CX_TERMED
- CX_SIMPLE
Beschreibung:
Diese Klasse verwaltet einen Statusmonitor. Statusmonitore sind spezielle Monitor-Objekte, die über das Datenfeld transitions mit anderen Statusmonitoren zu einem Petri-Netz verknüpft sind und auf diese Weise Geschäftsprozesse abbilden. Der eigentliche Geschäftsprozess (CX_WORK_FLOW-Objekt) hält die einzelnen Zustände lediglich in seiner monitors-Collection und ist in den CX_STATE_MONITOR-Objekten als owner hinterlegt.
CX_TRANSACTION-Objekte können per ConnectStateMonitor erstmalig mit dem Start-Zustand eines solchen Petri-Netzes verknüpft werden. Dabei wird die Transaktion auch direkt in diesen Start-Monitor gebucht (Verknüpfung über CX_TRANSACTION։։monitors und CX_STATE_MONITOR։։transactions).
Per TriggeredStateMonitor werden die Transaktionen dann durch das Petri-Netz geschaltet (wobei die Transaktion eine Marke im Petri-Netz repräsentiert). Hierzu werden die Transitionsbedingungen vom Startzustand ausgehend (wichtig) ausgewertet, bis der Zustand gefunden wird, aus dem keine Transitionsbedingung mehr erfüllt ist. Die Transaktion wird dann mit diesem neuen Zustand verknüpft und für den früheren Zustand wir die Message STATE_OUT und für den neuen Zustand STATE_IN gefeuert.
Die Auswertung vom Startzustand aus führt dazu, dass jeder Zustand nur vom Start-Zustand (über beliebige Zwischenzustände) erreichbar sein muss. Im Gegensatz zu einem regulären Petri-Netz muss für einen Zustandsübergang von A->B keine Transition A->B definiert sein, denn solange A und B vom Startzustand erreichbar sind, kann TriggeredStateMonitor einen solchen Übergang durchführen.
Mit RemoveStateMonitor kann die Verbindung wieder aufgehoben werden. Die Operation ist invers zu ConnectStateMonitor.
Nachdem eine Transaktion einen Zustandswechsel (TriggeredStateMonitor) vollzogen hat, wird an den Zustandsmonitor des Quellzustands die Message STATE_OUT direkt gesendet (siehe: ObjectCode) und anschließend an den Zustandsmonitor des Zielzustands die Message STATE_IN gefeuert. Wenn die Message gefeuert wird, liegt die Transaktion als einzgies Objekte auf dem Stack. Bei ConnectStateMonitor wird STATE_IN am Start-Zustand gefeuert. Bei RemoveStateMonitor wird STATE_OUT am aktuellen Zustand gefeuert.
Code-Beispiel:
Funktion | MA* | Parameter | Rückgabe | Kurzbeschreibung |
---|---|---|---|---|
IsNewState | INTEGER | Wird im Moment die Transition des Start-Zustands ausgewertet? | ||
IsPostState | INTEGER | Wie IsPreState mit Ausnahme des Start-Zustands. | ||
IsPreState | INTEGER | Ist dies der Zustand, dessen Transitionen aktuell ausgewertet werden? | ||
SanityCheck | INTEGER | Prüfung auf Konsistenz des Objektes | ||
AllDimensions | COLLECTION | Alle Dimensionen | ||
ClassFilter | STRING, INTEGER | OBJECT | Dieses Objekt, wenn es einer bestimmten Klasse entspricht | |
DataCube | VECTOR |
OBJECT | ? | |
DataCubeCore | VECTOR |
OBJECT | ? | |
Deleted | INTEGER | Objekt als gelöscht markiert? | ||
Description | STRING | Bezeichnung dieses Objektes | ||
Dimension | STRING, INTEGER | OBJECT | ? | |
DimensionByCondition | STRING | OBJECT | ? | |
EvaluateTotal | STRING | OBJECT | Formel berechnen | |
GetAllTransactions | COLLECTION | Sammelt rekursive alle Transaktionen aus sich und den subMonitors | ||
GetDomain | INTEGER | Domain dieses Objektes | ||
GetSiblings | COLLECTION | Alle Siblings dieses Objektes | ||
GetSiblings2 | COLLECTION | Alle Siblings dieses Objektes | ||
GetSlotEntries | VECTOR |
Rückgabe von internen Informationen zu Slots | ||
InsertSubMonitor | OBJECT | ? | ||
InvalidateObjectCode | Kennzeichnet ObjectCode als ungültig | |||
LastUpdate | OBJECT | Datum des letzten Schreibzugriffs | ||
LastUser | INTEGER | User, der zuletzt schreibend auf das Objekt zugegriffen hat | ||
Link | OBJECT | Dieses Objekt in die Liste der Objekte mit Gültigkeit einfügen | ||
NextValidObject | OBJECT | Zeitlich nachfolgendes Gültigkeitsobjekt | ||
ObjectCode | * | Zugriff auf den mit dem Monitor assoziierten ObjectCode | ||
PeriodDataCubes | OBJECT, OBJECT, INTEGER | COLLECTION | Datenwürfel eines bestimmten Zeitraums heraussuchen | |
PreviousValidObject | OBJECT | Zeitlich vorangehendes Gültigkeitsobjekt | ||
QueryFifthDimension | OBJECT | ? | ||
QueryFirstDimension | OBJECT | ? | ||
QueryFourthDimension | OBJECT | ? | ||
QuerySecondDimension | OBJECT | ? | ||
QueryThirdDimension | OBJECT | ? | ||
RemoveSubMonitor | OBJECT | ? | ||
RestrictedValidity | * | Gültigkeitsbereich eingeschränkt? | ||
SetDomain | INTEGER, INTEGER | Domain setzen | ||
ShortName | STRING | Kurzbezeichnung dieses Objektes | ||
Siblings | * | Objekte mit Gültigkeit | ||
SpanDateValidity | * | Gültigkeitsspanne | ||
string | INTEGER | CX_STRING | Liefert die String-Darstellung des Objektes | |
SubMonitorsOfLevel | INTEGER | COLLECTION | ? | |
TopAccount | STRING, INTEGER | OBJECT | Dieses Objekt, wenn es einer bestimmten Klasse entspricht | |
TopDimensions | INTEGER | COLLECTION | ? | |
TopMonitor | INTEGER | OBJECT | ? | |
Total | STRING | OBJECT | ? | |
Unlink | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
Unlink2 | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
UpperDimensionByCondition | STRING | OBJECT | wie DimensionByCondition | |
Valid | OBJECT | INTEGER | Gültigkeit prüfen | |
ValidSince | OBJECT | Beginn der Gültigkeitsspanne | ||
ValidToday | INTEGER | Heute gültig? | ||
ValidUntil | OBJECT | Ende der Gültigkeitsspanne | ||
VerifySiblings | INTEGER | Ring der Austauschobjekte prüfen |
* MA = Member-Access-Funktion,
grau unterlegt = geerbte Funktion
Datenfeld | Typ | Referenz-Klasse | I* | Kurzbeschreibung |
---|---|---|---|---|
transitions | CX_CONDITIONED_BAG | ? | ||
owner | REL_1M | CX_STRUCTURED | ? | |
subMonitors | REL_MN | CX_MONITOR | ? | |
transactions | REL_MN | CX_TRANSACTION | ? | |
uniqueID | STRING | * | Eindeutiger Schlüssel | |
validity | POINTER | CX_VALIDITY | Gültigkeitszeitraum des Objektes |
* I = Indizierbares Datenfeld,
grau unterlegt = geerbtes Datenfeld
Modul | Kurzbeschreibung |
---|---|
statmoni.mod | Status Monitor Basismodul |
statmedt.mod | Status Monitor Editiermodul |
statmsel.mod | Status Monitor Selektionsmodul |
showmoni.mod | Zustandsmonitor Modul |