Lade...
 

CX_MONITOR - Monitore

CX_MONITOR

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

Modellbp

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:

CX SALES ACCOUNT De

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 ;
Methodenverzeichnis (MDI)
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     VECTORject> 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

 

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

 

Verwendung in AppsWH
Modul Kurzbeschreibung
moniinsp.mod Monitor Inspektor Basismodul
acntstat.mod Kontenblätter
fiacstat.mod Finanzbuchhaltung Kontenblätter