ArchiveJob Nscale Pipeliner

Überblick

Der Adapter ArchiveNscale basiert auf einer Webservice-Schnittstelle. Die Daten werden also direkt zum Archiv übertragen. Nach der Archivierung kriegt der Adapter sofort eine Rückmeldung, ob die Archivierung geklappt hat, oder nicht.

Daneben gibt es die Schnittstelle “Nscale Pipeliner”. Über sie kann Nscale die zu archivierenden Daten aus Dateien auslesen. Das soll die Archivierung von größeren Mengen an B2B-Nachrichten ermöglichen (über 100.000 pro Tag).

Ablauf der Archivierung

Die Archivierung erfolgt in mehreren Schritten:

  1. Der ArchiveJob erstellt Dateien, die vom Pipeliner bearbeitet werden können. Pro archiviertes Attribut wird eine Datei mit dem Inhalt des Attributs und eine Datei mit den Metadaten erstellt (Pxml). Der Verarbeitungsstatus der Nachricht wird in der B2B auf “Archivierungsbestätigung ausstehend” (ARP) gesetzt. Außerdem werden in den Tabellen B2BBP_ASYNC_ARCH_CORR_MSG und B2BBP_ASYNC_ARCH_CORR_ATTR Einträge gemacht.

  2. Der Pipeliner holt die Dateien ab, archiviert sie und verschiebt sie in den Ordner “erfolgreich” oder “fehlerhaft” (Alle Ordnernamen werden konfiguriert, hier sind sie nur beispielhaft).

  3. Ein weiterer Job, FeedbackProcessorJob, liest regelmäßig diese Dateien und setzt den Status der entsprechenden B2B-Nachrichten auf ARC (archiviert) oder ARF (Archivierung fehlerhaft). Dafür nutzt er die oben genannte Datenbanktabellen. Die Dateien im Ordner “fehlerhaft” werden in den Ordner “fehlerhaft - zu prüfen” verschoben, damit man sie später manuell überprüfen könnte.

Einrichtung auf der B2B-Seite

Datenbank-Tabellen

Es müssen die Tabellen B2BBP_ASYNC_ARCH_CORR_MSG und B2BBP_ASYNC_ARCH_CORR_ATTR, sowie der Index IDX_ASYNC_CORR_ARCHIVEID angelegt werden. Die SQL-Skripte dafür können beim Support angefragt werden.

Verzeichnisse

Die Verzeichnisse müssen von B2B und vom Nscale Pipeliner erreichbar sein. Ggf. muss dafür ein verteilter Ordner eingerichtet werden. B2B und der Pipeliner müssen Lese- und Schreibrechte auf diese Verzeichnisse besitzen.

Folgende Verzeichnisse müssen vorhanden sein, die genauen Pfade und Namen werden konfiguriert, siehe nächstes Kapitel.

  • “to_pipeliner”
  • “from_pipeliner_ok”
  • “from_pipeliner_error”
  • “from_pipeliner_error_to_check”

Für jeden Mandanten können eigene Verzeichnisse konfiguriert werden.

Extension B3P_NSCALE_CONFIG

Der allgemeine Aufbau der Extension B3P_NSCALE_CONFIG ist hier beschrieben. Die Anmeldetaten werden für das Abrufen der archivierten Nachrichten aus Nscale benötigt.

Hier ist ein minimales Beispiel der Extension ohne Mandantentrennung:

systems=ALL
default=ALL

ALL.user=b2btest
ALL.password=<base64 pass>
ALL.instance=nscalealinst1
ALL.host=<ip>
ALL.port=8090
ALL.clientID=8664294161252487602
ALL.docArea=B2B
ALL.pipeliner.folder.out=../tomcat_all/files/to_pipeliner
ALL.pipeliner.folder.in.ok=../tomcat_all/files/from_pipeliner_ok
ALL.pipeliner.folder.in.error=../tomcat_all/files/from_pipeliner_error
ALL.pipeliner.folder.in.error.to_check=../tomcat_all/files/from_pipeliner_error_to_check
ALL.pipeliner.nscale.folder.id.B2B_201801_201812=LIEF_B2B$NOTSET$7864$1$NOTSET
ALL.pipeliner.nscale.folder.id.B2B_201901_201912=LIEF_B2B$NOTSET$114431$1$NOTSET

