Seitenhierarchie

Suche

Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Diese Seite ist innerhalb der Dokumentation umgezogen worden. Die aktuelle Seite finden Sie hier:

Link zur neuen Seite "RestFull Webservices aus dem Modulsystem ansteuern am Beispiel einer Online-Temperaturabfrage"

Im letzten Tutorial (Anrufe zeitgesteuert mit dem Modulsystem verteilen) haben wir aufgezeigt, wie ein Modul mit einer Zeitsteuerung versehen werden kann. In der Konfiguration des Modules ist es somit möglich einen Zeitraum zu definieren, welcher im Modul abgeprüft wird. Oft reicht es jedoch nicht nur einen Zeitraum anzugeben, sondern es sollen in einer Konfiguration mehrere Zeiträume verarbeitet werden können. Hierfür bietet das Modulsystem die Möglichkeit mit Listen zu arbeiten. Die passenden Komponenten hierzu finden sich in der GUI als Eingabeelemente (z.B TextList oder NumberList) und im Development-Bereich bei den Komponenten (z.B. CreateList, Add oder auch foreach).

 

Bevor wir nun unsere Zeitsteuerung mit Listenfunktionen erweitern, behandeln wir erst einmal den grundlegenden Aufbau und die Möglichkeiten von Listen im Allgemeinen.

Komponenten für RestFull Webservices

CreateHttpUrlWithParams

Mit dieser Komponente kann, für eine folgende HTTP-Abfrage, die benötigte URL mit Parametern zusammengesetzt werden. Die Parameter müssen vorher in einer Variable vom Typ MAP gesammelt werden.

Eigenschaften der Komponente:

  • requestUrl: URL des Webservices

  • params: Variable vom Typ MAP mit Parametern

Rückgabe der Komponente: 

  • createdUrl: Rückgabe der kompletten URL als Text

Image Removed

HttpRequest

Mit dieser Komponente kann eine HTTP-Abfrage durchgeführt werden. Als HTTP-Methoden stehen GET, POST, PUT, PATCH und DELETE zur Auswahl. Die Abfrage wird synchron durchgeführt und kann individuelle Daten und Header enthalten. Zusätzlich lassen sich Zugangsdaten für eine HTTP-Authentifizierung mitsenden. 

Eigenschaften der Komponente:

  • Method: HTTP-Methode

  • URL: Ziel-URL

  • Data to send: Daten die übermittelt werden sollen
  • Username: Benutzername für HTTP-Authentifizierung
  • Password: Passwort für HTTP-Authentifizierung
  • httpHeaders: Variable vom Typ MAP mit Header-Daten

Rückgabe der Komponente: 

  • Response stream: Inhalt der HTTP-Antwort

  • responseHeaders: Header der HTTP-Antwort
  • HTTP status code: HTTP-Statuscode als Nummer
Image Removed

ReadFromStream

Mit dieser Komponente kann ein Daten-Stream in einen Text umgewandelt werden. Für die Umwandlung muss das Encoding (Zeichenkodierung) festgelegt werden.

Eigenschaften der Komponente:

  • Read from: Stream der umgewandelt werden soll

  • Encoding: Bestimmt mit welcher Encoding der Text gewandelt wird

Rückgabe der Komponente: 

  • Resulting text: Rückgabe des Textes

Image Removed

JsonToObject

Wandelt einen Text, der JSON 

Eigenschaften der Komponente:

  • Read from: Stream der umgewandelt werden soll

Rückgabe der Komponente: 

  • Resulting text: Rückgabe des Textes

Image Removed

JSON

Die JavaScript Object Notation, kurz JSON, ist ein kompaktes Datenformat in einer einfach lesbaren Textform zum Zweck des Datenaustauschs zwischen Anwendungen (Quelle: Wikipedia). Viele moderne Webservices verwenden JSON zum Austausch von Informationen. Das STARFACE Modulsystem ermöglicht es, JSON-Objekte in List und Map-Objekte zu wandeln, welche mit weiteren Komponenten verarbeitet werden können.

Aufbau eines JSON-Objektes, am Beispiel eines Büro-Objektes

