Logeinträge mit Functional Logging erstellen
Zum Protokollieren der fachlichen Daten wird die Methode Functional Logging genutzt.
Diese bietet eine vordefinierte XML-Struktur im Modul BPC_Assign_hook
im Workflow BPC_299_PM_Configuration
, welche die Tabellenstruktur für die protokollierten Daten in der Logging-Datenbank und die Einstellungen des Process Monitors im Portal festlegt.
Der Workflow Connector BPC_PM_doFunctionalLogging
(im Workflow BPC_PM_LogDB_Administration
) greift bei der Weitergabe von protokollierten Daten an die Workflows des INUBIT Process Monitor auf die Logging-Konfiguration im Modul BPC_Assign_hook
zurück.
Grundprinzip
Grundsätzlich nutzen Sie für das Functional Logging die im Modul BPC_Assign_hook
im Workflow BPC_PM_Configuration
vordefinierte Datenbankstruktur mit den entsprechenden Spalten.
Wenn Sie zusätzlich zu den vordefinierten Informationen weitere protokollieren möchten, müssen Sie die vordefinierte Datenbankstruktur um geeignete Spalten erweitern.
Die Spalten definieren Sie im Workflow BPC_PM_Configuration
in der XSLT-Variable des Moduls BPC_Assign_hook
, das zu Ihrem Process Monitor-Grid gehört.
Die neuen Tabellenspalten werden erzeugt, wenn Sie im Workflow BPC_PM_LogDB_Administration
das Modul BPC_PM_startWFHere
im Rahmen create log table
zum Erzeugen der Datenbanktabellen starten.
Wenn Sie die Datenbankstruktur geändert haben, indem Sie z.B. Spaltendefinitionen in der XSLT-Variablen des Moduls |
Prinzipielles Vorgehen
Beim Functional Logging schreiben Sie die zu protokollierenden Informationen in eine vorgegebene XML-Struktur.
Mit dieser XML-Struktur füllen Sie die Variable logEntry
im Variablen-Mapping an dem Workflow Connector, der Ihren fachlichen Technical Workflow mit den Workflows des INUBIT Process Monitor verbindet.
Auf Basis der übergebenen
logEntry
-Variablen erstellt der INUBIT Process Monitor einen Log-Eintrag in der Logging-Datenbank.
Sie können beim Functional Logging die vorgegebene XML-Struktur im Modul
BPC_Assign_hook
nach Ihren Wünschen erweitern: So können Sie z.B. nicht nur zusätzliche Informationen in die Logging-Datenbank schreiben und im Process Monitor-Grid anzeigen lassen, sondern auch bei jeder Ausführung eines Workflow Connectors, der einen Logeintrag schreibt, mehrere Child-Logeinträge erzeugen lassen.
Beispiel-Logging
Um beispielhaft Logeinträge zu erzeugen und sich so die vorkonfigurierte Struktur der Tabellenspalten im Portal anzeigen zu lassen, starten Sie im mitgelieferten Workflow BPC_PM_LogDB_Administration
das Modul BPC_PM_startWFHere
im Rahmen create test data
.
Sie sehen im BPC Portal im Process Monitor die erzeugten Logeinträge im Grid.
Functional Logging einbinden
Um fachliche Daten aus Ihrer konkreten Anwendung heraus mit dem INUBIT Process Monitor zu protokollieren, müssen Sie das Functional Logging in Ihr System einbinden:
So gehen Sie vor
-
Fügen Sie den Workflow Connector
BPC_PM_doFunctionalLogging
an fachlich relevanter Stelle in Ihre Workflows ein. -
Stellen Sie sicher, dass Ihr angebundenes System eine Eingangsnachricht für den Workflow Connector liefert, die der Struktur der Tabellenspalten im Modul
BPC_Assign_hook
entspricht. -
Fügen Sie dem Workflow Connector eine XSLT-Variable analog zu der am Modul
BPC_Assign_hook
im WorkflowBPC_299_PM_Configuration
hinzu.Stellen Sie sicher, dass im eingebauten Workflow Connector
BPC_PM_doFunctionalLogging
die Variabledatabase
korrekt gesetzt ist. -
Erstellen Sie im Stylesheet der XSLT-Variablen eine Ihren Anforderungen entsprechende
logEntry
-Struktur mit den notwendigen XML-Elementen für die Eingangsnachricht ähnlich der folgenden:
XML-Elemente für das Functional Logging
Alle untenstehenden Elemente sind standardmäßig in der vordefinierten XML-Struktur der Logging-Konfiguration der XSLT-Quell-Variable im Module BPC_Assign_hook
im Workflow BPC_299_PM_Configuration
. enthalten.
Aus der XML-Struktur werden die Tabellenspalten in der Struktur der Logging-Datenbank und die Spalten im Grid des Process Monitors generiert.
Ändern Sie die Namen der vordefinierten Elemente nicht! |
Elemente für Parent-Logeinträge
Elemente für Child-Logeinträge
Funktionen der mitgelieferten Technical Workflows
Die folgende Tabelle erläutert die Funktionen der mitgelieferten Technical Workflows. Workflows, an denen in der Workbench ein Schloss-Symbol angezeigt wird, sind verschlüsselt und können nicht bearbeitet werden. In der Tabelle sind diese Workflows als nicht-editier bar gekennzeichnet.
Distributed Logging nutzen
Neben dem standardmäßig verfügbaren Logging, können Sie optional ein weiteres Verfahren, das Distributed Logging nutzen.
Verwendung
Sie nutzen das Distributed Logging, wenn Sie aus Performancegründen das Logging parallel und/oder asynchron nutzen.
-
Paralleles Loggen: Ein System oder mehrere Systeme loggen unabhängig voneinander in die Datenbank des Process Monitors.
-
Asynchrones Loggen: Das Logging wird asynchron ausgeführt, damit eine langsame Datenbankverbindung nicht die Nachrichtenverarbeitung ausbremst bzw. im Fehlerfall stoppt.
Um zu verhindern, dass sich Logschritte bzw.
Datenbank-Statements überholen und z.B. ältere Logeinträge einer langsamen Datenbankverbindung neue Logeinträge, die über eine schnelle Verbindung kommen, überschreiben, aktivieren Sie Distributed Logging.
Um das Verfahren zu nutzen, müssen Sie in Ihrer logEntry
-Struktur das entsprechende Attribut neu hinzufügen und bestimmte Regeln zum Übergeben der Logschritte einhalten bzw. umsetzen.
Voraussetzungen
-
Wenn Sie von verschiedenen Systemen aus in den gleichen Process Monitor loggen wollen, müssen die Uhren der Systeme synchronisiert sein.
-
Der loggende Prozess muss synchron sein, d.h., Sie loggen nicht aus verschiedenen asynchronen Prozessen zur gleichen ProcessID.
Distributed Logging aktivieren
Um das Distributed Logging-Verfahren zu nutzen, müssen Sie Ihre logEntry
-Struktur anpassen.
So gehen Sie vor
-
Machen Sie Ihre
logEntry
-Struktur zur Bearbeitung verfügbar und nutzen Sie dafür ggf. einen XSLT Converter. -
Fügen Sie in die bestehende Struktur ein neues Attribut
distributedLogging
an das Root-ElementlogEntry
ein. -
Setzen Sie den Wert des neuen Attributs auf
true
.
Falls das Attribut |
Regeln im LogEntry umsetzen
Zur Übergabe der Logschritte müssen Sie bestimmte Regeln in Ihrer logEntry
-Struktur einhalten, um sicherzustellen
-
dass sich beim Loggen der Log-Einträge Datenbank-Statements nicht überholen bzw. überschreiben.
-
dass beim Loggen der Child-Logeinträge alle übernommen und später in der richtigen Reihenfolge wiedergegeben werden.
-
Dateien zu Log-Einträgen (über das
Reffile
-Element) nicht unnötig mitgeführt werden.
Ziel ist es, dass in einem neueren logEntry
alle nötigen Informationen des vorherigen enthalten sind.
So gehen Sie vor
Passen Sie die logEntry
-Struktur in Ihren fachlichen Workflows gemäß folgenden Regeln an:
-
LastUpdate
-Element Stellen Sie sicher, dass das ElementLastUpdate
in der XSLT-Variable des ModulsBPC_Assign_hook
im WorkflowBPC_299_PM_Configuration
zur Erzeugung der Datumsspalte, in der das letzte Aktualisierungs-/ Bearbeitungsdatum des Eintrags erfasst wird, gesetzt ist. -
Log-Eintrag
-
Übernehmen Sie für jeden Logschritt das
logEntry
des vorherigen Schrittes. -
Fügen Sie im nachfolgenden Logschritt neue Elemente dem
logEntry
hinzu oder aktualisieren Sie relevante Elemente deslogEntry
. Belassen Sie alle anderen Elemente imlogEntry
. -
Setzen Sie bei jedem Logschritt den Zeitstempel von
LastUpdate
neu. -
Wenn Sie explizit den Wert einer Spalte auf Null setzen wollen, fügen Sie dem entsprechenden Element im
logEntry
das Attributdelete
mit dem Werttrue
hinzu.
-
-
Childlog-Eintrag
Setzen Sie im nachfolgenden Logschritt alle Werte der Childlog-Einträge, insbesondere das
Timestamp
-Element, da es für die spätere Sortierreihenfolge der Child-Einträge in der Anzeige des Process Monitors verwendet wird. -
Reffile-Datei
Best Practice: Falls bei Log-Einträgen Dateien als
Reffile
-Elemente mitgeführt werden, müssen Sie diese aus Performancegründen pro Logschritt setzen und anschließend wieder löschen.
Einstellungen für Logging von Child-Einträgen definieren
Child-ID für Anzeige im Grid ausblenden
Damit die Child-Logeinträge im Grid nur gemäß der Sortierung auf Basis des Zeitstempels sichtbar sind und nicht die Reihenfolge der Datenbank-Speicherung (childid
), muss die Spalte mit den Child-IDs für die Anzeige im Grid ausgeblendet werden.
So gehen Sie vor
-
Öffnen Sie die XSLT-Variable des Moduls
BPC_Assign_hook
im WorkflowBPC_299_PM_Configuration
zum Bearbeiten. -
Fügen Sie dem
childid
-Element, welches in seiner Darstellung als Spalte im Grid ausgeblendet werden soll, das Attributhidden=true
hinzu: -
Speichern Sie die Änderungen und publizieren Sie den Workflow.
Asynchrone Ausführung definieren
Um die gewünschte asynchrone Ausführung zu definieren, müssen Sie den Workflow Connector BPC_PM_doFunctionalLogging
, der die Funktionalität des Process Monitors umsetzt und den Sie an fachlich relevanter Stelle in Ihre Workflows einbinden, neu anlegen und konfigurieren.
Die parallele Ausführung des Workflows BPC_PM_Insert_Log
ist bereits im Auslieferungszustand gesetzt.
So gehen Sie vor
-
Legen Sie einen neuen Workflow Connector analog zu
BPC_PM_doFunctionalLogging
(im WorkflowBPC_PM_LogDB_Administration
) an. -
Benennen Sie den Workflow Connector und lassen Sie sich von dem Assistenten durch die Erzeugung und Konfiguration des neuen Workflow Connectors führen. Achten Sie dabei besonders auf folgende Einstellungen:
-
Setzen Sie den Kommunikationsmodus auf Asynchron, damit der aufrufende Workflow nach dem Aufruf des Workflow Connectors unmittelbar fortgesetzt wird.
-
Markieren Sie die Option Workflow mit neuer Prozess-ID ausführen, damit jeder Prozess, der beim Aufruf des Subworkflows entsteht, eine neue Prozess-ID erhält.
-
Wählen Sie als Ziel-Workflow
BPC_PM_Insert_Log
. -
Wählen Sie als Ziel-Modul das zweite Assign-Modul
BPC_PM_Assign
als Einstiegspunkt für das Logging.Für ausführliche Informationen zum Workflow Connector siehe:
-
-
Beenden Sie die Konfiguration des Workflow Connectors mit Fertig stellen.
-
Publizieren Sie den Workflow Connector.