CX_MONITOR
Klassenhierarchie
- CX_CLASS
- CX_SIMPLE
- CX_TERMED
- CX_EXPANDABLE
- CX_MONITOR
- CX_EXPANDABLE
- CX_TERMED
- CX_SIMPLE
Beschreibung:
Monitore sind - gemeinsam mit dem Regelwerk der Transaktionsbeschreibungen - das zentrale Auswertungswerkzeug für Belege (CX_TRANSACTION). Ob Buchhaltung, Lager- oder Zeitwirtschaft , jegliche Statistiken, Vorgänge oder Geschäftsprozesse, überall hat man es mit einer "Kontierung" von Belegen oder Bewegungsdaten zu tun.
Das Konzept ist stark angelehnt an den 13 Codd'schen Grundregeln von OLAP (online analytical processing). Eine Übersetzung in die OLAP-Terminologie sieht daher folgendermaßen aus:
Dimensionen (dimensions) | Monitore (z.B. CX_SALES_ACCOUNT) oder Basisobjekte (CX_SPAN_DATE) |
Merkmale (measures) | Slots |
Kennzahlen (ratio) | z.B. ermittelt durch Formeln aus den Merkmalen |
In der Statistik Literatur werden Dimensionen auch kategorisierende Attribute genannt, Merkmale auch als numerische oder summierende Attribute bezeichnet. Es können prinzipiell keine formalen Kriterien dafür angegeben werden, ob ein Attribut als eine eigenständige Dimension oder als ein einfacher (meist aufsummierender) Wert definiert wird. Dieses obliegt dem Design der Anwendung und der Auswertung der dabei erfassten Daten.
Als Hilfestellung hierzu soll daran erinnert werden, dass Dimensionen orthogonal zueinander definiert sein müssen und auch günstigstenfalls selbst einer hierarchischen Struktur unterliegen sollten.
Monitore können 1-dimensional (Konten: CX_ACCOUNT) oder mehr-dimensional (CX_DATA_CUBE/CX_LOG_CUBE) sein. Die 1-dimensionalen
Monitore (CX_MONITOR Objekte) registrieren die durch Transaktionen verursachten Änderungen von Geschäftsobjekten. Jedes Geschäftsobjekt kann beliebig vielen Monitoren zugeordnet werden (REL_M1 Beziehung zwischen CX_BUSINESS_OBJECT und CX_MONITOR).
Monitore können 1-dimensional (Konten: CX_ACCOUNT) oder mehr-dimensional (CX_DATA_CUBE/CX_LOG_CUBE) sein. Die 1-dimensionalen CX_ACCOUNT Monitore werden über die owner<->monitors Relation einem Geschäftsobjekt zugeordnet. Diese Konten beobachten dabei für das zugeordnete Geschäftsobjekt bestimmte Werte und wird durch das Regelwerk der Transaktionsbeschreibungen verändert.
Bestimmte Monitortypen (CX_ACCOUNT, CX_LOG_CUBE) können die die Werte verändernden Transaktionsobjekte (CX_TRANSACTION) registrieren, so dass man die im Monitor gesammelten (kumulierten) Werte an Hand der Transaktionen erklären kann (drill-down).
Transaktionen werden zunächst einem Transaktionsmanager CX_TXN_MANAGER übergeben, der die Änderung der Werte und die Registrierung in die von dieser Transaktion aus erreichbaren Monitore (singulären Dimensionen vom Typ CX_ACCOUNT) der Geschäftsobjekte übernimmt.
Auch multi-dimensionale Monitore werden durch den Transaktionsmanager verwaltet und angelegt. Wichtig hierbei ist, dass von jeder Transaktion aus alle gewünschten Dimensionen erreichbar sein müssen.
Alle Monitortypen haben über die Relation subMonitors die Eigenschaft sich in weitere untergeordnete Dimensionen aufzuteilen. Als Beispiel sei hier die Aufteilung einer Kundenumsatz Statistik aufgezeigt:
Code-Beispiel:
Define(SetMonitorFormat) // Level 1 [ "CX_MONITOR::purchase.estimate", JUSTIFY_RIGHT ] SetFormat [ "CX_MONITOR::material1.costs", JUSTIFY_RIGHT ] SetFormat [ "CX_MONITOR::material1.variableOverheadCosts", JUSTIFY_RIGHT ] SetFormat [ "CX_MONITOR::material1.fixedOverheadCosts", JUSTIFY_RIGHT ] SetFormat [ "CX_MONITOR::wages1.costs", JUSTIFY_RIGHT ] SetFormat [ "CX_MONITOR::wages1.variableOverheadCosts", JUSTIFY_RIGHT ] SetFormat [ "CX_MONITOR::wages1.fixedOverheadCosts", JUSTIFY_RIGHT ] SetFormat [ "CX_MONITOR::net.estimate", JUSTIFY_RIGHT NF_DIMENSIONED ] SetFormat [ "CX_MONITOR::estimated.jobTime.DigitalHours()", JUSTIFY_RIGHT ] SetFormat // Level 2 [ "CX_MONITOR::purchase.value", COLUMN 2, 0 6, COLOR BLUE ] SetFormat [ "CX_MONITOR::material2.costs", COLUMN 3, 0 6, COLOR BLUE ] SetFormat [ "CX_MONITOR::material2.variableOverheadCosts", COLUMN 4, 0 6, COLOR BLUE ] SetFormat [ "CX_MONITOR::material2.fixedOverheadCosts", COLUMN 5, 0 6, COLOR BLUE ] SetFormat [ "CX_MONITOR::wages2.costs", COLUMN 6, 0 6, COLOR BLUE ] SetFormat [ "CX_MONITOR::wages2.variableOverheadCosts", COLUMN 7, 0 6, COLOR BLUE ] SetFormat [ "CX_MONITOR::wages2.fixedOverheadCosts", COLUMN 8, 0 6, COLOR BLUE ] SetFormat [ "CX_MONITOR::net.value", COLUMN 9, 0 6, COLOR BLUE ] SetFormat [ "CX_MONITOR::approved.jobTime.DigitalHours()", COLUMN 10, 0 6, COLOR BLUE ] SetFormat // Captured [ "CX_MONITOR::material.capturedCosts", COLUMN 3, 0 12, COLOR GREEN ] SetFormat [ "CX_MONITOR::material.capturedVariableOverheadCosts", COLUMN 4, 0 12, COLOR GREEN ] SetFormat [ "CX_MONITOR::material.capturedPrimeOverheadCosts", COLUMN 5, 0 12, COLOR GREEN ] SetFormat [ "CX_MONITOR::wages.capturedCosts", COLUMN 6, 0 12, COLOR GREEN ] SetFormat [ "CX_MONITOR::wages.capturedVariableOverheadCosts", COLUMN 7, 0 12, COLOR GREEN ] SetFormat [ "CX_MONITOR::wages.capturedPrimeOverheadCosts", COLUMN 8, 0 12, COLOR GREEN ] SetFormat // [ "CX_MONITOR::", COLUMN 9, 0 12, COLOR GREEN ] SetFormat [ "CX_MONITOR::captured.jobTime.DigitalHours()", COLUMN 10, 0 12, COLOR GREEN ] SetFormat ;
Funktion | MA* | Parameter | Rückgabe | Kurzbeschreibung |
---|---|---|---|---|
AllDimensions | COLLECTION | Alle Dimensionen | ||
Dimension | STRING, INTEGER | OBJECT | reserviert für die abgeleitete Klassen CX_ACCOUNT und CX_DATA_CUBE | |
DimensionByCondition | STRING | OBJECT | reserviert für die abgeleitete Klassen CX_ACCOUNT und CX_DATA_CUBE | |
GetAllTransactions | COLLECTION | sammelt rekursive alle Transaktionen aus sich und den subMonitors | ||
InsertSubMonitor | OBJECT | einen untergeordnete Monitor einfügen | ||
PeriodDataCubes | OBJECT, OBJECT, INTEGER | COLLECTION | Datenwürfel eines bestimmten Zeitraums heraussuchen | |
QueryFifthDimension | OBJECT | reserviert für die abgeleitete Klasse CX_DATA_CUBE | ||
QueryFirstDimension | OBJECT | reserviert für die abgeleitete Klassen CX_ACCOUNT und CX_DATA_CUBE | ||
QueryFourthDimension | OBJECT | reserviert für die abgeleitete Klasse CX_DATA_CUBE | ||
QuerySecondDimension | OBJECT | reserviert für die abgeleitete Klasse CX_DATA_CUBE | ||
QueryThirdDimension | OBJECT | reserviert für die abgeleitete Klasse CX_DATA_CUBE | ||
RemoveSubMonitor | OBJECT | einen untergeordnete Monitor löschen | ||
SanityCheck | INTEGER | Prüfung auf Konsistenz des Objektes | ||
SubMonitorsOfLevel | INTEGER | COLLECTION | Rückgabe: untergeordnete Monitore von der bestimmte Ebene | |
TopAccount | STRING, INTEGER | OBJECT | reserviert für die abgeleitete Klassen CX_ACCOUNT und CX_DATA_CUBE | |
TopDimensions | INTEGER | COLLECTION | Rückgabe: eine Collection mit dem aufrufendem Monitor-Objekt | |
TopMonitor | INTEGER | OBJECT | reserviert für die abgeleitete Klassen CX_ACCOUNT und CX_DATA_CUBE | |
Total | STRING | OBJECT | Inhalt des Datenfeldes (addiert mit dem gleichen Datenfelder von untergeordnete Monitoren) | |
UpperDimensionByCondition | STRING | OBJECT | reserviert für die abgeleitete Klassen CX_ACCOUNT und CX_DATA_CUBE | |
ClassFilter | STRING, INTEGER | OBJECT | Dieses Objekt, wenn es einer bestimmten Klasse entspricht | |
Deleted | INTEGER | Objekt als gelöscht markiert? | ||
Description | STRING | Bezeichnung dieses Objektes | ||
EvaluateTotal | STRING | OBJECT | Formel berechnen | |
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 | ||
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 | ||
PreviousValidObject | OBJECT | Zeitlich vorangehendes Gültigkeitsobjekt | ||
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 | |
UniqueID | STRING | Inhalt des festen Datenfeldes "uniqueID" | ||
Unlink | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
Unlink2 | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
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 |
---|---|---|---|---|
subMonitors | REL_MN | CX_MONITOR | untergeordnete Monitore | |
uniqueID | STRING | * | Eindeutiger Schlüssel | |
validity | POINTER | CX_VALIDITY | Gültigkeitszeitraum des Objektes |
* I = Indizierbares Datenfeld,
grau unterlegt = geerbtes Datenfeld
Modul | Kurzbeschreibung |
---|---|
moniinsp.mod | Monitor Inspektor Basismodul |
acntstat.mod | Kontenblätter |
fiacstat.mod | Finanzbuchhaltung Kontenblätter |