Domainspezifische Operatoren

in Arbeit...

Das Ziel der Grammatik von openVALIDATION ist es, so natürlich wie möglich zu sein. Um diesem Ziel noch näher zu kommen, gibt es die Möglichkeit domänenspezifische bzw. semantische Operatoren im Regelwerk zu deklarieren.

Ein Beispiel

Schema:

YAML
JSON
YAML
Alter: 0
JSON
{
Alter : 0
}

Regel:

das Alter des Bewerbers MUSS MINDESTENS 18 sein

Die Regel klingt schon recht natürlich, aber nicht ganz. Viel natürlicher könnte die Regel klingen, wenn man diese folgendermaßen ausdrücken würde:

der Bewerber DARF NICHT JÜNGER als 18 sein

Das klingt schon viel natürlicher. Das Problem ist, dass selbst, wenn openVALIDATION einen Alias für den Operator < namens JÜNGER bereitstellen würde, weiß openVALIDATION am Ende nicht, welches Attribut des Schemas für die Vergleichsoperation verwendet werden soll. Das müssen wir openVALIDATION irgendwie mitteilen. Das machen wir, indem wir einen benutzerdefinierten, domänenspezifischen Operator definieren:

Alter und kleiner
als operator jünger
der Bewerber darf nicht jünger als 18 sein

Wir können mit Hilfe eines neuen globalen Elements als operator einen domänenspezifischen bzw. einen semantischen Vergleichsoperator erstellen. Diesen können wir anschließend in unseren Regeln verwenden. In unserem Beispiel haben wir einen neuen Vergleichsoperator namens jünger erstellt. Der Operator selbst besteht aus einem konkreten Vergleichsoperator, nämlich kleiner und dem jeweiligem Attribut des Schemas. In unserem Fall ist es das Attribut Alter . Das Keyword und dazwischen ist optional.

Domänenspezifische oder semantische Operatoren können im Vorfeld beispielsweise zusammen mit den Variablen erstellt werden und dienen anschließend als semantische Grundlage für die eigentlichen Validierungsregeln.