Diese Funktion steht Ihnen ab 2025.1 zur Verfügung.
Hintergrund
Um nachvollziehen zu können, ob Performanceprobleme durch eine Änderung an einem Prozess, ein JobRouter Update oder beispielsweise ein Betriebssystem- oder Infrastrukturupdate verursacht wurden, ist es zwingend notwendig die Ausführungszeiten vor und nach dem Update zu erfassen, um diese vergleichen zu können. Dafür kann die Dauer bestimmter Aktionen in JobRouter in die Datenbank geloggt werden.
Beschreibung
JobRouter verwendet die Symfony Stopwatch Komponente, um die Ausführungszeit bestimmer Aktionen aufzuzeichnen. Diese Aktionen umfassen aktuell:
•Eingangs- und Prozessboxen: Öffnen, Blättern & Filtern
•Archivansichten: Öffnen, Blättern & Filtern
•Benutzerschritte öffnen (initiales Laden eines Dialoges ohne Sub-Requests)
•Benutzerschritte senden
•Login/Logout
Logging
Das Logging kann über die config.php (Eintrag duration) aktiviert werden und ist ohne das reguläre Debug-Log (CONST_DEBUG oder CONST_LOG_LEVEL_FILE) oder das Stopwatch-Log (stopwatch) möglich.
<?php
// ...
return [
'db' => [
// ...
],
'log' => [
'stopwatch' => false,
'duration' => [
'archiveView' => [1, 2, 3],
'authentication' => ['login', 'logout'],
'step' => [
'open' => [
['MyTestProcess', [1, 4]],
['MyOtherTestProcess'],
],
'send' => [
['MyTestProcess', [1, 4]],
['MyOtherTestProcess'],
],
],
'box' => [
'standard' => ['inbox', 'completed', 'substitution'],
'custom' => [
['MyTestProcess'],
['MyOtherTestProcess', [2]],
],
],
],
],
];
Objekttyp |
Objektsubtyp |
Identifier |
Beispiele |
Beschreibung |
|---|---|---|---|---|
archiveView |
- |
ID(s) der Archivansicht(en) |
'archiveView' => [1, 2, 3] |
Loggt das Öffnen, Blättern & Filtern von Archivansichten mit den IDs 1, 2 und 3 |
authentication |
- |
Liste der Aktionen (login, logout) |
'authentication' => ['login', 'logout'] |
Loggt die Aktionen Login und Logout |
step |
open |
Liste von Prozessnamen (verpflichtend) und Schrittnummern (optional) |
'step' => [ 'open' => [ ['MyTestProcess', [1, 4]], ['MyOtherTestProcess'], ], ], |
Loggt das Öffnen von Benutzerschritten der Prozesse MyTestProcess (nur Schritte 1 und 4) und MyOtherTestProcess (alle Benutzerschritte) |
step |
send |
Liste von Prozessnamen (verpflichtend) und Schrittnummern (optional) |
'step' => [ 'send' => [ ['MyTestProcess', [1, 4]], ['MyOtherTestProcess'], ], ], |
Loggt das Senden von Benutzerschritten der Prozesse MyTestProcess (nur Schritte 1 und 4) und MyOtherTestProcess (alle Benutzerschritte) |
box |
standard |
Liste der Standardeingangsboxen (inbox, substitution oder completed) |
'box' => [ 'standard' => ['inbox', 'completed', 'substitution'], ] |
Loggt das Öffnen, Blättern & Filtern der Eingangsbox (inbox), Bearbeitet-Box (completed) und Vertretungsbox (substitution). |
box |
custom |
Liste von Prozessnamen (verpflichtend) und IDs der Eingangsboxen (optional) |
'box' => [ 'custom' => [ ['MyTestProcess'], ['MyOtherTestProcess', [2]], ], ], |
Loggt das Öffnen, Blättern & Filtern von Prozesseingangsboxen der Prozesse MyTestProcess (alle Boxen) und MyOtherTestProcess (Box 2) |
Ist das Logging aktiv, wird die Dauer der angegebenen Aktionen in die Datenbanktabelle JRDURATIONLOG geschrieben.
Bitte beachten Sie: die Logausgaben sind zahlreich. Um die Datenbank zu schonen, sollte dieses Logging sinnvoll und nur für die Komponenten aktiviert werden, die potentiell Performanceprobleme haben können, z.B. große und komplexe Dialoge oder Eingangsboxen mit sehr vielen Schritten. Wir raten dringend davon ab, standardmäßig jede mögliche Komponente in JobRouter auf Dauer loggen zu lassen. Es ist zudem ratsam die Tabelle regelmäßig zu sichten und alte Einträge (z.B. aus der vorletzten Prozess- oder JobRouter-Version) zu entfernen. JobRouter bietet dafür aktuell keinen Automatismus.
Empfehlung: In der Praxis könnten Sie die Aufzeichnung der Ausführungsdauer verschiedener Bereiche eine Woche vor einem Update starten und mit den neuen Daten nach dem Update abgleichen. Somit wird nachweisbar ersichtlich wie sich die Zeiten durch das Update verbessern oder verschlechtern. (Sofern außer dem Update keine weiteren Parameter verändert wurden am System)
Struktur der Datenbanktabelle:
Die Tabelle JRDURATIONLOG hat die folgende Struktur:
id |
identifier1 |
identifier2 |
identifier3 |
identifier4 |
object_type |
action |
duration |
context |
app_version |
create_date |
|---|---|---|---|---|---|---|---|---|---|---|
1 |
inbox |
standardBox |
open |
0.18 |
{"username":"admin"} |
20250100 |
2025-03-12 14:19:16 |
|||
2 |
inbox |
standardBox |
open |
0.12 |
{"username":"admin"} |
20250100 |
2025-03-12 14:19:22 |
|||
3 |
admin |
logout |
logout |
0.14 |
{"target":"login-page"} |
20250100 |
2025-03-12 14:26:14 |
|||
4 |
admin |
login |
login |
0.57 |
[] |
20250100 |
2025-03-12 14:26:19 |
|||
5 |
MyTestProcess |
1 |
1 |
Startdialog |
step |
open |
0.26 |
{"username":"admin"} |
20250100 |
2025-03-12 14:26:32 |
6 |
MyTestProcess |
1 |
1 |
Startdialog |
step |
send |
0.23 |
{"username":"admin"} |
20250100 |
2025-03-12 14:26:34 |
7 |
1 |
archiveView |
open |
0.15 |
{"username":"admin"} |
20250100 |
2025-03-12 14:26:50 |
|||
8 |
MyTestProcess |
1 |
1 |
processBox |
open |
0.15 |
{"username":"admin","actions":{"acti...}} |
20250100 |
2025-03-12 14:26:51 |
Spalte |
Beschreibung |
Beispielwert |
|---|---|---|
id |
Eindeutige Identifikationsnummer der Zeile. |
1 |
identifier1-4 |
Die Identifier mit denen das zum Eintrag zugehörige Objekt eindeutig identifiziert werden kann. Dieser ist abhängig vom Objekttyp:
•standardBox: interner Name der Box, z .B. inbox (1) •processBox: Prozessname (1), Prozessversion (2), ID der Eingangsbox (3) •archiveView: ID der Archivansicht (1) •step: Prozessname (1), Prozessversion (2), Schrittnummer (3), Dialogname (4) •login: Benutzername (1) •logout: Benutzername (1) |
identifier1: MyTestProcess identifier2: 1 identifier3: 1 identifier4: Startdialog |
object_type |
Der Typ des Objektes, das geloggt wurde:
•standardBox •processBox •archiveView •step •login •logout |
step |
action |
Die Aktion, die ausgeführt wurden. Möglich sind:
•open •send •login •logout |
open |
duration |
Die Dauer der Aktion in Sekunden |
0.23 |
context |
Kontext zur geloggten Aktion |
{"username":"admin"} |
app_version |
Die JobRouter-Version zu der Zeit, als der Eintrag geloggt wurden. 20250100 = 2025.1.0 |
20250100 |
create_date |
Das Datum, an dem der Eintrag erstellt wurde |
2025-03-12 14:26:51 |