Skip to main content

xSuite Interface Windows Prism 5.x – Online-Hilfe

DirectProcess-Webservice

Der DirectProcess-Webservice ist ein Webservice für die Direktverarbeitung von Stapeln. Dieser Webservice kann normale Szenarien verarbeiten, wenn auch mit gewissen Einschränkungen (siehe Funktionale Einschränkungen).

Entgegen der regulären Arbeitsweise von xSuite Interface werden die Schritte "Eingabe", "Verarbeitung" und "Ausgabe" aber nicht asynchron mit Hilfe mehrerer unabhängiger Worker-Instanzen und einer Verwaltungsdatenbank durchlaufen. Die Abarbeitung der Schritte erfolgt stattdessen synchron unmittelbar nacheinander direkt durch die Webservice-Instanz selbst. Der Webservice erhält als Eingabedaten einen Stapel mit einem oder auch mehreren Dokumenten, führt gemäß der Szenariokonfiguration die gewünschten Arbeitsschritte an den Dokumenten durch und liefert den modifizierten Stapel direkt als Ergebniswert zurück.

Syntaktisch entspricht der Eingabestapel dem des Input-Webservices (siehe Eingabesystem "WebServiceInput") und der Ausgabestapel dem des Output-Webservices (siehe Ausgabesystem "WebServiceOutput").

Der DirectProcess-Webservice verfügt über den folgenden Endpunkt:

POST /api/v1/DirectProcess/{Tenant}/{Scenario}/Batches [DirectProcessBatch]

Hinweis

Abweichend vom Input-Webservice und Output-Webservice ist hier keine Möglichkeit vorgesehen, Dateianlagen optional in separaten Aufrufen zu übertragen, um die Gesamtdatenmenge in kleinere Einheiten zu zerlegen. Die Anlagen werden immer direkt als Base64-kodierte Binärdaten in den Dokumentobjekten des Stapels mitgeführt.

Der DirectProcess-Webservices sollte nur in Fällen genutzt werden, in denen nur einzelne Dateien oder nur Indexdaten verarbeitet werden. Das ist auch empfehlenswert, weil die gesamte Datenhaltung während der Verarbeitung ausschließlich im Hauptspeicher stattfindet. Eine Auslagerung von Dateianlagen in einen separaten Storage erfolgt nicht.

Eigenschaft

Beschreibung

DirectProcessService.Scenario[].ConfigSource*

DirectProcessService.Scenario[].Tenant

Auflistung der Verarbeitungsszenarien, die der DirectProcess-Webservice ausführen soll

Die Eigenschaft .ConfigSource enthält den Verweis auf die Datenquelle mit der Szenariokonfiguration analog zur Eigenschaft Worker[].ConfigSource[] einer Worker-Instanz. Wenn kein .Scenario[] konfiguriert ist oder wenn keines eine .ConfigSource enthält, bleibt der Webservice automatisch inaktiv.

Da in diesem Kontext keine mandantenspezifischen Datenbank- und Storage-Ressourcen genutzt werden, beschränkt sich die Verwendung der .Tenant-Angabe (Standardwert: "Default") hier auf das getrennte Logging und auf mandantenspezifische Konstanten in den Konfigurationsdaten.

Ein Szenario zur Nutzung im DirectProcess-Webservice muss als Eingabesystem immer "WebServiceDirectProcess" verwenden (siehe Eingabesystem "WebServiceDirectProcess"). Ein separates Ausgabesystem für den Stapel, der vom Webservice als Ergebnis zurückzugeben wird, muss hingegen nicht konfiguriert werden. Die Eigenschaften, die für die Ausgabe benötigt werden, sind bereits im Kontext des Eingabesystems definiert.

Die möglichen Anwendungsfälle für den DirectProcess-Webservice sind vielfältig. Einerseits können Verarbeitungsstrecken, die für xSuite Interface typisch sind, damit abgebildet werden, z. B. die Übergabe eines Dokumentes an ein Archivsystem. Die vom Archiv generierte Dokumentreferenz kann hierbei, anders als bei der asynchronen Verarbeitung, direkt als Ergebnis zurückgeliefert werden.

