Lade...
 

CX_WEB_SERVICE_MANAGER

CX_WEB_SERVICE_MANAGER

158269

Klassenhierarchie
Beschreibung:

Klasse des WebService-Managers.

Um eine HTTP-Schnittstelle für ClassiX anbieten zu können, wird der WebService-Manager eingesetzt. Dieser wird über die Funktion "Start" gestartet und leitet dann eingehende HTTP-Requests an die entsprechenden Messages weiter. Die Message kann nun aus dem auf dem Stack liegenden CX_HTTP_REQUEST-Objekt die Informationen gewinnen, die sie benötigt, um das benötigte CX_HTTP_RESPONSE-Antwortobjekt zu erzeugen. Um den Webservice über HTTPS zu betreiben, muss useSSL TRUE sein und die Umgebungsvariablen CX_HTTPS_KEY_FILE und CX_HTTPS_CERT_FILE den Dateipfad zu einem gültigen privaten Schlüssel und Zertifikat enthalten.

Um den Namen der anzusprechenden Message zu erhalten, wird der Pfad der angefragten URL durch "_" und die Methode des Requests erweitert. Für ein Beispiel siehe die Dokumentation, der CX_HTTP_REQUEST-Klasse.

Der WebService-Manager ist zusätzlich für den Verbindungsaufbau zum MorphIT-Server zuständig und bietet Methoden an, um den Status dieser Verbindung abzufragen und in gewissem Umfang mit dem MorphIT-Server zu kommunizieren.

Der WebService-Manager ist nicht Teil der ClassiX-Kernfunktionalität und muss in der .ini über die Webservice-Dll cxivsa_EXT_ explizit eingebunden werden. Ansonsten wird GetManager(WEB_SERVICE) keinen Manager finden.

 

MorphIT-Status

Hier sind die Status-Methoden für die MorphIT-Verbindung zum besseren Verständnis in einer Matrix dargestellt. Als Referenz für die unterschiedlichen Zustände, in der sich eine ClassiX-Instanz befinden kann, wird das folgende Bild aus dem MorphIT-Überblick verwendet. Die Farben der zweiten Spalte verdeutlichen, auf welches Element aus der Grafik sich die Zeile bezieht.

Verteilte MorphIT-Anwendung mit Webservices (static-mode)
Verteilte MorphIT-Anwendung mit Webservices (static-mode)
Zustand   HasMorphITConnection IsMorphITClientConnected IsMorphITWebService IsStaticMorphIT

ClassiX-Prozess gerade gestartet
(noch keine Verbindung zum MorphIT-Server)

  FALSE FALSE FALSE FALSE
Auf Vorrat gestartets ClassiX (ohne Client)   TRUE FALSE FALSE TRUE
Webservice MorphIT-Instanz   TRUE FALSE TRUE TRUE
MorphIT-ClassIX-Instanz (Client verbunden)   TRUE TRUE FALSE TRUE

 

Wird der MorphIT-Server nicht im statischen Modus gestartet, dann gibt es folgende mögliche Kombinationen:

Zustand   HasMorphITConnection IsMorphITClientConnected IsMorphITWebService IsStaticMorphIT
ClassiX-Prozess gerade gestartet
(noch keine Verbindung zum MorphIT-Server)
  FALSE FALSE FALSE FALSE
Auf Vorrat gestartetes ClassiX (ohne Client)   TRUE FALSE FALSE FALSE
MorphIT-ClassiX-Instanz (Client verbunden)   TRUE TRUE FALSE FALSE
Natives ClassiX mit WebWidgets   TRUE FALSE FALSE FALSE

 

Wird ein ClassiX nur nativ und ohne MorphIT-Server betrieben (also auch ohne WebWidgets), dann entspricht dies dem ersten Fall (alles FALSE).

 

Methodenverzeichnis (MDI)

Funktion Parameter Rückgabe Kurzbeschreibung

ExtractTextFromHtml
207249

STRING STRING Filtert den eigentlichen Text aus einem HTML-Dokument
URLEncode
192935
STRING STRING Kodiert URLs gemäß dem Percent-Encoding
URLDecode
192935
STRING STRING Dekodiert kodierte URLs
XMLEncode
192935
STRING STRING Kodiert nach XML-Standard Zeichen in Texten zu HTML-Entitäten
XMLDecode
192935
STRING STRING Dekodiert Texte mit HTML-Entitäten, sowie Unicode-Codepoints, zu einem regulären Text
WebService-Funktionalität
Start     Startet den WebService-Manager und bindet ihn an den spezifizierten Port
Stop     Stoppt den WebService-Manager
IsRunning   INTEGER Liefert TRUE, wenn der Server läuft, ansonsten FALSE
SetReceiveMessage INTEGER   Setzt die Nachricht, die gesendet wird, wenn eine Anfrage eingeht. (NULL = keine Nachricht senden)
Die gesendete Nachricht erhält auf dem Stack das CX_HTTP_REQUEST-Objekt. Wird dieses verändert, so erhält auch die eigentliche Nachricht das geänderte Request-Objekt
SetSendMessage INTEGER   Setzt die Nachricht, die vor dem Senden der Antwort gesendet wird. (NULL = keine Nachricht senden)
Die gesendete Nachricht erhält auf dem Stack das CX_HTTP_RESPONSE-Objekt, welches als Antwort zurückgeschickt wird, sobald die Verarbeitung der registrierten Nachricht abgeschlossen ist.
SendRequest
184192
CX_HTTP_REQUEST CX_HTTP_RESPONSE Sendet einen HTTP-Request mit den im Request-Objekt angegebenen Parametern und liefert als Ergebnis ein Response-Objekt.
MorphIT-Funktionalität
ClearMorphITProperties
188438
    Löscht alle gesetzten MorphIT-Properties.
