BPC Anbindung Tutorial
Einführung
Das Virtimo Business Process Center (BPC) ist ein Applikationsframework zur Erstellung webbasierter Fachanwendungen und Portallösungen.
Das BPC und IGUASU arbeiten dazu nahtlos zusammen und sind voll integriert. Auf der Seite von IGUASU gibt es dazu mehrere Prozessoren und Services, durch die eine Anbindung ermöglicht wird.
Um den Fokus auf IGUASU zu legen und umfangreiche weitere Konfigurationen im BPC zu vermeiden, befinden sich im Folgenden die benötigten BPC-Elemente, die importiert werden können: BPC-Export.json.
Für die Übersicht der erstellten Daten und für den Prozessstarter kann ein vorkonfigurierter Prozessmonitor genutzt werden. Für die Weiterleitung der Daten vom IGUASU zum BPC zurück wird ein ProcessLogger benötigt, der ebenfalls vorkonfiguriert in der Export-Datei enthalten ist. Zusätzlich befindet sich ein Forms-Modul im Export, welcher für den Input im BPC genutzt werden kann.
Ein Beispiel des abgeschlossenen Tutorials kann zudem mit folgendem Link heruntergeladen werden: BPC-Tutorial.json.
Im Folgenden werden die einzelnen Schritte zur Verknüpfung einer BPC-Instanz und einem Beispiel-Flow beschrieben.
Grundlegende Konfiguration
Einrichten der nötigen Services
Um eine Verbindung mit dem BPC aus IGUASU zu ermöglichen werden zwei Services benötigt.
-
Der HybridRESTServerController wird verwendet, um IGUASU aus dem BPC anzusprechen und so nachrichten aus dem BPC in Flows zu verarbeiten (siehe Konfiguration des ListenBPCFlowStarter-Prozessors).
-
Der HybridRESTClientController wird verwendet, um Nachrichten an das BPC zu senden (siehe Nachrichten aus dem IGUASU an das BPC weiterleiten)
Konfiguration des HybridRESTServerController-Services
Der HybridRESTServerController fungiert als REST endpunkt, mit dem das IGUASU aus dem BPC angesprochen werden kann. Dazu muss der service zuerst in der entsprechenden Prozessgruppe erstellt und konfiguriert werden.
Zur Konfiguration werden hierbei ein Listening Port und Angaben zur Authentifikation benötigt.
Als Port kann beispielsweise 9010
eingetragen werden, während der Authentication Username und das Passwort beliebig gewählt werden können.
Des weiteren sollte der SSL Context Service auf den Virtimo preconfigured SSL sevice for internal and incomming HTTP requests gesetzt werden.
Die gewählten Angaben müssen im Anschluss im BPC hinterlegt werden, um die Verbindung zum IGUASU zu ermöglichen. Eine Anleitung zur Konfiguration der Verbindung im BPC befindet sich in der BPC-Dokumentation.
Konfiguration des HybridRESTClientController-Services
Der HybridRESTClientController wird verwendet, um das BPC über die REST schnittstelle anzusprechen und wird für alle BPC-Prozessoren benötigt. Dazu muss der service zuerst in der entsprechenden Prozessgruppe erstellt und konfiguriert werden.
Zur Konfiguration muss zunächst die BPC URL eingetragen werden.
Wenn IGUASU und das BPC sich in derselben Cloud-Umgebung befinden, lautet die URL standardmäßig https://bpc-karaf:8282
.
Darüber hinaus muss der in der BPC Instanz erstellte API Key hinterlegt werden.
Dem erstellten API Key müssen die entsprechende Rechte zugewiesen werden, um die verschiedene API-Aufrufe durchführen zu können. Die erforderlichen Rechte sind unten für die entsprechenden Aufrufe erwähnt. |
Um eine sichere Kommunikation zu ermöglichen, sollte zudem ein SSL Context Service
ausgewählt werden.
Falls keiner hinterlegt wird, muss dies für das Protokoll in der hinterlegten URL im BPC berücksichtigt werden und die TargetURL muss mit http://
beginnen.
Durch die anderen Einstellungsmöglichkeiten wäre es zudem möglich, Timeout-Kriterien oder Optionen zur Authentifikation zu definieren. Diese Einstellungen werden im Rahmen des Tutorials jedoch nicht benötigt und können daher auf dem Standardwert belassen werden.
Konfiguration im BPC
Damit BPC und IGUASU Nachrichten austauschen können muss auch das BPC dafür konfiguriert werden.
API Key
Um eine Verbindung as dem IGUASU zum BPC herzustellen, muss zuerst im Konfigurationsbereich (Core Services/API Keys
) des BPC ein entsprechender API-Key erstellt werden.
Dieser API-Key muss über die entsprechenden Rollen und Rechte verfügen.
Hier eine Auswahl relevanter Rollen und Rechte und ihrer Bedeutung (weitere bitte der BPC Dokumentation entnehmen):
Rollen:
-
LOG_SERVICE_USER
: Ermöglicht das Verwenden von Logservices (siehe:). -
NOTIFICATION_ADMIN
: Ermöglicht das Senden von Notifications.
Rechte:
-
LOG_SERVICE_WRITE_DATA
: Erlaubt das Schreiben in einen Logservice (Benötigt für Process Monitoring). -
LOG_SERVICE_READ_DATA
: Erlaubt das Lesen von eintragen aus einem Logservice. -
LOG_SERVICE_CONFIG_GET_INSTANCES
: Wird benötigt, um eine Liste der Verfügbaren Logservices im IGUASU zu erhalten. -
NOTIFICATION_ADD
: Wird benötigt um aus IGUASU Notifications im BPC auslösen zu können. -
AUDIT_LOG_CREATE_ENTRY
: Wird benötigt um Audit Logs schreiben zu können.
Backend Connection
Damit aus dem BPC Aktionen im IGUASU über den Process starter ausgelöst werden können, muss eine entsprechende Backend Connection im BPC erstellt werden.
Erstellen sie dazu in den BPC Einstellungen unter Backen Connections
eine neue Backend Connection vom Typ http_proxy
.
Dabei sind folgende Properties zu setzen:
-
Connection_Username
: der im HybridRestServerController gesetzte Username. -
Connection_Password
: das im HybridRestServerController gesetzte Passwort. -
Target_BaseURL
: die URL unter dem das IGUASU system erreichbar ist (typischerweisehttps://iguasu-nifi
, inklusive des im HybridRestServerController gesetzten Ports.
In diesem Fall also z.B.https://iguasu-nifi:9010/
-
Connection_CheckCsrfToken
: Um im IGUASU Nachrichten über das Forms Modul im BPC zu erhalten muss diese option nicht (!) gesetzt sein.
Logservice
Sollen Daten an das BPC Process Monitoring gesendet werden, so muss dafür im BPC ein entsprechender Logservice erstellt werden. Für die Konfiguration des Logservices beachten Sie bitte die BPC Logservice Dokumentation.
BPC Eingaben im IGUASU erhalten
Es bestehen zwei Möglichkeiten, Eingaben aus dem BPC an IGUASU zu versenden.
-
Über BPC Forms.
-
Über Process Actions im Process Monitoring.
Für beide Möglichkeiten wird, um die Nachrichten im IGUASU zu empfangen, der ListenBPCFlowStarter
Prozessor benötigt.
Konfiguration des ListenBPCFlowStarter-Prozessors
Um Daten der BPC-Instanz verarbeiten zu können, müssen diese zunächst an IGUASU übergeben werden.
Hierbei ermöglicht der ListenBPCFlowStarter-Prozessor als Schnittstelle den Empfang und die weitere Verarbeitung der übermittelten Informationen.
Dabei wird der Prozessor als Startpunkt eines Flows verwendet.
Um den Prozessor zu verwenden, müssen zuerst einige Properties gesetzt werden:
-
Listener Identifier: ein eindeutiger Identifier, mit dem der Listener angesprochen werden kann.
-
BPC Listener Controller: Ein HybridRESTServerController, der aus dem BPC angesprochen wird, um die Verbindung zu ermöglichen.
-
BPC Controller: Ein HybridRESTClientController, mit dem die Verbindung zum BPC hergestellt wird.
-
Name: Der Anzeigename des Endpunkts.
-
Description: Eine Beschreibung des Endpunkts.
-
Load the BPC Session: Ist diese Option gewählt, wird die BPC session bei einem auslösen des Prozesses an das Flowfile angehängt.
In diesem Beispiel soll es möglich sein, Kundendaten im BPC einzugeben, die in IGUASU verarbeitet und zurück an das BPC übermittelt werden, um eine Übersicht über die angelegten Kunden zu ermöglichen.
Daher wählen wir für die Konfiguration distinkte Angaben, die den Listener mit der geplanten Funktion von zukünftigen weiteren Listenern unterscheidet.
Zusätzlich sollen Informationen zur BPC-Session verarbeitet werden, in der die Daten erstellt wurden.
Daher muss die Option Load the BPC Session
angewählt werden.
BPC Forms
Für die geplante Umsetzung mit dem Forms-Modul im Rahmen dieses Tutorials genügt das Standardformular, welches bei der Erstellung eines neuen Formulars automatisch vorhanden ist.
Um eine erfolgreiche Verbindung zu ermöglichen, muss noch die submitURL angepasst werden, damit die Interaktion mit dem Submit-Button die Daten an den gewünschten Prozessor sendet.
Die Submit url muss auf die zuvor erstellte HttpProxy-Backendconnection verweisen, dies Erfolgt über einen Aufruf der http-proxy API.
In diesem Fall ist die Entsprechende submitUrl
also:
/bpc/cxf/bpc-httpproxy/httpProxy/iguasu/submit-customer
Nach Abschluss der Anpassungen und der Eingabe der SubmitURL, in der die Flow-ID und Prozessor-ID enthalten sind, ist die Konfiguration des gewünschten Formulars abgeschlossen.
Wenn die Konfiguration aller Elemente erfolgreich erledigt ist, wird die Eingabe durch die Betätigung des Formular abschicken
- Buttons erfolgreich an IGUASU übermittelt.
Dieser Vorgang kann überprüft werden, indem die Success-Relation des ListenBPCFlowStarters in einen Funnel geleitet wird.
Prozessstarter
Die zweite Möglichkeit der Datenweiterleitung an IGUASU, die im Rahmen dieses Tutorials beschrieben wird, ist der Eingabe über einen Prozessstarter. Dafür muss zuerst ein entsprechender Process-Starter im BPC konfiguriert werden. Diese erfolgt nach der Process Starter-Anleitung in der BPC-Dokumentation. Dabei müssen im der Process Monitoring Konfiguration im BPC folgende Attribute gesetzt sein:
-
Function_InubitBackendConnection: Hier muss die zuvor erstellte Backend Connection gesetzt werden.
-
Function_InubitBaseURL: Muss auf den Wert "/" gesetzt werden.
-
Function_ProcessStarterEndpoint: Hier muss die ID des entsprechenden ListenBPCFlowStarters, der angesprochen werden soll gesetzt werden.
In diesem Fall wird ein zweiter ListenBPCFlowStarter erstellt und wie zuvor beschrieben, mit einem anderen identifier konfiguriert.
Nachdem der ListenBPCFlowStarter-Prozessor und der Prozessstarter konfiguriert wurden, kann ebenfalls das Übermitteln der Daten ausgetestet werden. Im Anschluss sollten die Daten, wie in der folgenden Abbildung dargestellt, in IGUASU ersichtlich sein.
Process Actions
Aus dem BPC Process Monitoring können außerdem auch Eintrags-spezifische Prozess Aktionen ausgelöst werden und so Nachrichten an IGUASU gesendet werden. Damit diese Aktionen im IGUASU empfangen werden können müssen wiederum einige Attribute im Process Monitoring gesetzt sein:
-
Function_InubitBackendConnection: Hier muss die zuvor erstellte Backend Connection gesetzt werden.
-
Function_InubitBaseURL: Muss auf den Wert "/" gesetzt werden.
-
Function_ProcessActionsEndpoint: Hier muss die ID des entsprechenden ListenBPCFlowStarters, der angesprochen werden soll gesetzt werden.
Verarbeitung der BPC Daten
Nachdem die Daten erfolgreich im IGUASU empfangen wurden können sie nun verarbeitet werden.
Verarbeitung der BPC Forms Daten
Als Ergebnis zur Speicherung der Eingabe soll eine benutzerdefinierte JSON-Struktur erstellt werden, in der zusätzliche Informationen eingetragen sind. Da der Content der empfangenen Forms FlowFiles in IGUASU ebenfalls bereits im JSON-Format sind, bietet sich der JsonataTransformJson-Prozessor an.
Mit dem JsonataTransformJson-Prozessor können sowohl die Attribute als auch der Content eines FlowFiles angepasst werden.
Da der Inhalt verändert werden soll, wird als Input Data Content
ausgewählt.
Zusätzlich muss die JSONata Transformation
-Angabe ausgefüllt werden, um den Prozessor abschließend zu bearbeiten.
Hierzu steht im Konfigurationsbereich die Editor-Spalte zur Verfügung, in dem die gewünschte Struktur hinterlegt werden kann.
Da die Daten im späteren Verlauf des Tutorials über einen Process Logger im BPC eingetragen werden sollen, muss für den JSON-Content die entsprechende Struktur berücksichtigt werden. Die grundlegende Struktur sieht dabei vor, dass Informationen des Parent- und Child-Elements unterteilt werden.
Für dieses Beispiel sollen die allgemeinen Informationen zu den Kunden im Parent-Element und mögliche Bearbeitungsschritte, die in zukünftigen Iterationen angepasst werden, im Child-Element gespeichert werden. Wenn dabei die JSON-Struktur der Forms-Eingabe berücksichtigt wird, ergibt sich der folgende Aufbau für die geplanten JSON-Daten:
{
"entries": [
{
"parent": {
"customerid": $nfGetAttribute('filename'),
"fullname": form.state.data.firstName & " " & form.state.data.lastName,
"address": form.state.data.address.street & ", " & form.state.data.address.postalCode & " " & form.state.data.address.city,
"language": "German",
"created": $now(),
"updated": $now()
},
"childs": [
{
"customerid": $nfGetAttribute('filename'),
"orderid": $nfGetAttribute('filename'),
"created": $now(),
"order": "",
"status": "Neuer Kunde"
}
]
}
]
}
Die vorhandenen Informationen können in der JSON-Struktur neu sortiert werden, um ein neues Objekt zu schaffen.
Durch data.firstName & data.lastName
können beispielsweise die ursprünglich distinkten Angaben zum Vor- und Nachnamen zu fullname
kombiniert werden.
Zusätzlich ist es möglich, auf Attribute zuzugreifen und diese ebenfalls in die JSON-Struktur zu integrieren.
Dies wird hier für das Attribut filename
angewandt, um individuelle IDs zu übernehmen, da der Dateiname in IGUASU immer einzigartig ist.
Zusätzliche besteht die Möglichkeit, Funktionen wie $now()
aufzurufen, was in diesem Fall für das Erstellungsdatum genutzt wird.
Durch diesen Schritt sind die Daten des BPC Forms für den Prozesslogger umgestellt.
Das gleiche Vorgehen muss nun ebenfalls für den Prozessstarter erfolgen.
Verarbeitung der Prozessstarter Daten
Die Daten des Prozessstarters müssen zunächst angepasst werden, da diese nicht als JSON an IGUASU übermittelt werden.
Die erhaltenen Daten sind im URL-kodierten XML-Format und werden mit dem Zusatz request=
eingeleitet, was ebenfalls entfernt werden muss.
Um den Zusatz zu entfernen, kann der ReplaceText-Prozessor genutzt werden.
Als Search Value wird request=
eingetragen und der Replacement Value kann leer gelassen werden.
Dadurch bleibt die URL-kodierte XML-Datei übrig.
Zum Dekodieren kann die NiFi Expression Language Funktion urlDecode()
genutzt werden, die allerdings nur auf Attribute angewandt werden kann.
Daher muss der Inhalt zunächst in ein Attribut überführt werden, um im Anschluss die Funktion zu verwenden.
Für diesen Zweck kann der ExtractText-Prozessor genutzt werden, um den Content in ein Attribut zu speichern.
Hierfür muss über eine dynamische Property der Name für das Attribut (für dieses Beispiel content
) und der Wert festgelegt werden.
Da der gesamte Inhalt des Contents übernommen werden soll, wird als Wert (?s)(^.*$)
eingefügt.
Nun kann ein zweiter ReplaceText-Prozessor genutzt werden, um den kodierten Inhalt durch den dekodierten zu ersetzen. Da alles ersetzt werden kann, wird als Replacement Strategy Always Replace und als Evaluation Mode Entire Text gewählt.
Um ein Attribut als Content zu verwenden und gleichzeitig das Dekodieren durchzuführen, kann die Expression Language verwendet werden.
Im Replacement Value kann damit durch die Eingabe von ${content:urlDecode()}
der dekodierte Wert des Attributs übernommen werden.
Mit der abgeschlossenen Konfiguration sollte der Prozessor wie folgt aussehen:
Zuletzt muss die XML-Datei noch in JSON umgewandelt werden, um die anschließende Verarbeitung zu ermöglichen. Für diesen Zweck wird der ConvertRecord-Prozessor verwendet.
Für die Konfiguration wird ein Record Reader und ein Record Writer als Service benötigt, mit denen die gewünschten Formate gelesen und erstellt werden können. Da der Prozessor XML-Dateien in das JSON-Format konvertieren soll, wird als Reader der XMLReader-Service benötigt und als Writer der JSONRecordSetWriter-Service. Beide Services können ohne weitere Konfigurationen aktiviert und beim ConvertRecord-Prozessor verwendet werden.
Als abschließender Schritt zur Bearbeitung muss, ähnlich wie bei der Verarbeitung der BPC-Forms Daten, die JSON-Struktur angepasst werden, damit die Daten an den Prozessmonitor weitergeleitet werden können. Hierfür wird erneut der JSONataTransformJSON-Prozessor genutzt, wobei die folgende Datenstruktur verwendet werden kann:
{
"entries": [
{
"parent": {
"customerid": $nfGetAttribute('filename'),
"fullname": data.item.firstName & " " & data.item.lastName,
"address": data.item.street & ", " & data.item.postalCode & " " & data.item.city,
"language": "German",
"created": $now(),
"updated": $now()
},
"childs": [
{
"customerid": $nfGetAttribute('filename'),
"orderid": $nfGetAttribute('filename'),
"created": $now(),
"order": "",
"status": "Neuer Kunde"
}
]
}
]
}
Mit diesem abschließenden Schritt sind sowohl die Daten aus dem BPC-Forms als auch vom Prozessstarter für die Weiterleitung an das BPC vorverarbeitet. Der angelegte Flow sollte an diesem Punkt wie folgt aussehen:
Nachrichten aus dem IGUASU an das BPC weiterleiten
Nachrichten und Daten können durch folgende Methoden von IGUASU an das BPC gesendet werden:
-
Prozessrelevante Daten und Logs können mittels des
PutBPCProcessLog
Prozessors an einen Logservice im BPC gesendet werden und kann dort im Process Monitoring angezeigt werden. -
Für interne Logdaten kann der
PutBPCAuditLog
Prozessor verwedet werden. -
Mit dem
PutBPCNotification
Prozessor können kleinere Push-Nachrichten an das BPC gesendet werden um z.B. sofortiges Feedback zu laufenden Prozessen zu liefern.
Process-Logs
Um Informationen aus IGUASU im BPC Process Monitor darstellen zu können müssen diese mittels des PutBPCProcessLog
Processors an einen Logservice im BPC gesendet werden.
In der Konfiguration des Prozessors wird zunächst der zuvor konfigurierte HybridRESTClientController ausgewählt, über den eine Verbindung zum BPC hergestellt wird. Des weiteren sollte im BPC bereits ein Logservice erstellt worden sein.
Ist der Controller und der Logservice richtig konfiguriert, stehen unter BPC Logger
die im BPC erstellten Logger zur Verfügung.
Durch die Property Input Type kann zusätzlich spezifiziert werden, welche Daten an das BPC gesendet werden sollen.
Für diesen Zweck könnte die BPC Entries JSON
-Property verwendet werden, oder der Content eines FlowFiles.
Da in diesem Tutorial die generierten Daten im Content der FlowFiles enthalten sind, wird Letzteres für die Konfiguration genutzt.
Die durch das BPC vorgegebene JSON-Struktur des Loggers muss zwingend in IGUASU eingehalten werden, damit die Daten erfolgreich übermittelt werden können. |
Mit erfolgreicher Konfiguration sollten die Daten nach Durchführung des Prozessors im Prozessmonitor des BPCs angezeigt werden. Ein Beispiel für die abgeschlossene Konfiguration kann der folgenden Abbildung entnommen werden.
Audit-Logs
Um eine bessere Übersicht über die erstellten Kunden zu bieten, soll dokumentiert werden, wenn ein neuer Kunde generiert wurde. Für diesen Zweck können Audit-Logs verwendet werden, die eine Meldung im Audit Monitor des BPCs erzeugen.
Zum Erstellen von Audit-Logs kann der PutBPCAuditLogs-Prozessor verwendet werden.
Zur Konfiguration muss hierbei ebenfalls zunächst der HybridRESTClientController-Service festgelegt werden, um eine Kommunikation mit dem BPC zu ermöglichen.
Die API-Key der BPC Controller braucht das Recht AUDIT_LOG_CREATE_ENTRY, um Audit-Logs schreiben zu können. |
Zusätzlich muss angegeben werden, welche Log Level die generierten Meldungen haben sollen.
Zur Auswahl stehen dabei DEBUG
, INFO
, WARNING
und ERROR
.
Um eine bessere Übersicht über die generierten Daten zu ermöglichen, soll zunächst eine INFO
-Meldung hinzugefügt werden, wenn ein Nutzer einen neuen Kunden erstellt.
Damit zusätzlich ersichtlich ist, welcher Nutzer den Kunden erstellt hat, kann der BPC Audit Originator
definiert werden.
Dadurch, dass bei der Konfiguration des ListenBPCFlowStarters die Option Load the BPC Session
ausgewählt wurde, befinden sich diese Information bereits in dem bpc.session-Attribut des FlowFiles.
Über die NiFi Expression Language kann die Information zum Nutzer über einen JSONPath abgerufen werden.
Als Originator wird daher an dieser Stelle ${bpc.session:jsonPath('$.loginName')}
vermerkt, damit der Nutzer dynamisch ermittelt werden kann.
Unter den Punkten BPC Action
und BPC Audit Description
können im Anschluss zusätzliche Informationen definiert werden, die in der Meldung enthalten sein sollen.
Eine beispielhafte Konfiguration ist in der folgenden Abbildung dargestellt.
Zusätzlich würde es sich anbieten, den Misserfolg des Prozess-Loggers in den Audit-Logs zu vermerken.
Hierfür kann ein zweiter PutBPCAuditLogs-Prozessor erstellt werden, der mit der failure-Relation an den PutBPCProcessLogger-Prozessor gebunden wird.
Als Audit Level kann zudem WARNING
oder ERROR
ausgewählt werden, um zusätzlich auf den Misserfolg hinzudeuten.
Zusätzliche Informationen zum BPC Audit Logger befinden sich zudem in der BPC Dokumentation.
BPC Notifications
Um eine Notification an das BPC zu senden kann der PutBPCNotification-Prozessor verwendet werden.
Zur Konfiguration muss hierbei ebenfalls zunächst der BPC Controller-Service festgelegt werden, um eine Kommunikation mit dem BPC zu ermöglichen.
Der Prozessor kann dann entsprechend des Use-Cases konfiguriert werden. Hierbei gibt es folgende Konfigurations-Optionen:
-
Priority: Es lässt sich bestimmen ob die Notification im BPC still ist, oder aber als Toast (push-nachricht) oder als Pop-up Angezeigt wird.
-
Subject und Message: Hiermit lassen sich Titel und Inhalt der Notification bestimmen.
-
Recipients Type und Recipients: Hiermit lässt sich bestimmen, wer im BPC die Notification angezeigt bekommt.
-
Notification Type: Hiermit lässt sich der Typ bzw. der Schweregrad der Notification angeben.
Zur auswahl stehen z.B. Info, Warning oder Error.
ListenBPCResponder
Um eine Anfrage vom BPC erfolgreich abzuschließen, muss eine Antwort vom IGUASU zurückgesandt werden.
Ähnlich wie beim HandleHTTPResponse-Prozessor kann dabei ein HTTP Status Code
und ein Response Header
konfiguriert werden.
Sollten zuvor zwei PutBPCAuditLog-Prozessoren erstellt worden sein, kann über die ListenBPCResponder zusätzlich der Erfolg oder Misserfolg an das BPC kommuniziert werden.
Als Erfolg kann der HTTP Status 200
verwendet werden, während bei Misserfolg 400
gewählt wird.
Über den Header kann zudem eine kurze Beschreibung hinzugefügt werden.
Mit erfolgreicher Konfiguration ist das BPC-Tutorial abgeschlossen und ermöglicht es, Kundendaten im BPC über Forms oder den Prozessstarter einzugeben, sodass diese im Prozessmonitor dokumentiert werden. Der fertige Datenfluss könnte wie in der folgenden Abbildung dargestellt aussehen.
IGUASU Daten an BPC loggen mit dem BPCRecordSink-Service
Um große Datenmengen, die sich in einer Flachen Struktur (z.B. in JSON, CSV oder XML-format) im Content eines FlowFiles befinden an BPC zu senden kann es sich besser eignen den BPCRecordSink-Service zu nutzen anstatt des PutBPCProcessLog-Prozessors. Dafür kann man einen PutRecord-Prozessor konfigurieren, sodass der Content der FlowFiles als Records mit einem beliebigen Record Reader-Service (je nach Datenformat) ausgelesen wird, und die Records mit einer BPCRecordSink gesendet werden. Das BPCRecordSink verwendet dabei die Werte und das Schema der eingehenden Records, um automatisch die entsprechenden Requests für BPC vorzubereiten bzw. weiterzuleiten.
Während der PutBPCProcessLog-Prozessor in seinen Daten beliebige Child-Elemente schicken kann, schickt der BPCRecordSink-Service jeden Record nur als ein Parent-Element. |
Ein BPCRecordSink kann auch von einem QueryNiFiReportingTask verwendet werden. QueryNiFiReportingTasks liest Statusinformation von IGUASU durch SQL-Queries, die dann als Records an einen RecordSink weitergeleitet werden können. Dadurch können Statusinformationen direkt an BPC gesendet werden.
QueryNifiReportingTasks können unter "Reporting Tasks" im Management-Menü angelegt werden. |
Konfiguration des BPCRecordSink-Service
Der BPCRecordSink-Service wird wie der PutBPCProcessLog mit einem BPC Controller, um eine Verbindung mit dem BPC aufzubauen, sowie durch die Auswahl eines BPC Loggers konfiguriert.
Anders als beim PutBPCProcessLog Prozessor müssen die zu sendenden Daten nicht in die passende JSON-Struktur für den BPC Logging Service umgewandelt werden, sondern werden vom BPCRecordSink automatisch konvertiert. Dafür muss nur der Parent Key angegeben werden, der mit den Konfigurationen des BPC Logging Services übereinstimmen muss.
Zusätzlich gibt es die Möglichkeit, jedem geloggtem Record im BPC ein Datum und Zeitstempel zu geben. Dafür muss die SYSDATE field name-Property im BPCRecordSinkService mit einem entsprechendem Feldnamen konfiguriert werden, unter dem dann ein Zeitstempel mitgeschickt wird. Danach muss die Fields Configuration im BPC Log Service mit dem timestamp-Type für das Feld konfiguriert werden.