B2B Outbox
Das B2B Outbox Feature ermöglicht es, Dateien aus dem B2B-Channel-Workflow heraus per Message-Broker (AMQP) zu verschicken.
Das Feature besteht dabei aus zwei Komponenten, die zusammen konfiguriert werden müssen: der OutboxAction (Action eines B2B-Channels) und dem Outbox-Relay (Komponente innerhalb des B2B-Message-Service). Die Action wird im B2B-Channel ausgeführt, das Relay verschickt die Nachricht an den Message-Broker. Beide Komponenten kommunizieren über eine SQL-Tabelle miteinander.

Tip für den Support: Outbox Architektur
B2B-Monolith: Outbox Action
Vorbedingung: Die Datenbanktabelle B2BBP_OUTBOX wurde angelegt (für den Support: Postgres)
Action class: org.b2bbp.runtime.actions.internal.OutboxAction
Mit dieser B2B-Action soll bei der Verarbeitung einer Nachricht mit Dokumentanhang ein Eintrag in der Tabelle B2BBP_OUTBOX für die Outbox-Relay-Komponente erstellt werden.
Die Aktion kann über die Admin-UI an einen B2B-Channel gebunden werden. Das Folgende ist die Aktionskonfiguration:

Action Eigenschaften
| Action Property | Beispiel-Konfiguration | Default | Beschreibung |
|---|---|---|---|
| PAYLOAD_ATTRIBUTE | ${template(EXCHANGE_AS4_OUTBOUND_PAYLOAD)} | EXCHANGE_AS4_OUTBOUND_PAYLOAD | Key des Attributes, welches per Message-Broker verschickt werden soll. |
| HEADERS | ${template()}{"direction": "outbound", "routingKey": "https://www.bdew.de/as4/communication/services/FP", "tenant": "${template(&(this.FORMAT.senderCode))}"} | Optional kann dieser Header dem Message-Broker mitgegeben werden. | |
| B2B_OUTBOX_PRIORITY | 5 | 0 | Priorität der Nachricht. Eine Nachricht mit höherer Priorität kann andere Nachrichten überholen. B2B_OUTBOX_PRIORITY kann ein beliebiger konstanter Wert zwischen 1 und 10 sein. |
| DELETE_PAYLOAD_AFTER_PROCESSING | ${template(false)} | false | Soll das Payload-Attribut nach dem Versand gelöscht werden? |
| MESSAGE_STATE_ON_SUCCESS | A4P | leer bzw. SUC | Setzt den Nachrichten-Status am Ende einer erfolgreichen Verarbeitung in der B2B auf diesen Wert. |
| USE_BASE64_ENCODED_PAYLOAD | ${template(true)} | false | Encoded den angegebenen Payload Baes64. |
Beachten Sie, dass die meisten Attribute zwingend über dynamische Ausdrücke konfiguriert werden müssen, selbst wenn es sich um konstante Werte handelt. Ansonsten wird die Eigenschaft unter Umständen nicht persistiert, was eine weitere Outbox-Verarbeitung unmöglich macht.
Standard-Konfiguration für ausgehende API-Requests
| Action Property | Konfiguration |
|---|---|
| PAYLOAD_ATTRIBUTE | ${template(JSON_STRING)} |
| JSON_STRING | {"b2bMessageId":"${template(&(this.B3P_OBJ_MESSAGE.messageId))}","isResend":${if(${equals(${var(MESSAGE_IS_RESTARTED)},true)},true,false)},${stringsplit(${var(CURRENT_PAYLOAD)},^\s*\{,1)} |
| HEADERS | ${template()}{"direction": "outbound", "routingKey": "Api-Request-Information", "tenant": "${template(&(this.FORMAT.senderCode))}"} |
| B2B_OUTBOX_PRIORITY | 5 |
| DELETE_PAYLOAD_AFTER_PROCESSING | ${template(false)} |
| MESSAGE_STATE_ON_SUCCESS | A4P |
Empfohlene Konfiguration für Testsysteme
In der AS4- und API-Kommunikation nehmen zahlreiche Systeme, darunter auch unsere eigenen, an der SM-Test-PKI teil. Dies ermöglicht eine marktpartnerübergreifende Testkommunikation. Für eine gezielte Steuerung der Testkommunikation können Sie den Conditional Execute nutzen. Bitte beachten Sie, dass diese Konfiguration ausschließlich die Kommunikation mit den hinterlegten Partnern gestattet. Verwenden Sie diese Einstellungen ausschließlich in Testsystemen und nur, sofern dies ausdrücklich gewünscht ist.
Folgende Konfiguration ist exemplarisch für die API Konfiguration. Diese kann auch für die AS4 verwendet werden und ist abhängig davon, ob Sie die AS4_RELATIONS verwenden. Wenn dies der Fall ist, erfolgt die Steuerung für AS4 darüber.
Ergänzen Sie die Konfiguration der Outbox-Aktion um die folgenden Eigenschaften:
| Aktionseigenschaft | Wert | Kontext überschreiben | Optionen |
|---|---|---|---|
| ACTION_DECORATORS | ConditionalExecute | nein | |
| EXECUTE_ACTION | ${loadExtensionProperty(ALLOWED_API_COMMUNICATION,${template(API_&(this.FORMAT.senderCode)_&(this.FORMAT.partnerCode))},false)} | Ja | technisch |
Legen Sie dann die Extension ALLOWED_API_COMMUNICATION an. Tragen Sie hier Ihre von Ihnen erlaubte Konfiguraton ein.
# Erlaubt Kommunikation für die API Testkommunikation
# Sytntax API_AbsenderMpId_EmpfängerMpId=true
API_990Absender00_990Empfänger01=true