Validierungsregeln
Komplexe Validierungsfälle
Sollen Eingaben in einem Assistenten geprüft werden, bei denen sich die Prüflogik nicht über einfache Konfiguration von Komponenten bewerkstelligen lässt, kommen Validierungsregeln ins Spiel. Sie ermöglichen es u.a. mehrere Eingabefelder in Bezug zu setzen, komplexere Muster zu prüfen, Prüfziffern zu berechnen oder auch Datumseingaben genauer zu überprüfen.
Über die Schaltfläche „Experten-Modus für lokale Regeln“ kann eine solche Validierungsregel hinterlegt werden.
Dort verbirgt sich zum einen ein schlichter Eingabebereich zum Hinterlegen von einzelnen oder mehreren Validierungsregeln, zum anderen ein Abschnitt zur Definition auftretender Fehlermeldungen.
Fehlermeldungen
Die Definition der Fehlermeldungen erfolgt über die Angabe eines Textschlüssels, um bei zukünftigen Softwareversionen eine sprachneutrale Validierung mit sprachspezifischen Fehlermeldungen versehen zu können.
Validierungsregeln
Die Validierungsregeln gleichen stark den Panel-Aktivierungsregeln. D. h. sie bestehen auch aus einer Package-Deklaration, ggf. Import-Angaben und den eigentlichen Regeln in der Form:
when
<Bedingungen>
then
<Konsequenz>
end
Die Bedingungen können dabei wie bei den Aktivierungsregeln verstanden werden: Es wird z. B. direkt definiert, dass die Regel nur zutrifft, wenn ein mehrzeiliges Textfeld zu viele Zeilen enthält:
when
Panel(identifier == "PANELNNAME",
$VARIABLENNAME:getInputComponent("Textfeld2"), $VARIABLENNAME != null, $VARIABLENNAME.getStringValue() !=null,
org.apache.commons.lang3.StringUtils.countMatches($VARIABLENNAME.getStringValue(), '\n') > 9)
then
RuleValidationError error = new RuleValidationError("Begrenzt auf 10 Zeilen");
insert(error);
end
Der Konsequenzteil enthält dann nur das Erstellen und Registrieren der Fehlermeldung:
insert(error);
Alternativ kann der Bedingungsteil dazu genutzt werden, lediglich die zu prüfenden Felder zugreifbar zu machen und im Konsequenzteil die eigentliche Prüfung durchzuführen:
import de.formsolutions.metaform.model.*
import function de.formsolutions.metaform.rules.util.DateUtil.isAfter
import java.util.Date
import java.util.Calendar
rule "Altersprüfung 18 Jahre"
when
Panel(identifier == "PANELNAME", $VARIABLENNAME:getInputComponent("KOMPONENTENNAME"), $VARIABLENNAME != null)
then
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 1999);
calendar.set(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date date = calendar.getTime();
if(isAfter($VARIABLENNAME, date)) {
RuleValidationError rve = new RuleValidationError("FEHLERMELDUNG");
insert(rve);
}
end
Hinweis: Bitte beachten Sie, eine Besonderheit der Validierungsregeln ist, dass nur auf das aktuelle Panel zugegriffen werden kann!
Auswertung der Validierungsregeln
Die Validierungsregeln werden immer dann ausgewertet, wenn man auf dem betroffenen Panel "weiter" klickt. Sollte ein Validierungsfehler auftreten, so verbleibt man auf demselben Panel und der Fehlertext wird oben auf der Seite angezeigt. Ein Fortsetzen des Ausfüllvorgangs ist nur nach Beseitigung der Fehlerursache möglich.
Regelvorlagen
Jeder Expertenmodus (Validierungsregelbereich, Panelregelbereich, Komponentenregelbereich) enthält eine Sidebar die sogenannte "Regelvorlagen" für den Assistentenersteller bereithält. Über die Schaltfläche mit dem Pfeil öffnet sich die Sidebar. In den jeweiligen Rubriken sind thematisch Regelvorlagen eingepflegt.
Folgende Rubriken beinhalten die Regelvorlage:
- Datum
Hier sind Regelvorlagen rund um das Thema Datumsberechnung und Datumsvalidierung enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Validierungsregelexpertenmodus, Panelregelexpertenmodus und Komponentenregelexpertenmodus. - Vorbefüllung
Hier sind Regelvorlagen rund um das Thema Vorbefüllung enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus. - Verwendungszweck
Hier sind Regelvorlagen rund um das Thema Verwendungszweck enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus. - Berechnung
Hier sind Regelvorlagen rund um das Thema Berechnungen enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus. - Sonstiges
Hier sind Regelvorlagen rund um das Thema sonstiges enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Validierungsregelexpertenmodus, Panelregelexpertenmodus und Komponentenregelexpertenmodus. - Multipanel
Hier sind Regelvorlagen rund um das Thema Multipanel enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus. - Dateiformat
Hier sind Regelvorlagen rund um das Thema Dateiformatseinschränkungen enthalten. Wird angezeigt bei Validierungsregelexpertenmodus. - Regelvorschläge
Dieser Bereich enthält eine Verknüpfung zu dem MACH formsolutions Support-Assistenten. Über diesen können Verbesserungsvorschläge sowie Regelvorlagenvorschläge an MACH ProForms GmbH versendet werden. Wird angezeigt bei Validierungsregelexpertenmodus, Panelregelexpertenmodus und Komponentenregelexpertenmodus.
Über einen "Linksklick" auf eine Regelvorlage kann diese in den Expertenmodus eingefügt werden. Hierbei ordnet sich die Regelvorlage bei bereits bestehenden Code an die entsprechende Stelle an. Imports werden beispspielsweise an den Anfang des bestehenden Codes hinzugefügt.
Über einen "Rechtsklick" auf eine Regelvorlage erscheint jeweils ein Kontextmenü, mit dem eine Beschreibung der Regelvorlage sowie eine Vorschau des Codes angezeigt werden kann.
Inhaltsassistenzsystem
Der Expertemodusbereich der Validierungsregeln ist mit einem sogenannten Inhaltsassistenzsystem ausgestattet. Dieser dient zur Erleichterung der manuellen Eingabe eines erzeugten bzw. neu erstellten Codes mit Hilfe integrierten Bausteine in einer Vorschlagsliste mittels eines Klicks einzufügen. Weiterhin werden alle vom Benutzer definierten Bezeichnungen im Assistenten über die Vorschlagsliste angezeigt.
Hinweis:
Bitte beachten Sie, das Inhaltsassistenzsystem führt nur neue/geänderte Panel- und Komponentenbezeichnungen auf, wenn der Assistent zuvor gespeichert wurden.
Die Vorschlagsliste des Inhaltsassistenzsystems beinhaltet Bausteine mit folgenden Kategorien:
- snippets
Snippets sind kleine einfügbare Code-Schnipsel die für den Grundaufbau einer Regel benötigt werden. - Datentyp
Die verschiedenen Datentypen die dem Anwender zur Verfügung stehen. - Funktion
Eine Java-Methode die zum Beispiel zum Verarbeiten von Feldinputs benötigt werden. - Regelbau
Schlagwörter und Ausdrücke die in fast allen Regeln verwendet werden und zum Grundstock von Drools gehören. - Drools
Spezielle Drools-Syntax - Komponente im Assistent
Zeigt alle Komponenten die Assistenten verbaut sind. - Komponente aktuelles Panel
Zeigt auf, dass die Komponenten im aktuellen Panel sich befindet. - Panel im Assistenten
Zeigt alle Panels auf die im Assistenten verbaut sind. - dieses Panel
Zeigt auf, dass das Panel im aktuellen Panel sich befindet. - Casting
Umwandlung eines Datentyps in einen anderen.
Suche und Ersetzen
Mittels der Tastenkombination Strg + F wird im Expertenmodus die sogenannte „Suche und Ersetzen-Funktion“ eingeblendet. Über die Felder „Search for“ können nach bestimmten Wörtern im Code gesucht und mittels des Felds „Replace with“ ersetzt werden.