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:
33 Es wird z. B. direkt definiert, dass die Regel nur zutrifft, wenn ein mehrzeiliges Textfeld zu viele Zeilen enthält:
34
35 ```javascript
36 rule "Zeilenanzahlbeschränkung"
37 when
38 Panel(identifier == "PANELNNAME",
39 $VARIABLENNAME:getInputComponent("Textfeld2"), $VARIABLENNAME != null, $VARIABLENNAME.getStringValue() !=null,
40 org.apache.commons.lang3.StringUtils.countMatches($VARIABLENNAME.getStringValue(), '\n') > 9)
41 then
42 RuleValidationError error = new RuleValidationError("Begrenzt auf 10 Zeilen");
43 insert(error);
44 end
45 ```
46
47 Der Konsequenzteil enthält dann nur das Erstellen und Registrieren der Fehlermeldung:
48
49 ```javascript
50 RuleValidationError error = new RuleValidationError("<Textschlüssel>");
51 insert(error);
52 ```
53
54 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:
55
56 ```javascript
57 package de.formsolutions.metaform
58 import de.formsolutions.metaform.model.*
59 import function de.formsolutions.metaform.rules.util.DateUtil.isAfter
60 import java.util.Date
61 import java.util.Calendar
62
63 rule "Altersprüfung 18 Jahre"
64 when
65 Panel(identifier == "PANELNAME", $VARIABLENNAME:getInputComponent("KOMPONENTENNAME"), $VARIABLENNAME != null)
66 then
67 Calendar calendar = Calendar.getInstance();
68 calendar.set(Calendar.YEAR, 1999);
69 calendar.set(Calendar.MONTH, 1);
70 calendar.set(Calendar.DAY_OF_MONTH, 1);
71 Date date = calendar.getTime();
72
73 if(isAfter($VARIABLENNAME, date)) {
74 RuleValidationError rve = new RuleValidationError("FEHLERMELDUNG");
75 insert(rve);
76 }
77 end
78 ```
79
80 > {{icon name="far fa-info-circle" size="3"/}} ***Hinweis:***
81 > Bitte beachten Sie, eine Besonderheit der Validierungsregeln ist, dass nur auf das aktuelle Panel zugegriffen werden kann!
82
83 ### Auswertung der Validierungsregeln
84
85 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
86 angezeigt. Ein Fortsetzen des Ausfüllvorgangs ist nur nach Beseitigung der Fehlerursache möglich.
87
88 ![[Ansicht der Fehlermeldung im Assistenten|@VailidierungsregelnAssistentenFehlermeldung.jpg]]
89
90 ___
91
92 ### Regelvorlagen
93
94 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.
95
96 Folgende Rubriken beinhalten die Regelvorlage:
97
98 - **Datum**<br />
99 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.
100 <br />
101
102 - **Vorbefüllung**<br />
103 Hier sind Regelvorlagen rund um das Thema Vorbefüllung enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
104 <br />
105
106 - **Verwendungszweck**<br />
107 Hier sind Regelvorlagen rund um das Thema Verwendungszweck enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
108 <br />
109
110 - **Berechnung**<br />
111 Hier sind Regelvorlagen rund um das Thema Berechnungen enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
112 <br />
113
114 - **Sonstiges**<br />
115 Hier sind Regelvorlagen rund um das Thema sonstiges enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Validierungsregelexpertenmodus, Panelregelexpertenmodus und Komponentenregelexpertenmodus.
116 <br />
117
118 - **Multipanel**<br />
119 Hier sind Regelvorlagen rund um das Thema Multipanel enthalten. Der Inhalt ändert sich je nach Expertenmodusbereich. Wird angezeigt bei Panelregelexpertenmodus und Komponentenregelexpertenmodus.
120 <br />
121
122 - **Dateiformat**<br />
123 Hier sind Regelvorlagen rund um das Thema Dateiformatseinschränkungen enthalten. Wird angezeigt bei Validierungsregelexpertenmodus.
124 <br />
125
126 - **Regelvorschläge**<br />
127 Dieser Bereich enthält eine Verknüpfung zu dem Form-Solutions Support-Assistenten. Über diesen können Verbesserungsvorschläge sowie Regelvorlagenvorschläge an Form-Solutions versendet werden. Wird angezeigt bei Validierungsregelexpertenmodus, Panelregelexpertenmodus und Komponentenregelexpertenmodus.
128 <br />
129
130 ![[Ansicht der Sidebar der Regelvorlagen im Expertenmodus|@Vailidierungsregeln-Regelvorlagen.jpg]]
131
132 Ü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.
133
134 ![[Ansicht einer Regelvorlage einfügen in den Expertenmodus|@Vailidierungsregeln-Regelvorlagen-Einfügen.jpg]]
135
136 Über einen "Rechtsklick" auf eine Regelvorlage erscheint jeweils ein Kontextmenü, mit dem eine Beschreibung der Regelvorlage sowie eine Vorschau des Codes angezeigt werden kann.
137
138 ![[Ansicht der Regelbeschreibung und Regelvorschau der Regelvorlagen|@Vailidierungsregeln-Regelvorlagen-Vorschau.jpg]]
139
140 ___
141
142 ### Inhaltsassistenzsystem
143
144 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.
145
146 > ***Hinweis:***
147 > Bitte beachten Sie, das Inhaltsassistenzsystem führt nur neue/geänderte Panel- und Komponentenbezeichnungen auf, wenn der Assistent zuvor gespeichert wurden.
148
149 Die Vorschlagsliste des Inhaltsassistenzsystems beinhaltet Bausteine mit folgenden Kategorien:
150
151 - **snippets**<br />
152 Snippets sind kleine einfügbare Code-Schnipsel die für den Grundaufbau einer Regel benötigt werden.
153 <br />
154
155 - **Datentyp**<br />
156 Die verschiedenen Datentypen die dem Anwender zur Verfügung stehen.
157 <br />
158
159 - **Funktion**<br />
160 Eine Java-Methode die zum Beispiel zum Verarbeiten von Feldinputs benötigt werden.
161 <br />
162
163 - **Regelbau**<br />
164 Schlagwörter und Ausdrücke die in fast allen Regeln verwendet werden und zum Grundstock von Drools gehören.
165 <br />
166
167 - **Drools**<br />
168 Spezielle Drools-Syntax
169 <br />
170
171 - **Komponente im Assistent**<br />
172 Zeigt alle Komponenten die Assistenten verbaut sind.
173 <br />
174
175 - **Komponente aktuelles Panel**<br />
176 Zeigt auf, dass die Komponenten im aktuellen Panel sich befindet.
177 <br />
178
179 - **Panel im Assistenten**<br />
180 Zeigt alle Panels auf die im Assistenten verbaut sind.
181 <br />
182
183 - **dieses Panel**<br />
184 Zeigt auf, dass das Panel im aktuellen Panel sich befindet.
185 <br />
186
187 - **Casting**<br />
188 Umwandlung eines Datentyps in einen anderen.
189
190 ![[Expertenmodus mit der Vorschlagsliste des Inhaltsassistenzsystems|@ValidierungsregelnInhaltsassistentsystem.jpg]]
191
192 #### Suche und Ersetzen
193
194 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.
195
196 ![[Expertenmodus mit Suchen und Ersetzenfunktion|@VailidierungsregelnSucheErsetzen.jpg]]