Es ist möglich, bis zu vier zusätzlichen Spalten im Nachrichtenmonitor einzubinden.
Während der Nachrichtenverarbeitung werden bestimmte Werte ermitteln und in der Datenbank gespeichert. Bei der Suche der Nachrichten im Nachrichtenmonitor werden diese Daten geladen und in den zusätzlichen Spalten angezeigt. Denkbar ist zum Beispiel, den Prüfidentifikator aus der Edifact oder die Partner-Rolle anzuzeigen.
Einrichtung
Datenbanktabelle anlegen
Die Datenbanktabelle b2bbp_data_additional_columns
und den DB-Index erstellen (SQL-Skripte siehe Anhang)
Global Properties anlegen
Im Weiteren wird beschrieben, wie man die erste Spalte einrichtet. Die anderen Spalten können analog eingerichtet werden.
Für jede Spalte werden zwei Global Properties angelegt: B3P_MON_ADDITIONAL1_NAME
und B3P_MON_ADDITIONAL1_VALUE
.
In B3P_MON_ADDITIONAL1_NAME
wird die Spaltenüberschrift konfiguriert.
Die Global Property B3P_MON_ADDITIONAL1_VALUE
muss immer den Wert additional1
haben. Zum Beispiel:
B3P_MON_ADDITIONAL1_NAME = BGM Kategorie
B3P_MON_ADDITIONAL1_VALUE = additional1
Action einbinden
Die Werte aus der Edifact werden durch die Action org.b2bbp.runtime.actions.internal.AdditionalColumnsDataToDBAction
ermittelt und in die Datenbank geschrieben. Die Action soll dementsprechend in die Channels hinzugefügt werden.
In eingehenden Channels sollte die Action vor der Konvertierung stehen (vor NLCAction2), in ausgehenden Channels nach der Konvertierung. Damit kann die Action auf die Edifact zugreifen.
Extension konfigurieren
Die Action nimmt die Konfiguration aus der Extension DISPLAY_EDICONTENT_IN_ADDITIONAL_COLUMN
. Dort wird mit EdiPath-Ausdrucken festgelegt, in welchen Spalten welche Werte aus der Edifact angezeigt werden. Als Schlüssel sind somit additional1
bis additional4
erlaubt.
Beispiel:
additional1=LOC[1+0="172"]+2+0
additional2=BGM+1+0
Erweiterte Konfiguration
Mit der erweiterten Konfiguration können nicht nur EdiPath sondern beliebige dynamische Funktionen ausgewertet werden.
Um die Erweiterung zu aktivieren, muss an der Action AdditionalColumnsDataToDBAction
die Eigenschaft USE_EXTENDED_CONFIG_FORMAT
= true
hinzugefügt werden. Der MessageContext ist unbedingt zu überschreiben.
Die Konfiguration der Ausdrucke erfolgt in der Extension DISPLAY_EDICONTENT_IN_ADDITIONAL_COLUMN_EXTENDED
.
Format:
additional1=<Contextausdruck Bedingung>=<Contextausdruck Wert>
additional1=<Contextausdruck Bedingung>=<Contextausdruck Wert>
additional2=<Contextausdruck Bedingung>=<Contextausdruck Wert>
additional2=<Contextausdruck Bedingung>=<Contextausdruck Wert>
Für jede Nachricht wird folgendes durchgeführt: für jede Spalte (additional$) werden die entsprechenden Zeilen von oben nach unten betrachtet. Für jede Zeile wird der erste Contextausdruck ausgewertet. Ergibt dieser “true” wird der zweite Contextausdruck ausgewertet und in die DB geschrieben. Falls der erste Ausdruck nicht true ist, wird die nächste Zeile betrachtet.
Tipp: Um zu einem Schlüssel einen Fallback-Wert zu konfigurieren, der greift, wenn ansonsten keine Bedingung erfüllt ist, kann einfach als letzte Zeile des Schlüssels die Contextausdruck Bedingung = TRUE gesetzt werden, also
additional1=<Contextausdruck Bedingung>=<Contextausdruck Wert>
additional1=<Contextausdruck Bedingung>=<Contextausdruck Wert>
...
additional1=TRUE=<Contextausdruck Wert>
Partnernamen und -rollen anzeigen
Ein Beispiel der erweiterten Konfiguration ist das Anzeigen von Marktpartner- und Systemrollen sowie der Namen. Dafür muss die Extension DISPLAY_EDICONTENT_IN_ADDITIONAL_COLUMN_EXTENDED
beispielsweise so konfiguriert werden:
#Systemname
additional1=TRUE=${loadextensionproperty(SENDER_EMAIL,${template(NAME_&(this.FORMAT.systemCode))})}
#Partnername
additional2=TRUE=${loadextensionproperty(MPID_SYNC,${template(&(this.FORMAT.systemCode).&(this.FORMAT.partnerCode).NAME)})}
#Systemrolle
additional3=TRUE=${loadextensionproperty(SENDER_EMAIL,${template(ROLE_&(this.FORMAT.systemCode))})}
#Partnerrolle
additional4=TRUE=${loadextensionproperty(MPID_SYNC,${template(&(this.FORMAT.systemCode).&(this.FORMAT.partnerCode).SID)})}
Somit werden die Rollen und Namen aus den Extensions SENDER_EMAIL
und MPID_SYNC
geladen und in den zusätzlichen Spalten gespeichert. In den Global Properties werden die Überschriften konfiguriert:
B3P_MON_ADDITIONAL1_NAME = Systemname
B3P_MON_ADDITIONAL1_VALUE = additional1
B3P_MON_ADDITIONAL2_NAME = Partnername
B3P_MON_ADDITIONAL2_VALUE = additional2
B3P_MON_ADDITIONAL3_NAME = Systemrolle
B3P_MON_ADDITIONAL3_VALUE = additional3
B3P_MON_ADDITIONAL4_NAME = Partnerrolle
B3P_MON_ADDITIONAL4_VALUE = additional4
CONTRL- und APERAK-Referenznummern anzeigen
Es besteht die Möglichkeit, die Referenznummer der CONTRL- und / oder APERAK bei der Originalnachricht in einer zusätzlichen Spalte anzuzeigen.
Dafür müssen die Global Properties STORE_ADDITIONAL_CONTRLREF
und STORE_ADDITIONAL_APERAKREF
angelegt werden. Als Wert der Property ist die zusätzliche Spalte anzugeben, wo die Referenznummer angezeigt werden sollen, z. B.
STORE_ADDITIONAL_CONTRLREF=additional2
STORE_ADDITIONAL_APERAKREF=additional3
Die Speicherung der Referenznummern findet zusammen mit der Zuordnung der CONTRL bzw. APERAK zur Marktnachricht statt. Dies geschieht technisch in der ContrlActionStandard bzw. AperakActionStandard (für eine eingehende Marktnachricht, ausgehende Quittungsnachricht) oder ContrlConsumerAction, AperakConsumerAction (ausgehende Marktnachricht, eingehende Quittungsnachricht).
Besonderheiten
Einsatz bei Application Partitions
Die Tabelle b2bbp_data_additional_columns
muss beim Einsatz von SwitchPartition angepasst werden, da es sonst beim “Switch” zum Fehler kommt. Das heißt, wenn SwitchPartition eingerichtet ist, muss die Tabelle b2bbp_data_additional_columns
ohne Fremdschlüssel angelegt werden. Zum Bereinigen der Tabelle kann DeleteJobUseTemplate
benutzt werden.
Breite der Spalten festlegen
Falls keine Personalisierung benutzt wird, kann die Spaltenbreite in Pixel in der Global Property B3P_MON_ADDITIONAL1_WIDTH
angegeben werden.
GlobalProperties B3P_MON_ADDITIONAL$_KEY
Die GlobalProperties B3P_MON_ADDITIONAL1_KEY usw. wurden bei der Einführung der Neuen UI automatisch angelegt. Sie beinhalten keine relevanten Informationen und können gelöscht werden.
Konfiguration in einer Channel Distribution (NICHT EMPFOHLEN)
Statt der Action AdditionalColumnsDataToDBAction
können Werte auch über die Channel Distribution AdditionalColumnsDataToDBChannelDistribution
in den zusätzlichen Spalten gespeichert werden. Diese Möglichkeit funktioniert in den meisten Fällen nur für eingehende Nachrichten.
Die gleichzeitige Benutzung der Action und ChannelDistribution macht die Konfiguration unübersichtlich und unnötig kompliziert. Für die verlässliche Anzeige von Partnernamen und -rollen ist die Konfiguration kaum möglich.
Aus diesen Gründen empfehlen wird den Einsatz der Channel Distribution AdditionalColumnsDataToDBChannelDistribution
nicht. Sie könnte in der Zukunft aus dem Code komplett entfernt werden.
Die ChannelDistribution heißt mit vollem Namen org.b2bbp.channels.extension.AdditionalColumnsDataToDBChannelDistribution
Um die “erweiterte Konfiguration” (siehe oben) einzuschalten, muss in der Extension EXT_CHANNEL_DIST
diese Zeile hinzugefügt werden: org.b2bbp.channels.extension.AdditionalColumnsDataToDBChannelDistribution.params=USE_EXTENDED_CONFIG_FORMAT=true
Das Laden der Werte aus einer Extension (nicht mehr unterstützt ab Release 2021-03)
Das Laden aus der Extension wird von der neuen UI nicht mehr unterstützt.
Auf diese Weise kann z.B. der Name des Partners geladen werden. Der Name ist normalerweise in der Extension MPID_SYNC
unter dem Schlüssel 9910493000000.9910493000007.NAME=MDL Stadtwerke Treuchtlingen
zu finden.
In der Global Property B3P_ADDITIONAL_COLUMNS_EXTENSION
sind die Extensions einzutragen, die verwendet werden sollen. Kommasepariert können mehrere Extensions angegeben werden.
Beispiel: B3P_ADDITIONAL_COLUMNS_EXTENSION = MPID_SYNC,SENDER_EMAIL
Der Schlüssel, nach dem in der Extension gesucht wird, wird in der Global Property B3P_MON_ADDITIONAL1_VALUE
konfiguriert (bzw. B3P_MON_ADDITIONAL2_VALUE
usw.) Dabei können über Platzhalter andere Spalten der Nachricht benutzt werden. Z.B. mit $(sender)$.$(partner)$.NAME
wird der oben beschriebene Schlüssel 9910493000000.9910493000007.NAME
zusammen gesetzt.
Mögliche Platzhalter:
- $(sender)$ : Spalte System (in der Datenbank heißt diese Spalte sender)
- $(partner)$ : Spalte Partner
- $(state)$ : Spalte VS (Verarbeitungsstatus)
- $(acknowledgement)$ : Spalte BS (Bestätigungsstatus)
- $(clearingCode)$ : Spalte CS (Clearingstatus
- $(direction)$ : Spalte Richtung
- $(correlationId)$ : Spalte Ref.-Nr.
- $(channelId)$ : Spalte Channel
- $(formatIn)$ : Spalte Eingangsformat
- $(formatOut)$ : Spalte Ausgangsformat
- $(vdewType)$ : Spalte VDEW-Typ
- $(vdewVersion)$ : Spalte VDEW-Version
- $(alternativeId)$ : Spalte Alternativ-Id
Beispiel: B3P_MON_ADDITIONAL1_VALUE = $(sender)$.$(partner)$.NAME
Sonderkonfiguration, um nur einen Teil der Schlüssel-Spalten zu nutzen.
Wenn z.B. in der Spalte Partner nicht nur die MPID, sondern andere Werte stehen, kann der Wert der Spalte nicht direkt als Schlüssel genutzt werden. Beispiel: „9910493000007 | Z01“. Hier brauchen wir nur den ersten Teil vor dem Trennzeichen „|“, um daraus den Schlüssel 9910493000000.9910493000007.NAME
zu bauen. Der zu verwendete Teil kann im Platzhalter definiert werden, in unserem Fall $(partner,0)$
(die Zählung beginnt mit 0)
Das Trennzeichen muss in der Global Property B3P_ADDITIONAL_COLUMNS_SPLITTER
konfiguriert werden.
Beispiel:
Voraussetzungen:
- In der System-Spalte steht „CONTRL | 9910493000000“, in der Partner-Spalte steht „9910493000007 | Z01“
- Extension
SENDER_EMAIL
hat den EintragNAME_9910493000000 = RheinEnergie NETZ
Um den System-Namen aus der Extension SENDER_EMAIL
zu laden, muss die Global Property B3P_MON_ADDITIONAL1_VALUE = NAME_$(system,1)$
konfiguriert werden.
Um den Partnernamen aus der Extension MPID_SYNC
zu laden, muss die Global Property B3P_MON_ADDITIONAL1_VALUE = $(system,1)$.$(partner,0)$.NAME
konfiguriert werden.
In der Global Property B3P_ADDITIONAL_COLUMNS_SPLITTER
muss „|“ eingetragen werden.
Sonderkonfiguration, um nur einen Teil des Wertes anzuzeigen.
Der Wert in der Extension könnte aus mehreren Teilen bestehen, von denen nur ein in der zusätzlichen Spalte angezeigt werden soll. Z.B. in der Extension SENDER_ADDRESSES
steht der Eintrag „9910493000007=DE_50082_Köln_Poststr. 33
“. Nur die Postleitzahl muss aber angezeigt werden.
Welcher Teil angezeigt werden soll, kann in der Global Property B3P_MON_ADDITIONAL1_VALUE_SPLITTER
konfiguriert werden. Dabei wird das Trennzeichen und die Position angegeben. Format: <Trennzeichen>,<Position>
. Die Zählung der Position beginnt mit 0.
Beispiel für die Postleitzahl: B3P_MON_ADDITIONAL1_VALUE_SPLITTER = _,1
Anhang
SQL Skripte für Additional Columns
Postgres:
CREATE TABLE B2BBP_DATA_ADDITIONAL_COLUMNS
(
messageId VARCHAR(100) NOT NULL,
dataKey VARCHAR(50) NOT NULL,
dataValue VARCHAR(200),
PRIMARY KEY (messageId, dataKey)
);
CREATE INDEX IDX_ADDITIONAL_COLUMNS_MSGID ON B2BBP_DATA_ADDITIONAL_COLUMNS (messageId ASC);
Oracle:
--Additional columns in message monitor
CREATE TABLE B2BBP_DATA_ADDITIONAL_COLUMNS
(
messageId VARCHAR2(100) NOT NULL,
dataKey VARCHAR2(50) NOT NULL,
dataValue VARCHAR2(200),
PRIMARY KEY (messageId, dataKey)
);
CREATE INDEX IDX_ADDITIONAL_COLUMNS_MSGID ON B2BBP_DATA_ADDITIONAL_COLUMNS (messageId ASC);
MSSQL:
CREATE TABLE B2BBP_DATA_ADDITIONAL_COLUMNS
(
messageId varchar(100) NOT NULL,
dataKey varchar(50) NOT NULL,
dataValue varchar(200),
PRIMARY KEY (messageId, dataKey)
);
CREATE INDEX IDX_ADDITIONAL_COLUMNS_MSGID ON B2BBP_DATA_ADDITIONAL_COLUMNS (messageId ASC);
Die Datenbank-View b2bbp_data_message_view
setzt diese Tabellen voraus.