AS4 B2B Customizing asynchron

Allgemeine Konfiguration

Customizing Export

Dieser Customizing Export beinhaltet die B2B-Konfiguration für AS4, die hier beschrieben ist und kann als Import genutzt werden. Dabei sollte aber darauf geachtet werden, dass die Action IDs und Channelnamen noch nicht vergeben sind oder diese zusammengeführt werden dürfen.

Global Properties

AS4_PROTOCOL

Die Global Property AS4_PROTOCOL = true setzt das Protokoll einer AS4-Nachricht auf AS4 im Nachrichtenmonitor.

Inbound

Eingehende AS4-Kommunikation

Für die eingehende AS4-Kommunikation gibt es keinen Eingangsservice im ursprünglichen Sinne. Der B2B-Message-Service, ein eigener Microservice, schreibt einen Queue-Eintrag und die Informationen, die die B2B (der Monolith) benötigt, um diesen zu verarbeiten, in die B2B-Datenbank. Anschließend verarbeitet der normale Queue-Service den Eintrag/die Nachricht. Als Default-Eingangschannel ist der Channel AS4_ERROR hinterlegt. Ist ein anderer Eingangschannel gewünscht, so ist dieser nicht wie üblich in der B2B zu konfigurieren, sondern kann in der application.properties des Microservices B2B-Message-Service angegeben werden. Dadurch, dass der Queue-Service die Nachricht verarbeitet, findet die restliche Bearbeitung in der B2B wie üblich statt. So kann beispielsweise über die Channel Distribution das Routing geregelt werden.

Damit der Queue-Service die Nachricht aus der Queue verarbeiten kann muss lediglich eine Art “dummy”-Service angelegt werden.

AS4_ERROR Channel

Falls Sie den B2B-Duplikatscheck einsetzen, ist an folgender Global Property der AS4_ERROR Channel zu ergänzen:

B3P_EXCLUDED_CHANNELS_FOR_DUPLICATE_MESSAGE

Services

B2B Message Service

Wichtig ist, dass der Service genau die angegebene ID hat. Eigenschaften besitzt der Service nicht.

Key Value
ID B2B_Message_Service
Aktiv false
Name B2B Message Service (extern)
Typ  
Klasse  
Channel  
Richtung inbound
Urheber  
Datum  

Komprimierung

Edifact Nachrichten werden unkomprimiert an das AS4-System übergeben. Umgekehrt werden sie vom AS4-System unkomprimiert an das B2B-System übergeben. Entsprechend wird auf Seiten der B2B auf Komprimierung/Dekomprimierung verzichtet. Das hier aufgeführte Customizing beinhaltet somit keinerlei Komprimierung/Dekomprimierung.

Outbound

Um Nachrichte mit Hilfe der AS4-Services an den Marktpartner zu vershcicken, muss zum einen der RestClientService angesprochen werden und zum anderen neue Actions dem ausgehenden Channel hinzugefügt werden. Der RestClientService kann entweder über eine neue SetPropertyAction angesprochen werden oder über eine bestehende OutboundMailHandler-Action

Actions

Speichern einer AS4-ID und des Payloads

Konfiguration der SetPropertyAction, um den CURRENT_PAYLOAD als Payload im Falle einer AS4-Nachricht zu speichern. Außerdem wird eine fiktive AS4-ID als Platzhalter angelegt, wenn es sich um eine AS4-Nachricht handelt, um das Protokoll richtig darzustellen. Diese muss im Channel vor der Action, die den RestClientService aufruft, hinzugefügt werden.

Name Typ Klasse Beschreibung Urheber
Save Payload java org.b2bbp.runtime.actions.internal.SetPropertyAction Speichert den Current Payload b2bbp.org

Action Properties

