Wiki-Quellcode von Validierungsregeln

Zuletzt geändert von MACH ProForms GmbH am 09.04.2025

Zeige letzte Bearbeiter
1 ## Komplexe Validierungsfälle
2
3 Sollen Eingaben in einem Assistenten geprüft werden, bei denen sich die Prüflogik nicht über einfache [[Konfiguration von Komponenten|Main.05_Assistenten.04_Assistentenbauoberfläche.04_KonfigurationvonKomponenten]] 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.
4
5 Über die Schaltfläche „Regel-Editor für Validierung des Panels“ kann eine solche Validierungsregel hinterlegt werden.
6
7 ![[Ansicht der Schaltfläche für Validierungsregeln|@VailidierungsregelnSchaltfläche.jpg]]
8
9 Dort verbirgt sich zum einen ein schlichter Eingabebereich zum Hinterlegen von einzelnen oder mehreren Validierungsregeln, zum anderen ein Abschnitt zur Definition auftretender Fehlermeldungen.
10
11 ![[Ansicht der Eingabemaske für Validierungsregeln|@VailidierungsregelnEingabemaske.jpg]]
12
13 ### Fehlermeldungen
14
15 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.
16
17 ![[Ansicht der Eingabe von Fehlermeldungen|@VailidierungsregelnFehlermeldung.jpg]]
18
19 ### Validierungsregeln
20
21 Die Validierungsregeln gleichen stark den [[Panel-Aktivierungsregeln|Main.05_Assistenten.04_Assistentenbauoberfläche.07_Regelbau.03_Klickregeln.01_Aktivierungsregeln]]. D. h. sie bestehen auch aus einer Package-Deklaration, ggf. Import-Angaben und den eigentlichen Regeln in der Form:
22
23 ```javascript
24 rule "Regelname"
25 when
26 <Bedingungen>
27 then
28 <Konsequenz>
29 end
30 ```
31
32 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:
33
34 ```javascript
35 rule "Zeilenanzahlbeschränkung"
36 when
37 Panel(identifier == "PANELNNAME",
38 $VARIABLENNAME:getInputComponent("Textfeld2"), $VARIABLENNAME != null, $VARIABLENNAME.getStringValue() !=null,
39 org.apache.commons.lang3.StringUtils.countMatches($VARIABLENNAME.getStringValue(), '\n') > 9)
40 then
41 RuleValidationError error = new RuleValidationError("Begrenzt auf 10 Zeilen");
42 insert(error);
43 end
44 ```
45
46 Der Konsequenzteil enthält dann nur das Erstellen und Registrieren der Fehlermeldung:
47
48 ```javascript
49 RuleValidationError error = new RuleValidationError("<Textschlüssel>");
50 insert(error);
51 ```
52
53 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:
54
55 ```javascript
56 package de.formsolutions.metaform
57 import de.formsolutions.metaform.model.*
58 import function de.formsolutions.metaform.rules.util.DateUtil.isAfter
59 import java.util.Date
60 import java.util.Calendar
61
62 rule "Altersprüfung 18 Jahre"
63 when
64 Panel(identifier == "PANELNAME", $VARIABLENNAME:getInputComponent("KOMPONENTENNAME"), $VARIABLENNAME != null)
65 then
66 Calendar calendar = Calendar.getInstance();
67 calendar.set(Calendar.YEAR, 1999);
68 calendar.set(Calendar.MONTH, 1);
69 calendar.set(Calendar.DAY_OF_MONTH, 1);
70 Date date = calendar.getTime();
71
72 if(isAfter($VARIABLENNAME, date)) {
73 RuleValidationError rve = new RuleValidationError("FEHLERMELDUNG");
74 insert(rve);
75 }
76 end
77 ```
78
79 > {{icon name="far fa-info-circle" size="3"/}} _**Hinweis:**_ Bitte beachten Sie, eine Besonderheit der Validierungsregeln ist, dass nur auf das aktuelle Panel zugegriffen werden kann!
80
81 ### Auswertung der Validierungsregeln
82
83 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.
84
85 ![[Ansicht der Fehlermeldung im Assistenten|@VailidierungsregelnAssistentenFehlermeldung.jpg]]
86
87 ---
88
89 ### Regelvorlagen
90
91 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.
92
93 Folgende Rubriken beinhalten die Regelvorlage:
94
95 * **Datum**
96 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.
97 * **Vorbefüllung**
98 Hier sind Regelvorlagen rund um das Thema Vorbefüllung enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
99 * **Verwendungszweck**
100 Hier sind Regelvorlagen rund um das Thema Verwendungszweck enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
101 * **Berechnung**
102 Hier sind Regelvorlagen rund um das Thema Berechnungen enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
103 * **Sonstiges**
104 Hier sind Regelvorlagen rund um das Thema sonstiges enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Validierungsregelexpertenmodus, Panelregelexpertenmodus und Komponentenregelexpertenmodus.
105 * **Multipanel**
106 Hier sind Regelvorlagen rund um das Thema Multipanel enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
107 * **Dateiformat**
108 Hier sind Regelvorlagen rund um das Thema Dateiformatseinschränkungen enthalten. Wird angezeigt bei Validierungsregelexpertenmodus.
109 * **Regelvorschläge**
110 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.
111
112 ![[Ansicht der Sidebar der Regelvorlagen im Expertenmodus|@Vailidierungsregeln-Regelvorlagen.jpg]]
113
114 Ü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.
115
116 ![[Ansicht einer Regelvorlage einfügen in den Expertenmodus|@Vailidierungsregeln-Regelvorlagen-Einfügen.jpg]]
117
118 Über einen "Rechtsklick" auf eine Regelvorlage erscheint jeweils ein Kontextmenü, mit dem eine Beschreibung der Regelvorlage sowie eine Vorschau des Codes angezeigt werden kann.
119
120 ![[Ansicht der Regelbeschreibung und Regelvorschau der Regelvorlagen|@Vailidierungsregeln-Regelvorlagen-Vorschau.jpg]]
121
122 ---
123
124 ### Inhaltsassistenzsystem
125
126 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.
127
128 > _**Hinweis:**_
129 >
130 > Bitte beachten Sie, das Inhaltsassistenzsystem führt nur neue/geänderte Panel- und Komponentenbezeichnungen auf, wenn der Assistent zuvor gespeichert wurden.
131
132 Die Vorschlagsliste des Inhaltsassistenzsystems beinhaltet Bausteine mit folgenden Kategorien:
133
134 * **snippets**
135 Snippets sind kleine einfügbare Code-Schnipsel die für den Grundaufbau einer Regel benötigt werden.
136 * **Datentyp**
137 Die verschiedenen Datentypen die dem Anwender zur Verfügung stehen.
138 * **Funktion**
139 Eine Java-Methode die zum Beispiel zum Verarbeiten von Feldinputs benötigt werden.
140 * **Regelbau**
141 Schlagwörter und Ausdrücke die in fast allen Regeln verwendet werden und zum Grundstock von Drools gehören.
142 * **Drools**
143 Spezielle Drools-Syntax
144 * **Komponente im Assistent**
145 Zeigt alle Komponenten die Assistenten verbaut sind.
146 * **Komponente aktuelles Panel**
147 Zeigt auf, dass die Komponenten im aktuellen Panel sich befindet.
148 * **Panel im Assistenten**
149 Zeigt alle Panels auf die im Assistenten verbaut sind.
150 * **dieses Panel**
151 Zeigt auf, dass das Panel im aktuellen Panel sich befindet.
152 * **Casting**
153 Umwandlung eines Datentyps in einen anderen.
154
155 ![[Expertenmodus mit der Vorschlagsliste des Inhaltsassistenzsystems|@ValidierungsregelnInhaltsassistentsystem.jpg]]
156
157 #### Suche und Ersetzen
158
159 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.
160
161 ![[Expertenmodus mit Suchen und Ersetzenfunktion|@VailidierungsregelnSucheErsetzen.jpg]]