AS4 B2B Customizing synchron

AS4 Customizing in der B2B

Allgemeine Konfiguration

Global Properties

AS4_FEATURE

Um AS4-Nachrichten im Nachrichtenmonitor angezeigt zu bekommen, muss die Global Property AS4_FEATURE auf true gesetzt werden.

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.

Ausgehende AS4-Kommunikation

Um Nachrichten mit Hilfe der AS4-Services an den Marktpartner zu verschicken, muss in der B2B ein neuer Channel angelegt werden. In diesem befindet sich unter anderem eine Action, die den entsprechenden Service anspricht, der die Nachricht an den AS4-Outbound-Market-Message-Service übergibt. Damit die zurück gemeldete AS4-ID in der Datenbank gespeichert werden kann, muss dem Channel eine neue SetPropertyAction hinzugefügt werden. Diese Action ist zwingend erforderlich, damit die AS4-Nachrichten im Nachrichtenmonitor angezeigt werden können. Ist der Marktpartner nicht in der AS4-Adress-Datenbank hinterlegt oder das AS4-System inaktiv, wird versucht, die Nachricht per AS2 oder Mail zu verschicken.

Das Routing, also der Weg, wie die Nachrichten in den neuen Channel gelangen, ist abhängig vom bereits bestehenden Routing und muss entsprechend konfiguriert werden. Zum Beispiel direkt am Service, mit dem die Nachricht in die B2B gelangt oder über das Routing der Channel Distribution.

Channel

Ausgehender AS4 Channel
ID Richtung Nachrichtentyp Nachrichtenversion Präsentationstyp
OUT_AS4 outbound      

Actions innerhalb des Channels.

Ausgehender AS4 Channel for Contrl und Aperak

Für den Contrl- und Aperak-Versand können entweder neue Channel angelegt oder die bestehenden angepasst werden. So könnten zum Beispiel die Channel wie folgt aussehen:

Status Aktionsname
active Indizierung für die Volltextsuche
active Nachricht versenden per AS4
active Save Outbound AS4-ID
active Nachricht versenden (Mail oder AS2 statt AS4)
active Errormail erzeugen bei Fehler

Actions

AS4 Nachricht senden

Es muss eine PropertyAction gesetzt werden, um den RestClientService aufzurufen, der Edifact-Nachrichten an den AS4-Outbound-Market-Message-Service übergibt.

Name Type Klasse Beschreibung Urheber
Nachricten versenden per AS4 java org.b2bbp.runtime.actions.internal.SetPropertyAction Ruft den Service auf, der die Edifact an den AS4-Outbound-Market-Message-Service übergibt. b2bbp.org

Action Properties

Eigenschaft Typ Wert Name Import/Export Kontext überschreiben Optionen
B3P_USED_SERVICE_ID   AS4_OUT Name des Services   NEIN  
AS4-ID speichern

Es muss eine PropertyAction gesetzt werden, um AS4-IDs in der Datenbank speichern zu können, die dann wiederum benötigt werden, um AS4-Nachrichten im Nachrichtenmonitor anzuzeigen.

Name Typ Klasse Beschreibung Urheber
Save Outbound AS4-Id java org.b2bbp.runtime.actions.internal.SetPropertyAction Speichert die AS4-Id einer ausgehenden AS4-Nachricht b2bbp.org

Action Properties

Eigenschaft Typ Wert Name Import/Export Kontext überschreiben Optionen
ACTION_DECORATORS   ConditionalExecute     NEIN Technisch
AS4_ID   ${var(as4id)} AS4-id   NEIN Technisch

Wichtig ist, dass die Eigenschaft AS4_ID genau so geschrieben wird und der dynamische Ausdruck den ENTITY_KEY_RESPONSE des Services enthält.

Nachricht versenden (Mail oder AS2 statt AS4)

