Child pages
  • Mit Listen arbeiten und Zeitsteuerung Pro
Suche

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.

Beschreibung der Listen Komponenten

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 einer TextList:

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


Bearbeiten:

  • 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


Auslesen:

  • 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

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.

 

 

Festlegen der Grundeinstellungen, wie Name und Hersteller. Konfiguration als Modul vom Typ Standard.
Anlegen eines neuen Reiters namens Einstellungen im Bereich GUI. Per Drag&Drop kann nun ein Feld vom Typ TextList namens Zeitraumliste angelegt werden, in welches später die Zeiträume eingetragen werden können.
Danach benötigen wir noch zwei Felder vom Typ TextInput. Das Erste bekommt den Namen Zielrufnummer 1 und das Zweite den Namen Zielrufnummer 2.
Unter dem Bereich Development legen wir nun eine neue Funktion mit der Bezeichnung start an.
In dieser Funktion verwenden wir zuerst die Komponente GetCaller, welche wir bei den Komponenten unter dem Bereich Call finden. Des Weiteren fügen wir die Komponente CurrentDateTime hinzu, welche uns den aktuellen Zeitpunkt zurück gibt.
Im nächsten Schritt fügen wir die Komponente foreach (List) hinzu, welche die Zeitraumliste aus der GUI durcharbeitet.
Unter der foreach-Schleife führen wir nun mit der Komponente MatchDateInterval die Überpüfung des einzelnen Wertes aus der Variable foreach_entry durch.
Die Rückgabe der Komponente MatchDateInterval können wir nun mit einer bedingten Anweisung (if) abfragen und wenn eine Übereinstimmung gefunden wurde vermitteln wir das Telefonat mitCallPhoneNumber an die Zielrufnummer 1 weiter. Danach können wir das Modul an dieser Stelle mit exit beenden.
Zuletzt fügen wir einen zweite Komponente CallPhoneNumber ein, welche im Fall keiner einzigen Übereinstimmung den Ruf an die Zielrufnummer 2 vermittelt. Zuletzt beenden wir das Modul auch an dieser Stelle.
  
Konfiguration des Modules 
In der Konfiguration des Modules finden wir in unserem Reiter Einstellungen die Zeiträume und Zielrufnummern als Eingabefelder.