Startseite / Vorlagenentwicklung / Regeln / Logische Ausdrücke / <AND/>

<AND/>: Und-Verknüpfung in dynamischen Formularen

Das <AND/>-Tag kann im Bereich Wertermittlung der Regeldefinition (oder für die Definition einer Vorbedingung) eingesetzt werden und dient dazu mehrere logische Ausdrücke miteinander zu verknüpfen. Das Ergebnis des zusammengesetzten logischen Ausdrucks ist einen Boolscher Wert, der genau dann wahr ist, wenn alle verknüpften Ausdrücke wahr sind:

<AND>
Ausdruck 1
Ausdruck 2
...
Ausdruck n
</AND>

Mithilfe des <AND/>-Tags können innerhalb einer Regel mehrere Formulareigenschaften geprüft und mit einer Handlungsanweisung verknüpft werden, also z. B.:

  • „Wenn das Formular in der Inhalte-Verwaltung geöffnet UND die Option „diesen Absatz in der Ausgabe generieren“ aktiviert wurde, blende Formular-Inhalt A ein.“ oder
  • „Wenn der Wert der Eingabekomponente größer als 0 UND kleiner als 10 ist, blende einen Hinweis im Formular ein.“

Beispiele

Beispiel: Prüft, ob eine Zahl innerhalb eines definierten Wertebereichs liegt

Das folgende Formular enthält drei Eingabekomponente vom Typ CMS_INPUT_NUMBER:

„st_lowerLimit“ zur Angabe des unteren Grenzwertes eines Wertebereichs

„st_upperLimit“ zur Angabe des oberen Grenzwertes eines Wertebereichs und

„st_value“ zur Angabe eines Wertes, der innerhalb des festgelegten Wertebereichs liegt

Über ein dynamisches Formular soll sichergestellt werden, dass der Redakteur in die Eingabekomponente „st_value“ einen Zahlenwert eingibt, der innerhalb des definierten Wertebereichs liegt. Dies ist gewährleistet, wenn eine der folgenden Bedingungen erfüllt ist:

  • Der Wert in „st_value“ ist gleich dem Wert in „st_lowerLimit“ ODER
  • Der Wert in „st_value“ ist gleich dem Wert in „st_upperLimit“ ODER
  • Der Wert in „st_value“ ist kleiner als der Wert in „st_upperLimit“ UND größer als der Wert in „st_lowerLimit“

Diese Bedingungen werden innerhalb des <WITH/>-Abschnitts der Regel folgendermaßen geprüft:

1) Ist der Wert aus „st_value“ gleich dem Wert aus „st_lowerLimit“?

<EQUAL>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_lowerLimit" name="VALUE"/>
</EQUAL>

2) Ist der Wert aus „st_value“ größer als der Wert aus „st_lowerLimit“ UND kleiner als der Wert aus „st_upperLimit“?
In diesem Fall müssen beide Bedingungen zutreffen, sie werden daher über <AND/> verknüpft:

<AND>
<GREATER_THAN>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_lowerLimit" name="VALUE"/>
</GREATER_THAN>
<LESS_THAN>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_upperLimit" name="VALUE"/>
</LESS_THAN>
</AND>

3) Ist der Wert aus „st_value“ gleich dem Wert aus „st_upperLimit“?

<EQUAL>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_upperLimit" name="VALUE"/>
</EQUAL>

Ist einer dieser drei logischen Ausdrücke wahr, ist die Bedingung (Wert aus „st_value“ muss innerhalb des definierten Wertebereichs liegen) erfüllt. Die Ausdrücke können daher über <OR/> verknüpft werden:

<OR>
<EQUAL>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_lowerLimit" name="VALUE"/>
</EQUAL>

<AND>
<GREATER_THAN>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_lowerLimit" name="VALUE"/>
</GREATER_THAN>
<LESS_THAN>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_upperLimit" name="VALUE"/>
</LESS_THAN>
</AND>

<EQUAL>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_upperLimit" name="VALUE"/>
</EQUAL>
</OR>

Das Ergebnis dieses zusammengesetzten logischen Ausdrucks ist ein Boolescher Wert, der anschließend im <DO/>-Abschnitt mit einer Validierung der Eingabekomponente „st_value“ verknüpft wird. Solange die Bedingung („Wert liegt innerhalb des definierten Wertebereichs“) nicht erfüllt ist, wird der <VALIDATION/>-Abschnitt der Regel ausgeführt und ein Korrekturhinweis eingeblendet. Aufgrund der SAVE-Restriktionsstufe wird außerdem das Speichern des Formulars unterbunden.

...
<RULE>
<WITH>
<OR>
<EQUAL>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_lowerLimit" name="VALUE"/>
</EQUAL>
<AND>
<GREATER_THAN>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_lowerLimit" name="VALUE"/>
</GREATER_THAN>
<LESS_THAN>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_upperLimit" name="VALUE"/>
</LESS_THAN>
</AND>
<EQUAL>
<PROPERTY source="st_value" name="VALUE"/>
<PROPERTY source="st_upperLimit" name="VALUE"/>
</EQUAL>
</OR>
</WITH>
<DO>
<VALIDATION scope="SAVE">
<PROPERTY source="st_value" name="VALID"/>
<MESSAGE lang="*" text="Value is not part of codomain"/>
<MESSAGE lang="DE" text="Wert ist nicht im Wertebereich"/>
</VALIDATION>
</DO>
</RULE>
...

© 2005 - 2024 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2024.4 | Datenschutz