Zugriff auf Vertec Business Intelligence (BI) Daten via OCL
In Vertec Listen kann ab Vertec 6.8 via OCL auf die BI Daten zugegriffen werden.
Für den Zugriff auf einzelne BI Kennzahlen gibt es den Operator
bigetdata(measurename, from, to, currency)
aufrufbar auf einzelnen Objekten. Die Expression gibt die Summe aller Werte dieser Kennzahl für das aufrufende Objekt im angegebenen Zeitraum zurück.
Der Operator
bigetdatabyrole(measurename, role, from, to, currency)
gibt BI Kennzahlen an für den Benutzer in der genau angegebenen Rolle an (mit dem ersten Operator wird automatisch die erste Rolle verwendet).
measurename |
Interner Name der gewünschten Kennzahl. Gibt es keine Kennzahl dieses Namens, wird ein Fehler ausgegeben. |
role |
Ab Version 6.8.0.18. Die genaue Rolle des Benutzers, nach der abgefragt werden soll. Die Rolle muss als Native angegeben werden. Wird sie z.B. auf Deutsch angegeben, wird ein Fehler ausgegeben. Wenn 'Role' leer ist, dann ist das Verhalten gleich wie bei bigdata. |
from, to |
Start- bzw. Enddatum des abgefragten Werts. Sollen alle Werte abgefragt werden, kann Es wird ab Vertec 6.8.0.15. immer der ganze Monat berücksichtigt, also der 1. des von-Datums und der Letzte des bis-Datums. So erscheinen auch Stichtagswerte immer korrekt. |
currency |
Währungskürzel der Währung, in der die Daten ausgegeben werden sollen. Wird ein Leerzeichen übergeben, wird die Leitwährung verwendet. |
Als Resultatdimension wird immer die Klasse des aufrufenden Objekts verwendet.
Mit Operator bigetdata:
Bei Klassen, die in der evaluierten Kennzahl in mehr als einer Dimension vorkommen (mit unterschiedlichen Rollen), wird
Mit Operator bigetdatabyrole:

Wird beispielsweise das Honorar extern für einen Bearbeiter abgefragt (argobject.evalocl("self->bigetdata('FeesExt', encodedate(2025, 1, 1), encodedate(2025, 12, 31), '')")), erhält man
Mit bigetdatabyrole (ab Vertec 6.8.0.18) erhält man die Summe von Honorar extern mit der genau übergebenen Rolle:
argobject.evalocl("self->bigetdatabyrole('FeesExt', 'as project manager', encodedate(2025, 1, 1), encodedate(2025, 12, 31), ' ')")
Der OCL Operator kann an jeder Stelle verwendet werden, nicht nur in Listeneinstellungen:
argobject.evalocl("bigetdata('measurename', encodedate(2024,1,1), encodedate(2024,12,31), '')")
Er kann auch auf Listen von Objekten angewendet werden, gibt dann aber eine Liste von Zahlen zurück. Diese können mit ->sum summiert werden:
project.evalocl("phasen->bigetdata('measurename', DateTime.null, DateTime.null, '')->sum")
Für komplexere Anwendungsfälle (mehrdimensional, Projektionen) kann die Python Funktion vtcapp.bigetdata() verwendet werden, siehe Python Funktion für die Abfrage von BI Daten.
Um eine Liste von Objekten zu erhalten, die BI Daten in einem bestimmten Zeitraum haben, gibt es den Operator
bigetdimensions(measure, from, to)
ausführbar auf einer OCL Klasse.
Das Ergebnis ist eine Liste von Objekten dieser Klasse, die BI Daten für die übergebene Kennzahl in dem übergebenen Zeitraum haben.
measurename |
Interner Name der gewünschten Kennzahl. Gibt es keine Kennzahl dieses Namens, wird ein Fehler ausgegeben. |
from, to |
Start- bzw. Enddatum des abgefragten Zeitraums. Sollen der gesamte Zeitraum abgefragt werden, kann |
Die Verwendung der Resultatdimension ist gleich wie oben geschrieben.
Diese Expression beispielsweise liefert eine Liste von Projekten, die Umsatz im ersten Quartal 2025 haben:
Project.bigetdimensions('TurnoverServices', encodedate(2025,1,1), encodedate(2025,3,31))
Damit können sehr performant nur die Objekte angezeigt werden, die bestimmte Werte haben.
Als Beispiel sollen in einer Liste alle Projekte angezeigt werden, die in einem bestimmten Zeitraum Umsatz generiert haben.

Der dafür verwendete Expression-Ordner wird entsprechend gefiltert:

Projekt->bigetdimensions('TurnoverServices', varDatumVon, varDatumBis)
Die Variablen varDatumVon und varDatumBis stehen durch die Feldnamen (Datum von, Datum bis) zur Verfügung.
Die Spaltenexpression für den Umsatz in der Liste lautet:
self->bigetdata('TurnoverServices', varDatumVon, varDatumBis, '')