Hier ist ein Beispiel mit zwei Mandanten und einem Default-Bereich für ILNs, die keinem Mandanten zugeordnet wurden:

#Registrierte Mandanten
systems=Lieferant;Netz;Default

#Zuordnung ILN zu Mandant
9900000000007=Lieferant
9900000000006=Netz

default=Default

# Mandant Lieferant
Lieferant.user=b2btest
Lieferant.password=<base64 pass>
Lieferant.instance=nscalealinst1
Lieferant.host=<ip>
Lieferant.port=8090
Lieferant.clientID=8664294161252487602
Lieferant.docArea=LIEF_B2B
Lieferant.pipeliner.folder.out=/pipeliner/lief/out
Lieferant.pipeliner.folder.in.ok=/pipeliner/lief/in/ok
Lieferant.pipeliner.folder.in.error=/pipeliner/lief/in/error
Lieferant.pipeliner.folder.in.error.to_check=/pipeliner/lief/in/error_to_check
Lieferant.pipeliner.nscale.folder.id.B2B_201801_201812=LIEF_B2B$NOTSET$5554864$1$NOTSET

# Mandant Netz
Netz.user=b2btest
Netz.password=<base64 pass>
Netz.instance=nscalealinst1
Netz.host=<ip>
Netz.port=8090
Netz.clientID=8664294161252487602
Netz.docArea=NETZ_B2B
Netz.pipeliner.folder.out=/pipeliner/netz/out
Netz.pipeliner.folder.in.ok=/pipeliner/netz/in/ok
Netz.pipeliner.folder.in.error=/pipeliner/netz/in/error
Netz.pipeliner.folder.in.error.to_check=/pipeliner/netz/in/error_to_check
Netz.pipeliner.nscale.folder.id.B2B_201801_201812=LIEF_B2B$NOTSET$505$1$NOTSET

# Nicht zugeordnete Systeme
Default.user=b2btest
Default.password=<base64 pass>
Default.instance=nscalealinst1
Default.host=<ip>
Default.port=8090
Default.clientID=8664294161252487602
Default.docArea=DEF_B2B
Default.pipeliner.folder.out=/pipeliner/default/out
Default.pipeliner.folder.in.ok=/pipeliner/default/in/ok
Default.pipeliner.folder.in.error=/pipeliner/default/in/error
Default.pipeliner.folder.in.error.to_check=/pipeliner/default/in/error_to_check

Werden in den Pfaden Backslash-Zeichen \ benutzt, müssen sie verdoppelt werden: \\

Konfiguration der Nscale-Folder-Id

Dokumente in Nscale werden in Verzeichnissen abgelegt. Jedes Jahr wird ein Verzeichnis mit dem gleichen Aufbau des Names angelegt, etwa “B2B_201801_201812”. Um das richtige Verzeichnis zu finden oder zu erstellen, wird in der Pxml eine Suchanfrage übergeben. Um die Archivierung auf der Nscale-Seite zu beschleunigen, kann in Pxml aber auch direkt die Id des Verzeichnisses angegeben werden. Die Id muss dafür in Nscale nachgeschlagen und in der B2B konfiguriert werden. Dafür wird in der B3P_NSCALE_CONFIG-Extension folgender Eintrag erstellt:

<system>.pipeliner.nscale.folder.id.<folder_name>=<folder_id>, z.B. Lieferant.pipeliner.nscale.folder.id.B2B_201801_201812=LIEF_B2B$NOTSET$113016$1$NOTSET

Für jedes Jahr und jedes System sollte ein neuer Eintrag angelegt werden. Im neuen Jahr wird der Eintrag für das letzte Jahr nicht mehr benötigt, er kann aus der Konfiguration gelöscht werden. Falls kein passender Eintrag gefunden wurde, wird die Pxml mit der (langsameren) Verzeichnis-Suchanfrage statt der Id erstellt.

