Empfangen von AS2-Nachrichten

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  AS2-Integration >

Empfangen von AS2-Nachrichten

Sie können mit FlowForce Server Aufträge erstellen, um AS2-Nachrichten von den Partnern Ihres Unternehmens zu empfangen, diese Daten zu verarbeiten und lokal zu speichern. Solche Aufträge weisen im Allgemeinen dieselben Eigenschaften wie andere FlowForce-Aufträge auf und stellen zusätzlich dazu die folgenden Zusatzfunktionalitäten bereit:

 

Sie können direkt von der Auftragskonfigurationsseite aus einen AS2-Dienst erstellen, der für Requests empfangsbereit ist.
Wie weiter unten gezeigt, erhält der Auftrag, in dem AS2-Daten empfangen werden, die zwei vordefinierten Parameter partner und message. Diese Parameter stellen Informationen über den sendenden Partner bzw. die eingehende Nachricht bereit.

 

Ein AS2-Dienst wird vom Prinzip her auf dieselbe Weise wie ein Web-Dienst bereitgestellt, siehe auch Bereitstellen von Aufträgen als Web-Dienste. Die AS2-Dienst-URL hat dabei ein Format wie das folgende: http(s)://<flowforce-server>:<port>/service/<as2-service-name>, wobei die Parameter für folgende Informationen stehen:

 

<http(s)> bezieht sich auf das Protokoll, das Sie auswählen können, HTTP oder HTTPS (Dies wird über die FlowForce Server Setup-Seite konfiguriert, siehe Definieren der Netzwerkeinstellungen).
<flowforce-server> ist der Host-Name oder die IP-Adresse des Rechners, auf dem FlowForce Server ausgeführt wird
<port> ist der Port-Name (standardmäßig 4646). Beachten Sie, dass HTTP und HTTPs unterschiedliche Port-Namen haben. Der Port wird über die Setup-Seite im Abschnitt "FlowForce Server" konfiguriert, siehe Definieren der Netzwerkeinstellungen).
service - dieser URL-Teil bleibt immer gleich und kann nicht geändert werden.
<as2-service-name> ist der benutzerdefinierte Name, den Sie Ihrem AS2-Dienst geben möchten. Sie können diesen Teil der URL definieren, wenn Sie den Auftrag erstellen.

 

Sie können FlowForce Server je nach Bedarf so konfigurieren, dass Requests von nicht authentifizierten Clients empfangen werden können (d.h. dass der Dienst öffentlich bereitgestellt wird) oder Sie können eine einfache HTTP-Authentifizierung von Clients anfordern. Damit der AS2-Dienst ohne Authentifizierung zur Verfügung steht, erstellen Sie den AS2-Dienst-Auftrag in einem FlowForce Server-Container, für den der Benutzer useranonymous die folgende Berechtigung hat: "Dienst: Verwenden". Nähere Informationen zu Containern und Berechtigungen finden Sie unter Berechtigungen und Container. Ein Beispiel zu einer solchen Konfiguration finden Sie unter Beispiel: Vollständiger AS2-Nachrichtenaustausch.

 

Voraussetzungen

Bevor Sie AS2-Daten von Partnern empfangen können, müssen die folgenden Voraussetzungen erfüllt sein:

 

Es müssen die Details zu den einzelnen Partnern, von denen Sie Daten empfangen werden, zu FlowForce Server hinzugefügt werden, siehe Konfigurieren von AS2-Partnern.
Der "FlowForce Server"-Dienst muss Verbindungen von entfernten Clients an der angegebenen URL annehmen.

 

Standardmäßig akzeptiert FlowForce Server Verbindungen vom localhost am Port 4646. Damit auch andere Rechner als der localhost auf den AS2-Dienst zugreifen können, öffnen Sie die Setup-Seite und ändern Sie die Bindungsadresse von FlowForce Server in Alle Schnittstellen (0.0.0.0) oder in einer bestimmte Schnittstelle, siehe Definieren der Netzwerkeinstellungen. Stellen Sie außerdem sicher, dass die Kommunikation mit FlowForce Server nicht durch die Firewall des Betriebssystems blockiert wird.

 

