externe Edifact Validierung

Edifact Validierung per RestCall

Die B2B bietet an, Edifact Nachrichten an eine RestSchnittstelle zu senden, welche eine asynchrone Validierung der Nachricht beginnt. Die B2B kann dann die normale Verarbeitung fortsetzen und an einem vorbestimmten Zeitpunkt unterbrechen, wenn das Validierungsergebnis noch nicht vorliegt und startet die Nachrichtenverarbeitung neu, sobald das Validierungsergebnis vorliegt.

Ablauf

Ein funktionierender Ablauf besteht aus mehreren Schritten, dem Senden an den Validierungsserver, dem Warten auf das Ergebnis und dem Holen des Validierungsergebnis.

Senden an den Validierungsserver

Um eine Edifact an den Validierungsserver zu senden ist der Ausgangsservice com.nextlevel.b2b.modules.rest.validation.StartValidationService zu verwenden. Dieser schickt, passend verpackt, die Nachricht an den externen Validierungsserver. Der Service muss an einer Action definiert werden, die dann sinnvollerweise früh im Channel passiert.

Property Vorbelegung Funktion
REST_URL - Die Adresse des Validierungsserver

Validierungsergebnis holen oder Nachrichten stoppen

Um sicher zu stellen, dass für eine Nachricht das Validierungsergebnis vorliegt muss diese eventuell gestoppt werden. Dafür ist die com.nextlevel.b2b.modules.rest.validation.BufferMessageMissingValidationAction zu verwenden. Diese Action sollte im Channel eingesetzt werden, bevor das Validierungsergebnis benötigt wird. Sämtliche Nachrichten, für die noch kein Validierungsergebnis vorliegt, werden durch diese Action angehalten und auf den Status RVP - Rest Validation Pending gesetzt. Ansonsten wird das Validierungsergebnis persistiert und die Verarbeitung forgesetzt.

Nachricht neu starten wenn Validierungsergebnis vorliegt

Zuletzt benötigt es noch den com.nextlevel.b2b.modules.rest.validation.StartValidationService. Dieser verwaltet alle Nachrichten, welche auf dem Status RVP stehen. Er überprüft, wenn laut der letzten Angabe des Validierungsservers eine Nachricht fertig validiert wurde, ob das tatsächlich der Fall ist und startet sie im Falle einer positiven Rückmelung neu. Ansonsten merkt er sie vor, wann für diese Nachricht erneut geprüft werden soll.

Property Vorbelegung Funktion
REST_URL - Die Adresse des Validierungsserver
B3P_CHECK_DAYS_FROM 1 innerhalb welches Zeitraum soll nach wartenden nachrichten gesucht werden, in Tagen
B3P_SERVICE_SCHEDULING_DELAY 30 alle wie viele Sekunden soll nach Nachrichten auf RVP gesucht werden

Allgemein zu Beachtendes

Es wird empfohlen, die Eigenschaft REST_URL per dynmaischem Ausdruck zu pflegen, damit nicht an mehreren Stellen die selbe Information hinterlegt werden muss. Eine mögliche Konfiguration sähe so aus:

Property Wert
REST_URL ${elp(REST_VALIDATION_CONFIG,REST_SERVER)}

Und eben einer Extension REST_VALIDATION_CONFIG deren Inhalt wie folgt aus sieht:

REST_SERVER=<url-des-Rest-Servers>
View Me   Edit Me