Kann die Nachricht nicht per AS4 verschickt werden, weil entweder das AS4-System inaktiv ist oder die AS4-Partneradresse nicht in der AS4-Adress-Datenbank gepflegt ist (zu erkennen an der leeren AS4_ID), so wird die Nachricht per AS2 oder Mail verschickt. Hierfür kann die bereits existierende Action zum Mail/AS2 Versand kopiert werden. Es müssen in der Regel lediglich B3P_MAIL_TO und B3P_USED_SERVICE_ID angepasst werden.

Name Typ Klasse Beschreibung Urheber
Nachricht versenden (Mail oder AS2 statt AS4) java org.b2bbp.runtime.actions.internal.OutboundMailHandler Sammelt Informationen für den Mail- und AS2-Versand, wenn die Nachricht nicht per AS4 verschickt werden konnte. 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   ${if(${equals(${length(${var(as4id)})},0)},${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(${length(${var(as4id)})},0)},${elp(SENDER_EMAIL,${template(OUTBOUNDSERVICE_&(this.FORMAT.partnerCode))},true)}, )}     JA Technisch

Services

Übergabe an den AS4-Outbound-Market-Message-Service

Um eine Edifact-Nachricht (current payload) an die AS4-Services zu übergeben, kann der RestClientService genutzt werden.

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

Service Properties

Eigenschaft Wert Kontextüberschreiben
ENTITY_KEY_RESPONSE as4id NEIN
ENTITY_KEY_SOURCE CURRENT_PAYLOAD NEIN
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://as4-outbound-market-message-service:8080/aep-as4-outbound-market-message-service/marketmessage?${if(${equals(${substring(${template(&(this.FORMAT.senderCode))},0,2)},98)},${elp(AS4_SENDER_EXTENSION, gas, gas, true)},${elp(AS4_SENDER_EXTENSION, electricity, electricity, true)})} NEIN

Wichtig ist, dass der ENTITY_KEY_RESPONSE mit dem Wert aus dem dynamischen Ausdruck aus der Action-Eigenschaft AS4_ID übereinstimmt.

Mithilfe der URL wird der AS4-Outbound-Market-Message-Service angesprochen. Wird kein Docker verwendet, muss die URL zu dem Service entsprechend angepasst werden. Für Gas und Strom gibt es unterschiedliche Parameter, die über die URL mitgegeben werden. Daher muss unterschieden werden, welche Nachrichten Gas und welche Strom sind. Dies wird momentan anhand der ILN gemacht. Alle ILNs, die mit 98 beginnen, werden GAS zugeordnet, alle anderen Strom.

Wie die unterschiedlichen Informationen für Gas und Strom genau aussehen, ist in der Extension AS4_SENDER_EXTENSION hinterlegt. Diese wird über einen dynamischen Ausdruck in der URL geladen.

Extensions

AS4_SENDER_EXTENSION

Die Extension vervollständigt die URL aus dem RestClientService.

Für Strom und Gas werden unterschiedliche Informationen mitgegeben:

Strom Gas
- Sendercode (from)
- Partnercode (to)
- Sparte (section)
- Sender-Qualifier (fromCode)
- Partner-Qualifier (toCode)
- Format (bdewDocumentType)
- Datum/Uhrzeit der Erstellung (bdewDocumentDate)
- Referenznummer (bdewDocumentNo)
- Sendercode (from)
- Partnercode (to)
- Sparte (section)
- BGM-Code (bgmCode)

Inhalt der Extension:

electricity=from=${template(&(this.FORMAT.senderCode))}&to=${template(&(this.FORMAT.partnerCode))}&section=electricity&fromCode=${edipath(UNB[1]+2+1)}&toCode=${edipath(UNB[1]+3+1)}&bdewDocumentType=${template(&(this.FORMAT.type))}&bdewDocumentDate=${edipath(UNB[1]+4+0)}${edipath(UNB[1]+4+1)}&bdewDocumentNo=${template(&(this.FORMAT.referenceId))}

gas=from=${template(&(this.FORMAT.senderCode))}&to=${template(&(this.FORMAT.partnerCode))}&section=gas&bgmCode=${edipath(BGM[1]+1+0)}

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 INBOUND_MESSAGES 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 AS4-Inbound-Market-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  
View Me   Edit Me