Konfiguration für die zusätzlichen Spalten im Nachrichtenmonitor

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.

zusätzliche Spalten

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

zusätzliche Spalten

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

zusätzliche Spalten

zusätzliche Spalten

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 AdditionalColumnsDataToDBAction nicht. Sie könnte in der Zukunft aus dem Code komplett entfernt werden.

Die ChannelDistribution heißt 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 Eintrag NAME_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),
      FOREIGN KEY (messageId) REFERENCES B2BBP_DATA_MESSAGE (messageId)
          ON DELETE CASCADE
  );
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),
      FOREIGN KEY (messageId) REFERENCES B2BBP_DATA_MESSAGE (messageId)
          ON DELETE CASCADE
  );
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),
      CONSTRAINT messageId_fk FOREIGN KEY (messageId) REFERENCES B2BBP_DATA_MESSAGE (messageId)
          on delete cascade
  );
CREATE INDEX IDX_ADDITIONAL_COLUMNS_MSGID ON B2BBP_DATA_ADDITIONAL_COLUMNS (messageId ASC);

Die Datenbank-View b2bbp_data_message_view setzt diese Tabellen voraus.

View Me   Edit Me