CloseMorphITConnection
186192
    Schließt eine offene Websocket-Verbindung zum MorphIT-Server.
Die Instanz wird weiter vom Launcher geführt und sollte der Server heruntergefahren werden, dann wird die Instanz vom Launcher beendet.
DeregisterMorphITConnection
197830
    Ähnlich wie CloseMorphITConnection mit dem Unterschied, dass der MorphIT-Server die Instanz nach diesem Befehl nicht mehr trackt und eine Launcher-Instanz auch nicht über den Launcher beendet wird.
ExportView
228710
CX_WIDGET, INTEGER CX_JSON_OBJECT Exportiert den aktuellen Zustand der Oberfläche im MorphIT-JSON-Format.
GetMorphITProperty
202211
STRING STRING Liefert den aktuellen Wert einer per SetMorphITProperty gesetzten MorphIT-Property. Ist die Property nicht gesetzt, wird ein leerer String zurückgegeben.
HasMorphITConnection
186192
  INTEGER Liefert TRUE, falls sich ClassiX erfolgreich mit dem MorphIT-Server verbinden und registrieren konnte.
HasMorphITProperty
202211
STRING INTEGER Liefert TRUE, falls die angegebene MorphIT-Property aktuell gesetzt ist.
IsMorphITClientConnected
189884
  INTEGER Liefert TRUE, falls sich ClassiX erfolgreich mit dem MorphIT-Server verbinden und registrieren konnte und sich ein MorphIT-Client (Browser) mit dieser ClassiX-Instanz verbunden hat.
IsMorphITWebService
195636
  INTEGER Liefert TRUE, falls sich der MorphIT-Server im statischen Modus befindet und diese ClassiX-Instanz als WebService-Instanz verwendet wird.
IsStaticMorphIT
195942
  INTEGER Liefert TRUE, falls der Client eine MorphIT-Verbindung hat (HasMorphITConnection) und der MorphIT-Server im statischen Modus läuft.
LaunchDedicatedClassiX
204654
STRING, STRING, STRING, CX_JSON_OBJECT INTEGER Startet eine dedizierte ClassiX-Instanz auf dem vorgegebenen MorphIT-Launcher.
MapMorphITAssetPath
224640
STRING STRING Übersetzt einen lokalen Pfad in einen MorphIT-Server-Pfad
MorphITServerCommand
205954
4.2.0
CX_JSON_OBJECT CX_JSON_OBJECT Sendet einen Server-Befehl zum verbundenen MorphIT-Server und legt die Antwort wieder auf den Stack.
OpenMorphITConnection
186192
INTEGER, STRING, INTEGER, STRING   Öffnet eine Websocket-Verbindung zum MorphIT-Server. Die Parameter definieren den Verbindungsendpunkt.
RemoveMorphITProperty
188438
STRING   Löscht eine gesetzte Property unter dem angegebenen Namen wieder.
RequestMorphITBinding
204654
CX_JSON_OBJECT | NULL STRING Meldet den Start einer dedizierten ClassiX-Instanz beim MorphIT-Server an und benachrichtigt einen evt. verbundenen MorphIT-Client.
SetMorphITProperty
188438
STRING, STRING   Setzt eine Property, welche bei jedem Laden von MorphIT an den Web-Browser übertragen und dort interpretiert werden kann.
SkipNextViewExport
201506
    Überspringt den nächsten Export der Oberfläche zu MorphIT hin.

 

Datenverzeichnis (DDI)
Datenfeld Typ Standartwert Kurzbeschreibung
port INTEGER 443 Legt fest, an welchen Port sich der WebService-Manager binden wird. Dies muss gesetzt werden, bevor "Start" aufgerufen wird.
useSSL CHAR TRUE Wenn TRUE, dann wird der WebService als HTTPS-Service gestartet, ansonsten wird er als HTTP-Service gestartet
receiveMessage INTEGER NULL Die Nachricht, die gesendet wird, wenn eine Anfrage am Webservice eingeht.
sendMessage INTEGER NULL Die Nachricht, die gesendet wird, wenn eine Antwort an den Client gesendet wird.