HTTP-Tutorial - Webservices
Webservices basieren auf Standardprotokollen, mit denen Informationen und Befehle übertragen werden. Die Implementierung kann mittels SOAP (Simple Object Access Protocol) erstellt werden.
Hinweis: Bei SOAP handelt es sich um einen Protokollstandard, der den Austausch von Daten zwischen verschiedenen Systemen ermöglicht, welche über ein Netzwerk miteinander verbunden sind. Dabei werden die Nachrichten einheitlich im XML-Format ausgetauscht und benötigen
SOAP-Envelope (vergleichbar mit digitalem Briefumschlag),
SOAP-Header (optional, enthält Meta-Daten),
SOAP-Body (Nutzdaten mit zu übertragenden Informationen).
Es existieren SOAP-Standards in den Versionen 1.1 (2001) und 1.2 (2003), wobei in Lobster Integration nativ nur die Version 1.2 unterstützt wird (mit einem Workaround kann auch die ältere Version verwendet werden). Weitere Informationen finden Sie unter den Spezifikationen und einen guten Überblick auf Wikipedia. Die Unterschiede zwischen beiden Versionen werden in der Lobster-Online-Hilfe beschrieben.
Lobster Integration fungiert sowohl als Webservice-Endpunkt als auch als Client. Um einen Webservice zu testen und gegebenenfalls auch Fehler in der Übertragung zu analysieren, empfehlen wir Ihnen als Tool SoapUI.
Lobster Integration als SOAP-Webservice
Verwenden Sie hierzu das Profil Lobster_Tutorial_HTTP_calculator_xml, welches XML verarbeitet, um einen Webservice aufzubauen. In Phase 1 aktivieren Sie die Option Als SOAP-WebService veröffentlichen und konfigurieren die Art der WSDL Erzeugung mit WSDL auf Basis des Zielbaums.
Nach Speichern der Änderungen können Sie mit dem Aufruf http://<Server>/dw/Request/calculator_xml?wsdl die zugehörige WSDL abrufen und damit ein neues SoapUI-Projekt in der Anwendung SoapUI erstellen.
Im Projektbrowser können Sie mit einem Klick auf "Request 1" ein neues Abfragefenster öffnen. Darin befindet sich ein Anfragebereich, in welchem die komplette SOAP-Struktur mit Envelope, ggf. Header und Body zu sehen ist.
Belegen Sie nun die Werte für die Parameter OP1, OP2 und OPR und senden Sie die Anfrage über den grünen Pfeil ab.
Die Antwort beschränkt sich auf ein simples <RESULT>7.0</RESULT>. Hier fehlt die SOAP-Struktur mit dem Envelope-Element, Header und Body und die Namespaces. Diese Struktur können Sie mit einer Anpassung der Zielstruktur und über die XMLNoTemplateUnit aufbauen. Dafür müssen Sie in der Zielstruktur einen Envelope-Knoten erstellen und darunter zwei Knoten für Header und Body, in den Sie den schon vorhandenen Zielknoten schieben. Achten Sie auf die Zuweisung der Namespaces.
Lobster Integration alias SOAP-Client
Zum Aufruf eines externen Webservices über Lobster Integration, werden im folgenden drei Möglichkeiten beschrieben.
Webservice-Aufruf in Phase 6
Sie möchten aus beliebigen Eingangsdaten eine Anfrage gegen einen Webservice stellen? Dabei werden diese in der Phase 3 in eine geeignete SOAP-Ausgangsstruktur gemappt und anschließend an den Webservice übergeben. Eine ausführliche Beschreibung zur Generierung und zum Absetzen eines solchen Requests finden Sie in unserer Online-Hilfe.
Um die Antwort des Webservices weiterzuverarbeiten, aktivieren Sie im HTTP-Antwortweg die Option HTTP Antwort per Message weiterleiten und hinterlegen Sie ein neu angelegtes Profil, welches die Antwort entgegennimmt und gegebenenfalls die Daten weiterverarbeitet.
Hinweis: In der Phase 3 können Sie mittels Assistenten eine WSDL zur Abfrage erzeugen und diese verwenden. Es können komplexe Eingangsstrukturen wie SOAP erzeugt werden, indem Sie zuerst den zeitgesteuerten Eingangsagenten des Typs HTTP auswählen und dann, wie für Cron-HTTP-Webservices beschrieben, die WSDL angeben und sich damit eine Quellstruktur erzeugen lassen. Anschließend ändern Sie den Typ des Eingangsagenten zu Message.
Webservice-Calls innerhalb des Mappings
Benötigen Sie innerhalb des Mappings aufbauende Daten von einem externen Webservice, so steht Ihnen die Funktion call SOAP-WebService without template(a,b,c,d,e,f,[g,h,i,j,k,l]) zur Verfügung.
Möchten Sie komplexe Daten aus einer Webservice-Response in Phase 3 verarbeiten, können Sie auf die Funktion trigger profile(a,b) zurückgreifen. Erstellen Sie dazu ein eigenes zeitgesteuertes Profil, welches die Daten anfordert und gegebenenfalls transformiert. Die Antwort wird Ihnen mit Hilfe der Funktion zur Verfügung gestellt.
Webservice über SOAP 1.1
Wie bereits oben erwähnt, unterstützt Lobster Integration nativ nur SOAP-Webservices in der Version 1.2. Dieses Vorgehen funktioniert auch für WSDL (< Version 1.2), jedoch unterstützt der Assistent nicht die WSDL-Abfrage. Erhalten Sie beim Ansprechen eines Webservices über die WSDL einen Fehler, so können Sie mit hoher Wahrscheinlichkeit davon ausgehen, dass hier eine alte Version verwendet wird.
Grundsätzlich dient der WSDL-Assistent in Lobster Integration zur Erstellung der passenden Strukturen für Request bzw. Response.
Alternativ lässt sich dies auch mit externen Werkzeugen, wie beispielsweise SOAP-UI, erreichen:
Anlage eines neuen SOAP-Projektes.
Importieren der WSDL.
Ausführen einer Testanfrage mit der gewünschten Methode.
Ergebnis: Kompletter Request als XML und dazugehöriger Antwortstruktur.
Erstellen Sie aus dem Inhalt des Requests eine neue Datei.
Mittels Dateianalyse in Phase 3 erzeugen Sie die Quell- bzw. Zielstruktur.
Alternativ können Sie im Cron-Eingangsagent über das Requestfenster die Datei einfügen.
Gegebenenfalls müssen die Namespaces für SOAP 1.1 in Phase 3 vergeben werden.
Wert für SOAP Action-Header für die Version 1.1 muss in Phase 1 - "HTTP Header anpassen" - neuer Eintrag "SOAPAction" hinterlegt werden. Diesen erhalten Sie aus dem Programm SOAP-UI im Anzeigebereich des Requests unter dem Reiter "raw".