Skip to main content
Skip table of contents

SOAP-Webservice mit externer WSDL-Definition bereitstellen

Wie Sie mit der X4 BPMS SOAP-Webservices z.B. im RPC-Stil auf Basis einer bestehenden WSDL-Definition bereitstellen, wird im Folgenden beschrieben.

Voraussetzungen

  • Grundlegendes Wissen über den Aufbau von SOAP-Webservices
  • Die WSDL-Definition muss gültig und über eine für den Konsumenten gültige URL erreichbar sein, z.B. via HTTP.
  • Ein Technical Process pro Webservice-Operation, der die Verarbeitung der eingehenden Anfrage übernimmt. Der Technical Process wird dabei über seine x4db:/-URL referenziert.
  • Ein URL-Part, über den der SOAP-Webservice via HTTP erreichbar sein soll, z.B. über http://localhost:8080/X4/httpstarter/ReST/MyExternalWSDLWebservice. Diesen URL-Part haben Sie bereits typischerweise als Konstante innerhalb der Webservice-Konfiguration definiert, siehe Webservice-Konfiguration grafisch bearbeiten.

Um einen Technical Process als SOAP-Webservice mit externer WSDL-Definition bereitzustellen, gehen Sie wie folgt vor:

  1. Unter der gewünschten URL-Ressource (definiert z.B. durch einen konstanten URL-Part) über das Kontextmenü Add SOAP Service einen neuen Service-Eintrag vom Typ SOAP anlegen und ggf. (Sicherheits-)Eigenschaften anpassen.

  2. SOAP-Version festlegen (entweder SOAP 1.1, SOAP 1.2 oder Unterstützung für beide Standards).

  3. WSDL-Modus EXTERNAL wählen und in WSDL URL (Attribut url="…") eine gültige URL zur externen WSDL-Definition angeben.

    Sie können auch eine selbsterzeugte WSDL-Definition und eine XSD aus dem Repository bereitstellen. Stellen Sie die WSDL-Definitionsdatei dazu als File-Service via HTTP bereit, siehe File-Webservice bereitstellen.

    Beispiel (Auszug aus XML-Speicherformat)

    XML
    <Constant value="externalWsdl">
    	<Service type="File" path="x4db:/1/RestExamples/soap/externalWsdl.xml"/>
    </Constant>
    <Constant value="xsd">
    	<Remainder name="FILE">
    		<Service type="File" path="x4db:/1/RestExamples/soap/xsd/&lt;FILE>"/>
    	</Remainder>
    </Constant>

    Anschließend können Sie die File-Webservice-URL in der Definition des SOAP-Webservices z.B. wie folgt referenzieren:

    Beispiel (Auszug aus XML-Speicherformat)

    XML
    <Wsdl mode="EXTERNAL" url="http://localhost:8080/X4/httpstarter/Rest/soapService/externalWsdl"/>
  4. Auf Load Configuration from WSDL klicken, um die WSDL-Definition mit den entsprechenden Webservice-Informationen (SOAP-Version, Service-Präfix, verknüpfte XSD-Schemas und verfügbare Webservice-Operationen) zu laden.
    In der Baumstruktur des X4 Webservice Configuration Editors wird für jede in der WSDL-Definition definierten Webservice-Operation ein entsprechend benannter Kindknoten angelegt.

  5. Für jede Webservice-Operation im entsprechenden Kindknoten die Konfiguration anpassen:

    • Technical Process, der die Webservice-Anfrage über den X4 Server verarbeitet, über dessen x4db:/-URL verknüpfen.
      Im Webservice Configuration Editor ist dies per Drag & Drop aus dem Repository Navigator möglich.

    • Input Handler und Output Handler für den SOAP-Webservice definieren.

    • Bei Bedarf Sicherheitseinstellungen (Guest Allowed, Token Return etc.) anpassen.
  6. Speichern und Webservice-Konfiguration mit Reload on Server anwenden.
    Der SOAP-Webservice ist ab sofort aktiv und kann über dessen Service-URL via HTTP POST aufgerufen werden.

Bei einem Aufruf der Service-URL via HTTP GET wird die in WSDL URL (Attribut url) angegebene URL weitergeleitet (HTTP-Redirect).

Beispiel: Konfiguration des Webservices mit externer WSDL-Definition

XML
<Service type="Soap">
	<SoapVersion>
		<SOAP11/>
		<SOAP12/>
	</SoapVersion>
	<Wsdl mode="EXTERNAL" url="http://www.webservicex.com/CurrencyConvertor.asmx?wsdl"/>
	<Namespace prefix="exampleSpace" namespace="http://example.org/namespace"/>
	<Namespace prefix="anotherSpace" namespace="http://example.org/different/namespace"/>
	<!-- requires unique qualified names for the operations -->
	<Operation name="exampleSpace:SpacedOperation" 
        process="x4db:/1/RestExamples/soap/DirectOutput.wrf">
		<InputHandler type="SOAP-Envelope"/>
		<OutputHandler type="SOAP-Envelope"/>
	</Operation>
	<Operation name="anotherSpace:SpacedOperation" 
        process="x4db:/1/RestExamples/soap/DirectOutput.wrf">
		<InputHandler type="SOAP-Envelope"/>
		<OutputHandler type="SOAP-Envelope"/>
	</Operation>
	<Operation name="UnSpacedOperation" 
        process="x4db:/1/RestExamples/soap/DirectOutput.wrf">
		<InputHandler type="SOAP-Envelope"/>
		<OutputHandler type="SOAP-Envelope"/>
	</Operation>
</Service>
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.