CX_PROFILE_MANAGER::CalculateDurations
Beschreibung:
Diese Methode erwartet als ersten Parameter ein übergeordnetes Objekt, welches eine Baumstruktur an Ereignissen definiert. Hiefür können beliebige Pseudoklassen verwendet werden. Jedes Objekt aus der Baumstruktur muss über folgende Eigenschaften verfügen, damit die Methode korrekt arbeiten kann.
- Einen Slot, der alle Kindknoten enthält (Bsp: children, subTransactions)
- Den Slot starttime (CX_NUMERIC), über den die Laufzeit der einzelnen Statements ermittelt werden soll
Die Methode errechnet die Dauer für jeden Knoten über die Differenz der Startzeit zur Startzeit des vorherigen Knotens (vorheriger Knoten in Bezug auf die Tiefensuche durch den Baum). Die Dauer wird in dem angegebenen Slot als CX_NUMERIC eingetragen. Damit diese Berechnung klappt, müssen die Startzeiten der Knoten monoton steigende Werte sein. Einheiten spielen für diese Methode keine Rolle. Aufgrund der Arbeitsweise dieser Methode hat der erste Knoten keine Dauer, da es keinen Vorgänger gibt. Die Dauer ist nich hierarchisch, sodass die Dauer eines Eltern-Knotens nicht der Summe der Dauer der Kindknoten entspricht.
Code-Beispiel:
/* Aufbau von root davor: { children : [ { children : [] starttime: "2016-08-26 16:09:08" }, { children : [] starttime: "2016-08-26 16:09:10" } ] } */ root "children" "duration" GetManager(PROFILE) Call(CalculateDurations) /* Aufbau von root danach: { children : [ { children : [] starttime: "2016-08-26 16:09:08" duration : "2 seconds" }, { children : [] starttime: "2016-08-26 16:09:10" } ] } */
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_PROFILE_MANAGER | |
Top-1 | STRING | Name des Datenfeldes, in welches die Dauer eingetragen werden soll ("duration") | |
Top-2 | STRING | Name des Datenfeldes, über welches die Kindknoten erreichbar sind ("children") | |
Top-3 | CX_EXPANDABLE | Objekt-Baum (Root-Knoten) | |
Stack(Out) | Top | - |