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:
View Me Edit Me