Listen
Sowohl die Validierung einzelner Objekte aus Listen wie auch Listen als Ganzes lässt sich mit Hilfe von openVALIDATION realisieren. Dieser Abschnitt befasst sich mit den Verarbeitungsmöglichkeiten von Listen und stellt die grundlegenden Konzepte und Funktionen auf Listen vor.
Definition eigener Listen
Es gibt insgesamt zwei Arten, wie Listen in openVALIDATION zur Validierung vorliegen. Im ersten Fall wird die Liste als Eingabe über das Schema, wie beispielsweise
definiert. Allerdings gibt es auch die Möglichkeit Listen manuell zu definieren, die beispielsweise immer die gleichen Elemente enthalten. Sei folgendes Schema als Beispiel gegeben:
Angenommen die Eigenschaft Abschluss soll einen der drei Werte Kein
, Bachelor
und Master
enthalten, dann lässt sich beispielsweise eine Variable Abschlüsse
durch
definieren, die diese Werte enthält. Die Zeichen ,
, und
und oder
trennen dabei die einzelnen Elemente der Liste. Anschließend kann eine Regel formuliert werden, die prüft, ob der Abschluss
in Abschlüsse
enthalten ist.
Mehr Informationen zur EINER_VON
-Funktion findest du hier. Analog dazu können Listen auch außerhalb von Variablen, direkt in Regeln definiert werden, zum Beispiel:
Während die Liste beispielsweise nur Wörter oder nur Zahlen enthalten darf. ist ihr Inhalt beliebig wählbar. Das bedeutet, dass sowohl Eigenschaften aus dem Schema also auch andere Variablen als teil der Liste definiert werden können. Die folgende Listendefinition demonstriert das als Beispiel anhand des Schemas
Erstes und letztes Element einer Liste (ERSTE- und LETZTE-Funktion)
Wie die Namen der Funktionen ERSTE
und LETZTE
vermuten lassen, werden sie dazu verwendet auf das jeweils erste bzw. letzte Elemente einer Liste zuzugreifen. Mit ihnen lässt sich beispielsweise folgende Regel auf dem unten aufgeführten Schema definieren, die jedes Mal fehlschlägt, wenn das erste Element der Liste 1
ist:
Des Weiteren ist es möglich, sich mehrere Elemente einer Liste auf einmal zu holen, indem man der Funktion eine Anzahl mitteilt. Zum Beispiel enthält die folgende Variable die Liste der ersten drei Elemente der Liste:
Sollte die Anzahl der gewünschten Elemente die Länge der Liste überschreiten, wird die gesamte Liste zurückgegeben.
Es sei angemerkt, dass die Funktion ERSTE
über mehrere Schlüsselwörter genutzt werden kann. Für ERSTE
gibt es ERSTEN
und ERSTER
und für LETZTE
gibt es LETZTEN
und LETZTER
als zusätzliche Aliase.
Filterung von Listen mit Bedingung (MIT-Funktion)
Bei der Validierung von Daten ist es häufig notwendig nur jene Elemente einer Liste zu betrachten, die eine vorgegebene Bedingung erfüllen. Für genau diesen Anwendungsfall existiert die Funktion MIT
. Sie ermöglicht die Filterung von Listen nach beliebigen Kriterien sowohl auf Listen mit einfachen Inhalten, wie Zahlen, als auch mit komplexen Inhalten, wie Personen, die wiederum eigene Eigenschaften, wie Namen und Alter haben können. Um beispielsweise eine einfache Liste von Zahlen zu filtern, muss man lediglich die zu filternde Liste nach dem Schlüsselwort AUS
angeben, gefolgt vom Schlüsselwort MIT
und der jeweiligen Bedingung. Das folgende Szenario stellt eine solche Filterung beispielhaft auf der Liste Zahlen
dar:
Mithilfe des folgenden Ausdrucks lassen sich beispielsweise die Zahlen von 6 bis 10 aus der Liste filtern und in der Variable MeineListe
verpacken:
Die Filterung von Listen mit komplexen Inhalten gilt als häufiger Anwendungsfall im Rahmen der Validierung. Da sich diese Form der Filterung von der vorangegangen einfacheren Variante unterscheidet, sei zur Orientierung zunächst das folgende Schema gegeben:
Das Schema besitzt eine Liste mit dem Namen Bewerberliste
. Jedes Element (je eins in Zeile 2, 3 und 4) innerhalb dieser ist einheitlich strukturiert und besitzt jeweils einen eigenen Namen
und ein eigenes Alter
. So ließe sich beispielsweise jedes Element als eine Person interpretieren.
Angenommen die Liste der Bewerber soll jetzt nach ihrem Alter
gefiltert werden. Nämlich in der Art, dass lediglich Bewerber genommen werden, die jünger sind als 20. Da feststeht, dass jedes Element eine Eigenschaft Alter
besitzt, kann diese in der Filterung verwendet werden. Einen Ausdruck, der eine solche Filterung durchführt, zeigt dieses Beispiel:
Die Variable Junioren
enthält nun die beiden Elemente mit dem Namen Peter
bzw. Klaus
, da ihre entsprechenden Alter
kleiner sind als 20. Würde man die resultierende Liste als Schema notieren, würde sie samt ihres Inhalts wie folgt aussehen:
Die Reihenfolge der Werte bleibt erhalten.
Diese Liste kann dann zur weiteren Validierung genutzt werden.
ERSTE und LETZTE in Kombination mit Bedingung
Ein weiterer Teil der Funktionalität von ERSTE
und LETZTE
ist die Erweiterungsmöglichkeit durch eine Bedingung. Die Bedingung bezieht sich dabei auf die Elemente der Liste und ermittelt das erste bzw. letzte Element, das die gegebene Bedingung erfüllt. Da sich die beiden Funktionen vom Aufbau nicht unterscheiden, werden die kommenden Beispiele anhand der Funktion ERSTE
vorgestellt. Sei folgendes Schema mit einer Liste von Zahlen gegeben:
Das erste Element ließe sich mit diesem Ausdruck aus der Liste filtern:
Die Variable Favorit
würde in diesem Fall die Zahl 1
enthalten. Wollte man nun anstatt 1
die Zahl 4
aus der Liste extrahieren, kann man die obige Funktion durch eine MIT
-Funktion erweitern. Der resultierende Ausdruck sieht dann wie folgt aus:
Listen mit komplexen Inhalten können auf diese Weise ebenfalls verarbeitet werden. Das folgende Schema zeigt beispielsweise die Liste Bewerberliste
, die eine Menge von Personen enthält, welche wiederum ein Alter
und einen Namen
haben:
Um die Person mit dem Namen
"Klaus" aus der Liste zu extrahieren, könnte man sich an den Altern
der Personen orientieren. Da Klaus die erste Person in der Liste ist, die älter ist als 18, ließe er sich mit folgendem Ausdruck extrahieren:
Filterung von Listen mit komplexen Inhalten nach Eigenschaft
Eine weitere Form der Filterung auf Listen mit komplexen Inhalten ist die Filterung nach Eigenschaften. Konkret bedeutet das, dass man aus einer Liste solcher komplexen Elemente mit eigenen Eigenschaften eine Liste der Eigenschaften erzeugt. Zur Veranschaulichung sei folgendes Schema gegeben:
Die Liste Bewerberliste
ist eine Liste mit drei Personen (Zeilen 2-4), wobei jede Person jeweils die Eigenschaften Name
und Alter
besitzt. Der folgende Ausdruck dient beispielsweise der Filterung nach dem Alter
:
Wie in dem Beispiel zu erkennen ist, erfolgt die Filterung, indem man den Listennamen und die Eigenschaft verbunden mit .
angibt. Die Reihenfolge der Werte bleibt dabei erhalten. Die Variable Altersliste
enthält somit die Liste der Alter
der Personen aus der Bewerberliste
und besitzt folgenden Inhalt:
Quantitative Validierung von Listeninhalten
Bei der Validierung von Listen ist es häufig notwendig quantitative Aussagen über ihren Inhalt treffen zu können. Dafür stellt openVALIDATION die Funktionen EINS_VON
und KEINS_VON
zur Verfügung, mit denen sich für ein Element überprüfen lässt, ob es in der Liste enthalten ist. Als Beispiel wird zunächst das Schema definiert.
Mithilfe der folgenden Regel lässt sich beispielsweise prüfen, ob das Alter
einem Element der Liste Magische_Alter
entspricht:
Diese Regel schlägt also genau dann fehl, wenn das Alter
nicht 65
, 43
oder 21
ist. Ein Spezialfall, bei dem die Funktion EINS_VON
impliziert wird ist die Definition von Listen innerhalb einer Regel. Zum Beispiel sind die folgenden beiden Regeln gleichbedeutend:
Referenz
Zur Verarbeitung von Listen stellt openVALIDATION Funktionen zu Verfügung. Mit ihrer Hilfe lassen sich gezielt Elemente extrahieren und Listen filtern, die dann zur weiteren Validierung genutzt werden können. Folgende Tabelle gibt einen Überblick über alle verfügbaren Funktionen:
Funktion | Beschreibung | Aliase |
ERSTE | Gibt die ersten n Elemente der Liste aus. Die Anzahl n ist dabei optional und wird als 1 interpretiert, sollte keine Angabe gemacht werden. | ERSTER, ERSTEN |
LETZTE | Gibt die letzten n Elemente der Liste aus. Die Anzahl n ist dabei optional und wird als 1 interpretiert, sollte keine Angabe gemacht werden. | LETZTER, LETZTEN |
MIT | Gibt die Liste aller Elemente zurück, die die Bedingung erfüllen. | - |
EINS_VON | Prüft für ein Objekt und eine Liste, ob das Objekt gleich zu mindestens einem Element der Liste ist. | EINER_VON, EINE_VON, EINS_AUS, EINER_AUS, EINE_AUS |
KEINS_VON | Prüft für ein Objekt und eine Liste, ob das Objekt von jedem Element der Liste verschieden ist. | - |
Funktionen müssen immer innerhalb einer Variablen definiert werden.
Last updated