Wiki-Quellcode von Fallunterscheidung


Zeige letzte Bearbeiter
1 {{figure image="workflow_node_switch_sample_config_en.png" width="600"}}
2 Beispielskonfiguration für eine Fallunterscheidung. Hier wird ein Auswahlfeld gegen mehrere mögliche Werte geprüft und jeweils andere Aktionen ausgeführt. Ist keiner der konfigurierten Werte ausgewählt, werden die Aktionen ganz link im Rückfallzweig ausgeführt.
3 {{/figure}}
4
5 Seit Version {{version major="7" minor="1"/}}
6
7 Mit Steuerelementen vom Typ //Fallunterscheidung// kann der Ablauf der Verarbeitung in Abhängigkeit von Formularwerten und andere Inhalten durch die Verwendung von [[Platzhaltern>>doc:Formcycle.UserInterface.Variables]] beeinflusst werden. Diese Elemente erlauben es, den Workflow in mehrere Pfade aufzuteilen, je nachdem, ob ein konfigurierter Wert bestimmten Vergleichswerten entspricht.
8
9 Die Fallunterscheidung und die [[Bedingung>>doc::Formcycle.Designer.Workflow.FlowControl.Condition]] sind sehr ähnlich. Beide können genutzt werden, um den Workflow zu verweigen. Die //Bedingung// eignet sich, wenn eine einzelne Bedingung auf ihren Wahrheitswert geprüft werden soll. Die //Fallutnerscheidung// erhöht die Lesbarkeit des Workflows, wenn etwa ein bestimmter Wert gegen viele Möglichkeiten verglichen werden soll.
10
11 Beispielsweise kann die Fallunterscheidung genutzt werden, um den Wert eines Auswahlfelds //selAktivitaet// zu prüfen und damit auf die Fälle //Buch lesen//, //Rad fahren//, //Mittagsschlaf// etc. unterschiedlich zu reagieren.
12
13 === Konfiguration ===
14
15 {{figure image="workflow_node_switch_config_switch_value_en.png" width="400"}}
16 Durch Klick auf das Kästchen mit dem kleinen Fragezeichen öffnet sich die Konfiguration für den Prüfwert. Hier wird der Wert eingetragen, der gegen die einzelnen Fälle geprüft werden soll.
17 {{/figure}}
18
19 {{figure image="workflow_node_switch_config_case_value_en.png" width="400"}}
20 Durch Klick auf das Kästchen eines der konfigurierten Fällen öffnet sich die Konfiguration für den Testwert. Hier wird der Wert eingetragen, gegen den der Prüftwert der Falllunterscheidung verglichen wird. Zudem wird ausgewählt, auf welche Art und Wert beide Werte verglichen werden. Für fortgeschrittene Anwendungsfälle können auch mehrere Testwert konfiguriert werden.
21 {{/figure}}
22
23 Ein Klick auf das Kästchen mit dem kleiner Fragezeichen öffnet die Konfiguration für den zu prüfenden Wert. Hier wird der **Prüfwert** eingetragen, auf welche die Fallunterscheidung angewandt werden soll, der also gegen die verschiedenen Fälle geprüft wird.
24
25 Ein Klick auf eines der Kästchen der einzelnen Fälle öffnet die Konfiguration für diesen Fall. Hier wird der **Testwert** eingetragen. Zudem wird ausgewählt, wie der Testwert gegen den Prüfwert verglichen wird. Standardmäßig wird auf Gleichheit geprüft, es sind aber auch andere Vergleiche wie etwa //größer gleich// oder //ungleich// möglich. Weitere Fälle werden durch Klick auf das Plus-Symbol ({{icon name="plus"/}}) hinzugefügt, bestehende Fälle durch Klick auf das Papierkorb-Symbol ({{icon name="trash"/}}) gelöscht. Zudem ist es via Drag&Drop möglich, die Reihenfolge der einzelnen Fälle zu ändern.
26
27 Bei Bedarf kann der Prüfwert auch gegen mehrere Testwerte verglichen werden (Mehrfachbedingung). Die Konfiguration ist hierbei analog zur Bedingung, siehe die [[Hilfeseite zur Bedingung>>doc::Formcycle.Designer.Workflow.FlowControl.Condition]] für nähere Informationen.
28
29 Für jeden der einzelnen Fälle können dann Workflow-Aktionen hinzugefügt werden, welche in diesem Fall ausgeführt werden soll. Schließlich gibt es ganz links noch den Rückfallzweig. Hier können die Aktionen eingefügt werden, welche ausgeführt werden sollen, falls keiner der Fälle zutrifft.
30
31 === Ausführung ===
32
33 Manchmal ist es notwendig, genau zu wissen, was bei der Fallunterscheidung passiert. Konkret läuft die Ausführung der Fallunterscheidung wie folgt ab:
34
35 * Vergleiche den Prüfwert mit den Testwerten der einzelnen Fälle. Hieraus ergibt sich eine Liste aller zutreffenden Fälle.
36 * Falls die Liste der zutreffenden Fälle nicht leer ist
37 ** Gehe von links nach rechts (wie im Workflow konfiguriert) die einzelnen Fälle durch und führe die im jeweiligen Fall konfigurierten Aktionen aus.
38 ** Endet eine Aktion in einem unbehandelten Fehler, werden die verbleibenden Fälle nicht mehr ausgeführt und der Fehler nach oben weitergereicht.
39 * Falls die Liste der zutreffenden Fälle leer ist:
40 ** Führe die Aktionen des Rückfallzweigs aus.
41
42 Inbesonders bedeutet dies also, dass wenn mehrere Fälle gleichzeitig zutrefen, dann //alle// Fälle ausgeführt werden ~-~- und zwar geordnet von links nach rechts wie im Workflow konfiguriert.