Wiki-Quellcode von Validierungsregeln

Zuletzt geändert von MACH ProForms GmbH am 25.06.2024

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 „Experten-Modus für lokale Regeln“ 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
98 * **Vorbefüllung**
99 Hier sind Regelvorlagen rund um das Thema Vorbefüllung enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
100
101 * **Verwendungszweck**
102 Hier sind Regelvorlagen rund um das Thema Verwendungszweck enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
103
104 * **Berechnung**
105 Hier sind Regelvorlagen rund um das Thema Berechnungen enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
106
107 * **Sonstiges**
108 Hier sind Regelvorlagen rund um das Thema sonstiges enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Validierungsregelexpertenmodus, Panelregelexpertenmodus und Komponentenregelexpertenmodus.
109
110 * **Multipanel**
111 Hier sind Regelvorlagen rund um das Thema Multipanel enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
112
113 * **Dateiformat**
114 Hier sind Regelvorlagen rund um das Thema Dateiformatseinschränkungen enthalten. Wird angezeigt bei Validierungsregelexpertenmodus.
115
116 * **Regelvorschläge**
117 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.
118
119 ![[Ansicht der Sidebar der Regelvorlagen im Expertenmodus|@Vailidierungsregeln-Regelvorlagen.jpg]]
120
121 Ü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.
122
123 ![[Ansicht einer Regelvorlage einfügen in den Expertenmodus|@Vailidierungsregeln-Regelvorlagen-Einfügen.jpg]]
124
125 Über einen "Rechtsklick" auf eine Regelvorlage erscheint jeweils ein Kontextmenü, mit dem eine Beschreibung der Regelvorlage sowie eine Vorschau des Codes angezeigt werden kann.
126
127 ![[Ansicht der Regelbeschreibung und Regelvorschau der Regelvorlagen|@Vailidierungsregeln-Regelvorlagen-Vorschau.jpg]]
128
129 ---
130
131 ### Inhaltsassistenzsystem
132
133 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.
134
135 > _**Hinweis:**_
136 >
137 > Bitte beachten Sie, das Inhaltsassistenzsystem führt nur neue/geänderte Panel- und Komponentenbezeichnungen auf, wenn der Assistent zuvor gespeichert wurden.
138
139 Die Vorschlagsliste des Inhaltsassistenzsystems beinhaltet Bausteine mit folgenden Kategorien:
140
141 * **snippets**
142 Snippets sind kleine einfügbare Code-Schnipsel die für den Grundaufbau einer Regel benötigt werden.
143
144 * **Datentyp**
145 Die verschiedenen Datentypen die dem Anwender zur Verfügung stehen.
146
147 * **Funktion**
148 Eine Java-Methode die zum Beispiel zum Verarbeiten von Feldinputs benötigt werden.
149
150 * **Regelbau**
151 Schlagwörter und Ausdrücke die in fast allen Regeln verwendet werden und zum Grundstock von Drools gehören.
152
153 * **Drools**
154 Spezielle Drools-Syntax
155
156 * **Komponente im Assistent**
157 Zeigt alle Komponenten die Assistenten verbaut sind.
158
159 * **Komponente aktuelles Panel**
160 Zeigt auf, dass die Komponenten im aktuellen Panel sich befindet.
161
162 * **Panel im Assistenten**
163 Zeigt alle Panels auf die im Assistenten verbaut sind.
164
165 * **dieses Panel**
166 Zeigt auf, dass das Panel im aktuellen Panel sich befindet.
167
168 * **Casting**
169 Umwandlung eines Datentyps in einen anderen.
170
171 ![[Expertenmodus mit der Vorschlagsliste des Inhaltsassistenzsystems|@ValidierungsregelnInhaltsassistentsystem.jpg]]
172
173 #### Suche und Ersetzen
174
175 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.
176
177 ![[Expertenmodus mit Suchen und Ersetzenfunktion|@VailidierungsregelnSucheErsetzen.jpg]]