Externe Quellen

SOAP-Schnittstelle

Dokumente aus einem System mit SOAP-Webservice übernehmen – mit einer Request-Kette, XML-Pfaden und einer Feld-Zuordnung.

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.

Ab Tarif Enterprise verfügbar – siehe Tarife.

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 GET von 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.

FeldWas Sie eintragen
EndpunktDie Adresse des Dienstes – nicht die der WSDL –, z. B. https://archiv.firma.de/services/dokumente
SOAPActionDie 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.

Ändern Sie den Endpunkt, löscht DDM die hinterlegte Authentifizierung. Tragen Sie sie danach neu ein.

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:Envelope heißt Envelope.
  • Ein Element, das mehrfach vorkommt, wird eine Liste: dokument ist eine Liste mit zwei Einträgen.
  • Ein Element, das nur Text enthält, ist dieser Text: titel ist Preisliste.pdf.
  • Attribute stehen mit @ davor: @id ist 4711.
FeldEintrag
Liste iterieren überEnvelope.Body.ListeResponse.dokument
Zuordnung titelDokumentname
Zuordnung urlDatei-URL
Zuordnung @idFremd-ID
Zuordnung ordnerKategorie-Pfad
Kommt ein Element nur einmal vor, ist es keine Liste, sondern ein einzelner Eintrag – liefert der Dienst also mal ein, mal mehrere 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.