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.
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 |
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 | 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 |
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))})})}
Zustellungsstatus einer ausgehenden AS4 Nachricht setzen
Der VS Status einer ausgehenden AS4-Nachricht kann mit einer MessageBufferActionFirstTime Auskunft auf den Zustellungsstatus an den Partner geben. Hierbei wird der VS Status auf RUW gesetzt, bis sichergestellt ist, dass die Nachricht an den Partner übermittelt wurde. Diese Action muss im Channel ganz ans Ende hinzugefügt werden.
Name | Typ | Klasse | Beschreibung | Urheber |
---|---|---|---|---|
MessageBufferAction AS4 Delivery | java | org.b2bbp.runtime.actions.internal.MessageBufferActionFirstTime | Setzt den Verarbeitungsstatus der AS4 Nachricht je nach Übermittlungsstatus | b2bbp.org |
Action Properties
Eigenschaft | Typ | Wert | Name | Import/Export | Kontext überschreiben | Option |
---|---|---|---|---|---|---|
ACTION_DECORATORS | ConditionalExecute | Nein | ||||
EXECUTE_ACTION | ${loadExtensionProperty(AS4_RELATIONS,${template(&(this.FORMAT.senderCode).&(this.FORMAT.partnerCode).AS4)},false)} | Ja | technisch | |||
B3P_EDI_ELEMENTS | UNB | Nein | ||||
B3P_IGNORE_CC_IF_NOT_EXPECTED_CC | true | Nein | ||||
B3P_VS_STATE | RUW | NEIN |
Die MessageBufferActionFirstTime braucht zwingend eine Bedingung (Decorators ausgenommen). In diesem Fall wird B3P_EDI_ELEMENTS auf UNB gesetzt, um auf ein UNB im CURRENT_PAYLOAD zu prüfen. Da dies immer der Fall ist, ist die Bedingung immer erfüllt, sodass die Action immer ausgeführt wird.
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 |
Datum |
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 |
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.
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