Andererseits muss das Szenario nicht zwingend einen Output-Schritt beinhalten. Die Verarbeitung kann ebenso bereits im "Process"-Schritt enden. Das ist beispielsweise der Fall, wenn der Webservice nur für die Formatkonvertierung einer Eingabedatei genutzt wird, also im Szenario nur ein Dateikonvertierungsmakro ausgeführt und die Zieldatei zurückgeliefert wird.

Das folgende Beispiel zeigt eine Szenariokonfiguration, um eine beliebige Quelldatei in PDF zu konvertieren. Dabei wird der Quelldateifilter NOT(batch.json) benötigt, weil das Eingabesystem automatisch eine künstliche Dateianlage mit den JSON-Rohdaten des Eingabestapels generiert, die aber nicht konvertiert wird.

{
   "InputSystem": {
      "Type": "WebServiceDirectProcess",
      "OutputFileFilter": "*.pdf"
   },
   "ProcessMacro": [
      {
         "Macro": [
            "ConvertToPdf('NOT(batch.json)')"
         ]
      }
   ]
}

Die Dateianlage in den Eingabedaten und in den Ausgabedaten muss zwingend in ein Stapelobjekt und ein Dokumentobjekt eingebettet sein, auch wenn im vorliegenden Fall nur die reinen Binärdaten benötigt werden. Die Felder des Dokumentobjektes lassen sich allerdings auch sinnvoll nutzen, um für komplexere Konvertierungsoperationen dynamische Steuerparameter von außen mitzugeben.

Funktionale Einschränkungen

Für die Verwendung des Webservices und die Konfiguration der von diesem Webservice ausgeführten Szenarien gelten die folgenden Einschränkungen:

Funktionalität

Einschränkung

Statusverwaltung

Der Webservice nutzt die Verwaltungsdatenbank, die für den regulären Betrieb konfiguriert ist, nicht zum Persistieren von Verarbeitungszuständen der Stapel- und Dokumentdaten. Diese Daten sind flüchtig und die Verarbeitung eines übermittelten Stapels ist in seiner Gesamtheit entweder erfolgreich oder nicht erfolgreich.

Wenn die Verarbeitung nicht erfolgreich ist, meldet der Webservice unmittelbar einen Fehler zurück. Eine Statusverwaltung und ein erneuter Verarbeitungsversuch können bei Bedarf nur von Seiten des aufrufenden Webservice-Clients erfolgen.

In xSuite Interface ist daher auch kein Statusmonitoring für solche Stapel möglich. Die Überwachungsmöglichkeiten beschränken sich auf das normale Logging.

Dublettenprüfung

Eine Dublettenprüfung (Input.CheckDuplicate***) wird nicht unterstützt, da diese gegen Stapel prüfen müsste, die in der Datenbank persistiert sind.

Wechsel des Verarbeitungsszenarios

Die Funktion zum dynamischen Wechsel des Verarbeitungsszenarios (Process.ScenarioSwitchMacro) beruht auf einem in der Datenbank persistierten Dokument und ist daher im Kontext des Webservices nicht einsetzbar.

Warten auf Bedingungen

Funktionalitäten, die asynchron auf eine Bedingung zur Weiterverarbeitung warten und dadurch den synchronen Verarbeitungsablauf unterbrechen, sind nicht nutzbar.

Das sind insbesondere Funktionen zum zeitlichen Zurückstellen eines Stapels (SetDeferred()) und zur zeitversetzten Wiederholung einer fehlerhaften Verarbeitung (General.Retry***). Die Verwendung asynchron wartender Ausgabesysteme, wie "XSuiteConveyorResult", ist ebenfalls nicht zulässig.

Verarbeitungsabbruch

Funktionen, die einen Abbruch der Verarbeitung auslösen (SetError(), SetSuspended(), SetCanceled()), führen zu einer direkten Fehlerrückmeldung des Webservices.

Datensicherung

Eine Datensicherung der Stapel findet nicht statt. Bei Bedarf muss eine Datensicherung auf Seiten des aufrufenden Prozesses implementiert werden.