Eigenschaft Typ Wert Name Import/Export Kontext überschreiben Optionen
AS4_ID   ${if(${equals(${loadExtensionProperty(AS4_RELATIONS,${template(&(this.FORMAT.senderCode).&(this.FORMAT.partnerCode).AS4)},false)}, true)},not yet available, )}     NEIN Technisch
PAYLOAD   ${if(${equals(${loadExtensionProperty(AS4_RELATIONS,${template(&(this.FORMAT.senderCode).&(this.FORMAT.partnerCode).AS4)},false)}, true)},${var(CURRENT_PAYLOAD)}, )}     NEIN Fachlich

Nachricht versenden (AS4 wenn aktiv, sonst Mail oder AS2)

Der RestClientService kann entweder über eine neue SetPropertyAction aufgerufen werden, indem der Eigenschaft B3P_USED_SERVICE_ID die Service-Id zugewiesen wird oder es kann der bestehende OutboundMailHandler angepasst werden, welcher die Nachricht bei aktiver AS4-Kommunikation per AS4 sendet, sonst per Mail oder AS2.

Name Typ Klasse Beschreibung Urheber
Nachricht versenden (AS4. Mail oder AS2) java org.b2bbp.runtime.actions.internal.OutboundMailHandler Sammelt Informationen für den Mail- und AS2-Versand, wenn AS4 für diese Kommunikation nicht aktiv ist b2bbp.org

Action Properties

Eigenschaft Typ Wert Name Import/Export Kontext überschreiben Option
B3P_AS2_SUBJECT   ${template(&(this.FORMAT.type)&(this.FORMAT.attributes.UtilRef)&(this.FORMAT.senderCode)_&(this.FORMAT.partnerCode)20)}${edipath(UNB[1]+4+0)}${template(&(this.FORMAT.referenceId))}     JA Technisch
B3P_ATTACHMENT_NAME   ${template(&(this.FORMAT.type)&(this.FORMAT.attributes.UtilRef)&(this.FORMAT.senderCode)_&(this.FORMAT.partnerCode)20)}${edipath(UNB[1]+4+0)}${template(&(this.FORMAT.referenceId))}.txt AS4-Id   JA Technisch
B3P_COMPRESS_ATTACHMENT_BYTE_SIZE   1000000     NEIN  
B3P_MAIL_BODY_CONTENT   ${loadExtension(mail_text_outbound)}     JA Technisch
B3P_MAIL_FROM   ${loadExtensionProperty(SENDER_EMAIL,${template(FROM_&(this.FORMAT.senderCode))},true)}     JA Technisch
B3P_MAIL_SUBJECT   ${template(&(this.FORMAT.type)&(this.FORMAT.attributes.UtilRef)&(this.FORMAT.senderCode)_&(this.FORMAT.partnerCode)20)}${edipath(UNB[1]+4+0)}${template(&(this.FORMAT.referenceId))}     JA Technisch
B3P_MAIL_TO   ${getmpidmail(${template(&(this.FORMAT.senderCode))},${template(&(this.FORMAT.partnerCode))})}     JA Technisch
B3P_SEND_ATTACHMENT_GZ   true     NEIN  
B3P_SET_CONTRL_STATE   true *siehe unten     JA  
B3P_USED_SERVICE_ID   ${if(${equals(${loadExtensionProperty(AS4_RELATIONS,${template(&(this.FORMAT.senderCode).&(this.FORMAT.partnerCode).AS4)},false)}, true)},AS4_OUT,${elp(SENDER_EMAIL,${template(OUTBOUNDSERVICE_&(this.FORMAT.partnerCode))},true)})}     JA Technisch

Wenn BS CTW setzen durch B2B-Message-Service aktiv ist, darf die Property B3P_SET_CONTRL_STATE für AS4-Nachrichten nicht auf true gesetzt werden. Stattdessen kann dieser Dynamische Ausdruck verwendet werden, um für andere Nachrichten weiterhin das gleiche Ergebnis zu bekommen, aber für AS4-Nachrichten false:

${not(${equals(${loadExtensionProperty(AS4_RELATIONS,${template(&(this.FORMAT.senderCode).&(this.FORMAT.partnerCode).AS4)},false)})})}