Codeblock
languagejs
titleBüro-Objekt
{
	"Raum 1": [{
			"Platz": "1"
			"name": "Niklas Held",
		}, {
			"Platz": "2"
			"name": "Miriam Laup",
		}
	],
	"Raum 2": [{
			"Platz": "1"
			"name": "Marcel Grachner",
		}, {
			"Platz": "2"
			"name": "Uschi Meier",
		}, {
			"Platz": "3"
			"name": "Franz Diertle",
		}
	],
	"Küche": ["Stuhl 1", "Stuhl 2"]
}

Das Objekt basiert darauf, dass jeder Raum eine Eigenschaft ist,
welche entweder ein weiteres Objekt (siehe Raum 1) oder eine Liste (Küche) enthält.
Die Wandlung dieses Objektes im Moduldesigner ergibt folgendes Ergebnis:

MAP
Raum 1
MAP
Platz1
nameNiklas Held

... weitere MAP für Platz 2

Raum 2... 3 MAP für Platz 1 - 3
Küche
Liste
Stuhl 1
Stuhl 2

 

 

Listen sind Sammlungen von einzelnen Elementen, welche in einer indizierten Liste gespeichert werden. Man kann sich dies wie eine zweispaltige Tabelle vorstellen, die in der ersten Spalte die Zeilennummer und in der zweiten Spalte die Daten enthält.

Exemplarische Aufbau eines JSON objects in STARFACE Module Variablen

Index Inhalt als Text
0Text 0
1Text 1
2Text 2
3Text 3

Bearbeitungsmöglichkeiten von Listen

Zum Erstellen, Bearbeiten und Auslesen einer Liste, stellt der Module Designer mehrere Komponenten bereit.

Erstellen:

  • CreateList - Erstellt on-the-fly eine leere Liste
  • TextList - Ermöglicht eine Liste von Texten in der GUI des Moduls
  • NumberList - Ermöglicht eine Liste von Nummern in der GUI des Moduls

...

  • Add - Fügt einen neuen Eintrag am Ende der Liste hinzu
  • Remove - Entfernt einen bestimmten Eintrag in einer Liste
  • Sort - Sortiert eine Liste neu
  • Reverse - Kehrt alle Elemente einer Liste um

...

  • Get - Auslesen eines Elementes, welches sich an einer bestimmten Position der Liste befindet
  • Size - Gibt die Anzahl der Elemente (Zeilen) einer Liste zurück
  • Contains - Prüft, ob die Liste einen bestimmten Wert enthält

Durchlaufen von Listen mit einer Programmschleife

Bei der Verwendung von Listen besteht schnell der Bedarf, dass mehrere Elemente einer Liste mit den immer gleichen Komponenten bearbeitet, ausgelesen oder verglichen werden sollen. Für diesen Fall existiert im Module Designer die Komponente foreach (List). Dieser Komponente kann eine Liste übergeben werden welche dann Zeile für Zeile ausgelesen wird und jeder Eintrag mit individuellen Komponenten verarbeitet werden kann. Die gewünschten Komponenten müssen hierzu unter dieser Komponente eingerückt platziert werden. Falls in der foreach-Schleife eine Überprüfung stattfindet, welche weitere Durchläufe unnötig macht, kann sie mit break beendet werden. Innerhalb der Einrückung stehen automatisch die Variablen foreach_index und foreach_entry zur Verfügung, welche den aktuellen Index (Zeile) und den Wert dieser Zeile enthalten.

Ablaufdiagramm des Beispielmoduls

Image Removed

Anleitung zur Erstellung des Beispielmoduls

Zur Umsetzung unseres Beispieles verwenden wir die Komponenten CurrentDateTime, MatchDateTimeInterval, GetCaller und CallPhoneNumber.

Hinweis: Einige der Komponenten findet ihr erst, wenn im Modul Designer der Expert mode im Bereich Components aktiviert ist. Die Beschreibung zu GetCaller und CallPhoneNumber findet ihr unter Anrufe mit dem Modulsystem verteilen (CallPhoneNumber). Die Beschreibung zu CurrentDateTime und MatchDateTimeInterval findet ihr unter Anrufe zeitgesteuert mit dem Modulsystem verteilen.

 

 

...