ArchiveJob

Allgemeine Eigenschaften sind in der Dokumentation des ArchiveJobs beschrieben.

Der Nscale-Pipeliner-Adapter wird in der Eigenschaft B3P_ARCHIVE_TYPE festgelegt:

B3P_ARCHIVE_TYPE com.nextlevel.b2bbp.nscale.pipeliner.ArchiveNscalePipeliner

Sollte der Pipeliner ausfallen, werden die Dateien nicht mehr abgeholt, die Verzeichnisse werden unkontrolliert wachsen. Um das zu verhindern, prüft der ArchiveJob vor jeder Archivierung, dass die Anzahl der Dateien in allen Verzeichnissen eines Mandants eine bestimmte Zahl nicht überschreitet. Standardmäßig sind es 500.000 Dateien. Sollten mehr unverarbeitete Dateien vorhanden sein, bricht der Job mit einer Fehlermeldung ab.

Diese Schwelle kann über die Service Property MAX_FILES_IN_FOLDERS angepasst werden. Mit dem Wert “-1” wird die Prüfung abgeschaltet.

Bei Wunsch kann eine besondere Ausprägung des Jobs benutzt werden, die den Backup des Archivindexes macht, dazu muss als B3P_ARCHIVE_TYPE der Wert com.nextlevel.b2bbp.nscale.pipeliner.ArchiveNscalePipelinerDbBackup eingetragen werden. Für Details siehe die Dokumentation von DB-Backup

Global Properties für das Monitoring

Damit die archivierten Daten angezeigt werden können, müssen die gleichen Global Properties angelegt werden, wie für den Adapter ArchiveNscale:

B3P_ARCHIVE_MESSAGE_MONITOR_IMPL com.nextlevel.b2bbp.nscale.api.EmailArchiveMonitorNSCALE
B3P_ARCHIVE_AS2_MESSAGE_MONITOR_IMPL com.nextlevel.b2bbp.nscale.api.AS2ArchiveMonitorNSCALE
B3P_ARCHIVE_MONITOR_IMPL com.nextlevel.b2bbp.nscale.api.ArchiveMessageMonitorNSCALE

FeedbackProcessorJob

Der FeedbackProcessorJob wird wie ein Scheduler eingerichtet: Einrichtung von Scheduler Services

Darüber hinaus müssen folgende Eigenschaften angelegt werden:

Name Wert Beschreibung
B3P_SCHEDULER_REGISTER_CLASSNAME com.nextlevel.b2bbp.nscale.pipeliner.FeedbackProcessorJob Adapter-Implementierung
MANDANTS_TO_PROCESS z.B. Lieferant;Netz Ein oder mehrere Mandanten aus der Extension B3P_NSCALE_CONFIG

Einrichtung auf der Nscale-Seite

Der Nscale-Pipeliner muss so eingerichtet werden, dass folgender Ablauf gewährleistet ist:

  • Der Pipeliner holt die PXML-Dateien (*.xml) und die dort verlinkten Seitendatei(en) (*.txt) aus einem Eingangsordner (z.B. to_pipeliner) ab und archiviert sie.
  • Bei erfolgreicher Archivierung wird die PXML-Datei in den Sicherungsordner (z.B. from_pipeliner_ok) kopiert. Die Seitendateien sollen nicht kopiert zu werden.
  • Bei Fehler werden die PXML-Datei und die Seitendateien in den Fehlerordner (z.B. from_pipeliner_error) kopiert.
  • In beiden Fällen werden die PXML- und die Seitendateien über die Endverarbeitung aus dem Eingangsordner to_pipeliner gelöscht.

Wenn in Nscale mehrere Mandanten getrennt angelegt sind, müssen für jeden Mandanten dementsprechend eigene Eingangs- und Ausgangsordner konfiguriert werden.

View Me   Edit Me