Anmerkung:Der "FlowForce Server"-Dienst ist nicht mit dem "FlowForce Web Server"-Dienst zu verwechseln. Über letzteren wird die Web-Verwaltungsschnittstelle aufgerufen, er nimmt Verbindungen am Port 8082 an und hat eine eigene Konfiguration, siehe auch Funktionsweise.

 

Erstellen des AS2-Diensts

In diesem Beispiel wird erläutert, wie Sie einen Auftrag erstellen, der einen AS2-Dienst bereitstellt. Melden Sie sich zuerst auf der FlowForce Web-Verwaltungsschnittstelle an (siehe Anmelden bei FlowForce Server). Sie könnten den AS2-Dienst im Standard-Container public erstellen, jedoch empfiehlt es sich, einen eigenen Container dafür zu erstellen (da für den Dienst möglicherweise separate Berechtigungen benötigt werden). Klicken Sie auf Konfiguration und dann auf Erstellen | Container erstellen.

ff_as2_service_01

Geben Sie einen Containernamen ein (z.B. "as2service") und klicken Sie anschließend auf Speichern und dorthin wechseln. Klicken Sie als nächstes auf Erstellen | Auftrag erstellen. Daraufhin wird die Auftragskonfigurationsseite geöffnet:

ff_as2_service_02

Um diesen Auftrag zu einem AS2-Dienst zu machen, aktivieren Sie das Kontrollkästchen Diesen Auftrag... zur Verfügung stellen:.. und geben Sie den Namen des Diensts ein (z.B. "as2-receiver"). Wählen Sie außerdem aus der Dropdown-Liste die Option AS2-Dienst aus.

ff_as2_ex1-09

Beachten Sie, dass nun automatisch zwei neue Parameter zum Auftrag hinzugefügt wurden:

ff_as2_ex1-10

Parameter

Zweck

partner

Dieser Parameter stellt Informationen über den AS2-Partner, der die Nachricht gesendet hat, bereit. Der Parameterdatentyp ist "AS2-Partner". Sie können dieses Objekt in einem weiteren Schritt verarbeiten und den lokalen oder entfernten Namen des Partners mit Hilfe der FlowForce-Ausdrucksfunktionen as2-partner-local-name oder as2-partner-remote-name als String abrufen.

message

Dieser Parameter bietet Zugriff auf die eingehende Nachricht. Der Datentyp der Nachricht ist "Stream". Sie können den Stream, wie unten gezeigt, mit Hilfe von FlowForce-Ausdrucksfunktionen in eine Datei konvertieren.

 

Anmerkung:Die vordefinierten Parameter partner und message dürfen nicht gelöscht werden. Wenn Sie die vordefinierten Parameter in späteren Schritten nicht verwenden, können Sie diese ignorieren. Der Auftrag wird dadurch nicht ungültig. Normalerweise muss jedoch zumindest die eingehende Nachricht auf irgendeine Weise verarbeitet (z.B. in einer Datei gespeichert) werden. Wie unten gezeigt, können Sie dies mit Hilfe von FlowForce-Ausdrucksfunktionen und in diesem Fall mit MIME-Ausdrucksfunktionen tun. In einigen Fällen müssen z.B. zusätzliche Parameter zum Auftrag hinzugefügt werden (z.B. um einen konstanten über mehrere Schritte hinweg wiederverwendbaren Wert zu definieren). Wenn Sie dies tun, stellen Sie sicher, dass der Parameterwert einen Standardwert hat, da andernfalls der Auftrag beim Eintreffen einer AS2-Nachricht nicht gestartet und eine Fehlermeldung protokolliert wird.

 

