Lade...
 

CX_STATE_MONITOR - Statusmonitor

CX_STATE_MONITOR

Klassenhierarchie
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:
...

 

Methodenverzeichnis (MDI)
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   VECTORject>, INTEGER OBJECT ?
DataCubeCore   VECTORject>, INTEGER 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     VECTORject> 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

 

Datenverzeichnis (DDI)
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

 

Verwendung in AppsWH
Modul Kurzbeschreibung
statmoni.mod Status Monitor Basismodul
statmedt.mod Status Monitor Editiermodul
statmsel.mod Status Monitor Selektionsmodul
showmoni.mod Zustandsmonitor Modul