Zum Inhalt

Web Services Definitionen

Die Verarbeitung von Web Services ist je nach Aufruftyp unterschiedlich. Es gibt folgende Typen:

  • Aufruf eines Web Service Makros
  • Aufruf eines Remote Procedure Calls (RPC)

Aufruf eines Web Request Makros

Solche Aufrufe werden als HTTP Requests ausgefführt. Ein Beispiel ist im Folgenden aufgeführt:

GET /SSD/RequestName/Add1/Add2 HTTP1.1 Host: services.customer.com Content-Length: 39

Hier wird in der URL "SSD" angegeben, was bedeutet, dass das Modul SSD (Reporting) angesprochen wird. Anschliessend ist "RequestName" der Name des dort definierten Web Requests, der aufgerufen werden soll. Alle weiteren Teile der URL werden vom Request interpretiert. In diesem Beispiel wird ein JSON Objekt als Daten mitgegeben. Dies hängt davon ab, welche Daten der angesprochene Request benötigt.

Möglich sind folgende Operationen (welche der angesprochene Request dann verstehen muss): GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE.

Es sind beliebige weitere Header Einträge zulässig. Der angesprochene Request kann diese bei der Verarbeitung berücksichtigen.

Als Antwort wird ein entsprechendes HTTP Paket zurückgeschickt, welches der aufrufende Server entsprechend behandeln muss.

Aufruf eines Interface Requests

Eine zweite Möglichkeit besteht darin, Interface Requests abzusetzen. Es ist so möglich, Verarbeitungrn an einen Server auszulagern. Das Ende der Veraarbeitung kann, muss aber nicht, abgewartet werden.

Solche Aufrufe werden mit dem Keyword "RPC" gemacht, wie in folgendem Beispiel.

GET /RPC HTTP1.1 Host: services.customer.com Content-Length: 39

Die Steuerung der Operation geschieht zum Teil über Headerinformationen und zum anderen Teil über die Nutzdaten.

Headereintrag Datentyp Beschreibung
SMTRequestType intteger 0: SSD_RequestType_Custom 1: SSD_RequestType_HTTP 2: SSD_RequestType_CallMacro 3: SSD_RequestType_Report 4: SSD_RequestType_None
SMTRequestDataType intteger 0: SSD_RequestDataType_None 1: SSD_RequestDataType_JSON 2: SSD_RequestDataType_XML 3: SSD_RequestDataType_Binary 4: SSD_RequestDataType_HTTP 5: SSD_RequestDataType_Text
SMTWaitOnRequestCompletion intteger Optional: Wenn vorhanden und <> 0, dann wird das Ende der Verarbeitung abgewartet und ein allfälliges Resultat zurückgeschickt.
SMTWaitOnRequestCompletionTimeout intteger Optional, Default = 20 Zeit in Sekunden, die maximal für die Verarbeitung gewartet werden soll. Wir das Timeout überschritten, dann wird die Fehlermeldung 408 Request Timeout zurückgegeben.
SMTReferenceRequestID intteger Optional: Soll der Datensatz als Zusatzdatensatz gespeichert werden, dann kann hier eine ID des Hauptrequests angegeben werden.
SMTMacroName string Bei SSD_RequestType_CallMacro: Name des Makros, welches ausgeführt werden soll.
SMTRemoteHTTPServer string Optional: Bei HTTP Requests kann hier angegeben werden, dass der Request an einen anderen Server gesendet werden soll (nur SSD_RequestType_HTTP).
SMTRemoteHTTPPort integer Optional: Bei HTTP Requests kann hier angegeben werden, dass der Request an einen Port gesendet werden soll (nur SSD_RequestType_HTTP).
SMTRemoteHTTPUseSSL integer Optional: 1 = Es soll für die Anfrage SSL verwendet werden (nur SSD_RequestType_HTTP).
SMTExecuteOnServer string Optional: Der Request soll ausschliesslich auf dem angegebenen Server ausgeführt werden
SMTHandleOpusError integer 0: (default) Bei einem Fehler wird die Verarbeitung abgebrochen und kein Resultat zurückgesendet 1: Bei einem Fehler wird die Verarbeitung abgebrochen und das Log zurückgeschickt 2: Bei einem Fehler soll der Debugger auf dem Server stehen bleiben
SMTExecutionDateTime string Optional: Datum und Zeit, nach welchem der Request ausgeführt werden soll. Die Angabe muss im ISO Format gemacht werden.

Folgende Kombinationen von RequestType unf DataType sind in der Standardverarbeitung vorgesehen (die anderen werden nicht verarbeitet):

RequestType DataType Bemerkung ResultType ResultDataType
HTTP HTTP In den Daten ist ein vollständiger HTTP Request vorhanden, der so verarbeitet wird, wie wenn er direkt über das Internet aufgerufen würde. HTTP HTTP
CallMacro beliebig Das Makro wird ausgeführt und es ist selber für die Interpretation der Daten zuständig. beliebig beliebig
Report JSON In den Daten ist ein JSON Objekt mit den Angaben zum Aufruf eines Reports. Dieses Objekt hat folgende Elemente: | Name | Inhalt | | --- | --- | | ReportID | ID des aufzurufenden Reports | | IDList | Array mit ID's, welche dem Report übergeben werden sollen | | DatasetID | Datensatztyp als welche die ID's interpretiert werden sollen. | | OutputType | 0: OutputType_Default (rtf für Word, xml für Excel) **Ausgabetypen für Reports vom Typ Word** 1: OutputType_RTF 2: OutputType_DOC 3: OutputType_DOCX 7: OutputType_HTML 8: OutputType_PDF 9: OutputType_TXT 13: OutputType_PDFA **Ausgabetypen für Reports vom Typ Excel** 4: OutputType_XML 5: OutputType_XLS 6: OutputType_XLSX 8: OutputType_PDF 9: OutputType_TXT 10: OutputType_CSV 13: OutputType_PDFA **Ausgabetypen für Reports vom Typ Email** 11: OutputType_EML 12: OutputType_EMLCheck **Wenn kein Resultat zurückgegeben werden soll** 99: OutputType_None | | UseSignature | | | SignatureID | | | SignaturePictureID | | | SignatureLanguageID | | | DoArchive | | | AdditionalData | Objekt mit Elementen, die entweder integer (Prefix "i_"), string (Prefix "s_") oder datetime (Prefix "t_") sind. z.B. {"s_MyText": "blablabla", "i_MyValue":34, "t_MyDate":"2019-08-01T12:00:00.000"} Diese Werte werden dem Report zusätzlich übergeben. | Report Binary
Custom beliebig Der Request wird in der Datenbank eingetragen aber es findet keine Verarbeitung statt. beliebig beliebig
None beliebig Der Request wird in der Datenbank eingetragen aber es findet keine Verarbeitung statt. kein kein