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>