In der Extension AS4_RELATIONS wird gespeichert, ob zwischen dem Mandanten und dem Marktpartner per AS4 kommuniziert wird. Bei B3P_MAIL_TO ist zu beachten, dass die Beziehung zwischen Mandant und Marktpartner im MPID-Editor auch für die Mail-Kommunikation hinterlegt ist. Ist dies nicht der Fall, so kann dieser dynamische Ausdruck verwendet werden: ${if(${equals(${loadExtensionProperty(AS4_RELATIONS,${template(&( this.FORMAT.senderCode).&(this.FORMAT.partnerCode).AS4)},false)}, true)},, ${getmpidmail(${template(&(this.FORMAT.senderCode))},$ {template(&(this.FORMAT.partnerCode))})})}

Services

RestClientService: Übergabe einer Edifact mit Hilfe des B2B-Message-Service

Um eine Edifact-Nachricht (current payload) an den B2B-Message-Service zu übergeben, kann der RestClientService genutzt werden.

Key Value
ID AS4_OUT
Aktiv false
Name Übergabe an den B2B-Message-Service
Type REST
Klasse org.b2bbp.eai.services.rs.RestClientService
Channel  
Richtung outbound
Urheber b2bbp

Service Properties

Eigenschaft Wert Kontextüberschreiben
HEADER_Content-Type application/text NEIN
METHOD POST NEIN
RESPONSE_CODES_FOR_STOP 302,400,401,402,403,404,405,406,415,500,501,502,503,504,505,506,507,508,509,510,511 NEIN
URL http://b2b-message-service:8080/aep-b2b-message-service/messages?messageId=${template(&(this.B3P_OBJ_MESSAGE.messageId))}&attributeId=PAYLOAD NEIN
ENTITY_KEY_RESPONSE messageId NEIN
MESSAGE_STATE_ON_SUCCESS A4P NEIN

Es muss bei der URL eine attributeId mit übergeben werden, damit der Service später die Edifact-Nachricht aus der Datenbank auslesen kann. Dabei ist es wichtig, eine attributeId zu wählen, in der IMMER die Edifact-Nachricht gespeichert ist. Ist dies nicht immer die gleiche AttributeId, so kann vor der Action, die diesen Service aufruft, eine SetPropertyAction eingerichtet und dem Channel zugewiesen werden. Diese SetPropertyAction sollte die Edifact-Nachricht in der Datenbank speichern (Konfiguration siehe weiter unten). Der Eigenschaftsname der Action muss dann als attributeId in der URL angegeben werden.

Dank der Property MESSAGE_STATE_ON_SUCCESS wird der VS Status auf A4P gesetzt, bis sichergestellt ist, dass die Nachricht an den Partner übermittelt wurde.

Extensions

AS4_RELATIONS Extension

In dieser Extension wird die Kommunikation zwischen Partner und System für AS4 gespeichert. Die Extension wird automatisch beim ersten PATHSWITCH angelegt. Sonst kann die Extension ebenfalls manuell leer angelegt werden.

Wichtig für die Nutzung dieser Extension ist, dass die Cluster Communication auf ‘auto’ eingestellt ist. Das heißt, die Global Property B3P_CLUSTER_COMMUNICATION_STATE muss auf ‘auto’ stehen.

Inhalt der Extension AS4_RELATIONS:

<tenantILN>.<partnerILN>.AS4=true/false

<tenantILN>.<partnerILN>.AS4ID=as4Id

<tenantILN>.<partnerILN>.delivered=delivered-timestamp

Archivierung

Um Edifact-Nachrichten, die per AS4 verschickt oder empfangen wurden, die verschlüsselte AS4-Nachricht, die Quittung und alle notwenidgen AS4-Meta-Informationen zu archivieren müssen je nach Archivierungslösung folgende Anpassungen gemacht werden:

  1. B2B-Archivierung
  2. Service-Archivierung
View Me   Edit Me