Bisher ist der Auftrag so konfiguriert, dass er AS2-Daten akzeptiert, jedoch geschieht bisher nichts mit den Daten. Um den Nachrichteninhalt aus dem Stream auszulesen und in einer Datei zu speichern, muss ein neuer Ausführungsschritt zum Auftrag hinzugefügt werden. Klicken Sie auf Neuer Ausführungsschritt und navigieren Sie zur Funktion /system/filesystem/copy. Füllen Sie anschließend die Parameter Quelle und Ziel aus, wie unten gezeigt:

ff_as2_ex1-11

Mit dem Ausführungsschritt wird die Funktion /system/filesystem/copy aufgerufen, um Daten aus Quelle in Ziel zu kopieren. Quelle ist ein FlowForce-Ausdruck. In diesem Beispiel liest der Ausdruck

 

{as-file(message)}

 

den weiter oben erwähnten Parameter message und konvertiert ihn mit Hilfe der Ausdrucksfunktion as-file in einen Dateinamen.

 

Der Ausdruck

 

{substring(current-message-id(), 1, -1)}

 

führt folgende Schritte aus:

 

1.Er ruft den Wert des Message-ID Header-Felds mit Hilfe der Ausdrucksfunktion current-message-id als String ab. Eine typische Message-ID könnte z.B. folgendermaßen aussehen: <20180309125433018954-56c8aeb2fb4b478eb02f6f57662607da@somehostname>.
2.Er entfernt mit Hilfe der Ausdrucksfunktion substring das erste und letzte Zeichen aus dem Ergebnisstring. Die Message-ID siehe dadurch folgendermaßen aus: 20180309125433018954-56c8aeb2fb4b478eb02f6f57662607da@somehostname (beachten Sie, dass die spitzen Klammern "<" und ">" nun entfernt wurden).

 

Zum Schluss wird der String ".msg" an den Ausdruck angehängt, wodurch der Pfad erstellt wird, unter dem FlowForce die eingehende AS2-Nachricht speichern soll. Beachten Sie, dass der Pfad relativ zum Arbeitsverzeichnis C:\temp ist. D.h., immer, wenn jemand eine AS2-Nachricht an http://<flowforce-server>:<port>/service/as2-receiver sendet, wird mit diesem Auftrag der Nachrichteninhalt ausgelesen und unter einem Pfad wie dem folgenden gespeichert C:\temp\20180309125433018954-56c8aeb2fb4b478eb02f6f57662607da@somehostname.msg.

 

 

Anmerkungen:

 

Das Kontrollkästchen Überschreiben wurde nicht aktiviert, d.h. der Auftrag gibt einen Fehler zurück, falls ein Auftrag mit derselben Nachrichten-ID zwei Mal eingeht.
Die Einstellung Bei Fehler abbrechen wurde aktiviert, d.h. der Auftrag schlägt fehl, wenn die Kopierfunktion fehlschlägt. Falls der Auftrag fehlschlägt, sendet FlowForce eine negative MDN an den Partner. In diesem Fall wurde diese Option absichtlich aktiviert, d.h. FlowForce sendet eine negative MDN an den Partner, falls die Nachricht nicht gespeichert werden kann.

 

Sie haben nun einen einfachen AS2-Dienst erstellt, der für AS2-Requests empfangsbereit ist und eingehende AS2-Nachrichten lokal speichert. Ein Beispiel dafür, wie dieser AS2-Dienst von Clients verwendet wird, finden Sie unter Beispiel: Vollständiger AS2-Nachrichtenaustausch.

 

In einem realen Anwendungsszenario benötigen Sie für komplexere Verarbeitungsvorgänge wahrscheinlich weitere Ausführungsschritte für den Auftrag und müssen weitere FlowForce-Ausdrucksfunktionen verwenden. Eine Referenz zu allen FlowForce-Funktionen, die Sie in Ausführungsschritten aufrufen können, finden Sie unter Vordefinierte Funktionen. Eine allgemeine Einführung in FlowForce-Ausdrücke finden Sie im Kapitel Die FlowForce-Ausdrücke.


© 2019 Altova GmbH