SOAP-Schnittstelle
Mit dem Systemtyp SOAP-Schnittstelle holt DDM Dokumente aus einem System, das sie über einen SOAP-Webservice anbietet – häufig ältere DMS-, ERP- oder Archivsysteme. Sie funktioniert wie die REST-Schnittstelle: Eine Request-Kette ruft den Dienst auf, und eine Feld-Zuordnung sagt, welcher Wert der Antwort was bedeutet. Lesen Sie die REST-Anleitung zuerst – hier steht nur, was bei SOAP anders ist.
Was anders ist als bei REST
- Den SOAP-Umschlag schreiben Sie selbst in den Body eines Schritts mit der Methode POST. DDM liest keine WSDL und baut keinen Umschlag.
- Antworten in XML liest DDM in eine Baumstruktur um, damit Sie sie mit denselben Pfaden mit Punkten ansprechen können wie JSON – siehe Pfade in XML-Antworten.
- Die Dateien selbst lädt DDM mit
GETvon der Datei-URL. Ihr Dienst muss zu jedem Dokument eine solche Adresse liefern; Dateiinhalte, die als Base64 in der SOAP-Antwort stecken, kann DDM nicht übernehmen.
1. Quelle anlegen
Legen Sie unter Einstellungen › Externe Quellen mit Neue Quelle eine Quelle an, geben Sie ihr einen Namen und wählen Sie als Systemtyp SOAP-Schnittstelle.
| Feld | Was Sie eintragen |
|---|---|
| Endpunkt | Die Adresse des Dienstes – nicht die der WSDL –, z. B. https://archiv.firma.de/services/dokumente |
| SOAPAction | Die Operation, die die Schritte aufrufen, z. B. urn:dokumente/Liste – siehe Header und SOAP-Version |
| Authentifizierung (Header) | Ein Header für die Anmeldung, z. B. Authorization: Basic … – verschlüsselt gespeichert, nie wieder angezeigt, nur an den Endpunkt geschickt |
Pfade der Schritte hängen am Endpunkt wie bei REST an der Basis-URL. Meist rufen alle Schritte den Endpunkt selbst auf – lassen Sie den Pfad dann leer (oder /) – siehe Pfad und Basis-URL.
Verbindung testen ruft den Endpunkt mit GET auf. Viele SOAP-Dienste antworten darauf mit 405 oder 500 – das zählt hier als Die Schnittstelle antwortet (HTTP …) und heißt nur, dass die Adresse erreichbar ist. Ob der Dienst wirklich antwortet, zeigt Kette testen.
2. Header und SOAP-Version
SOAP 1.1 – die meisten Dienste: Tragen Sie die Operation unter SOAPAction ein, z. B. urn:dokumente/Liste. DDM schickt sie bei jedem Schritt als Header SOAPAction mit (in Anführungszeichen, wie SOAP es verlangt) und kennzeichnet den XML-Body als text/xml. Mehr ist nicht nötig.
SOAP 1.2: Lassen Sie SOAPAction leer und tragen Sie unter Header des Schritts den Content-Type mit der Operation ein:
Content-Type: application/soap+xml; charset=utf-8; action="urn:dokumente/Liste"
Ruft ein Schritt eine andere Operation auf als die übrigen, geben Sie sie unter Header des Schritts an – SOAPAction: "urn:dokumente/Datei". Was ein Schritt selbst nennt, gilt vor dem Feld der Quelle. Unter Header steht je Zeile ein Header.
3. Ein Schritt mit SOAP-Umschlag
Schritt 1 – „Dokumente auflisten": POST, Pfad leer, Body:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:d="urn:dokumente">
<soap:Body>
<d:Liste>
<d:Ordner>Vertrieb</d:Ordner>
</d:Liste>
</soap:Body>
</soap:Envelope>
Variablen aus früheren Schritten setzen Sie mit {{name}} in den Body ein, z. B. <d:Ordner>{{ordner}}</d:Ordner>. DDM maskiert sie dabei als XML-Text – ein & im Wert macht den Umschlag nicht kaputt.
Pfade in XML-Antworten
Angenommen, der Dienst antwortet:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ListeResponse xmlns="urn:dokumente">
<dokument id="4711">
<titel>Preisliste.pdf</titel>
<url>https://archiv.firma.de/dateien/4711</url>
<ordner>Vertrieb/Preise</ordner>
</dokument>
<dokument id="4712">
<titel>Katalog.pdf</titel>
<url>https://archiv.firma.de/dateien/4712</url>
<ordner>Vertrieb</ordner>
</dokument>
</ListeResponse>
</soap:Body>
</soap:Envelope>
DDM liest das so:
- Namensraum-Präfixe fallen weg:
soap:EnvelopeheißtEnvelope. - Ein Element, das mehrfach vorkommt, wird eine Liste:
dokumentist eine Liste mit zwei Einträgen. - Ein Element, das nur Text enthält, ist dieser Text:
titelistPreisliste.pdf. - Attribute stehen mit
@davor:@idist4711.
| Feld | Eintrag |
|---|---|
| Liste iterieren über | Envelope.Body.ListeResponse.dokument |
Zuordnung titel | Dokumentname |
Zuordnung url | Datei-URL |
Zuordnung @id | Fremd-ID |
Zuordnung ordner | Kategorie-Pfad |
dokument, zählt DDM einen einzelnen trotzdem als einen Datensatz. Mit dokument.0 greifen Sie gezielt auf den ersten von mehreren zu.Klicken Sie auf Kette testen: Unter Beispiel-Antwort steht die Antwort des Dienstes, und die Vorschau neben jeder Zuordnung zeigt, was aus dem ersten Eintrag wird. Antwortet der Dienst mit einem SOAP-Fault, steht der Schritt auf fehlgeschlagen (meist HTTP 500), und darunter der Text des Faults – etwa HTTP 500 — soap:Client Operation unbekannt. Die Beispiel-Antwort behält die letzte erfolgreiche Antwort.
Alles Weitere
Variablen, Transformationen, Gruppen-Zuordnung, mehrstufige Ketten und die Grenzen sind dieselben wie bei der REST-Schnittstelle – siehe REST-Schnittstelle. Import-Umfang und Abgleich erklärt der Überblick.