Startseite / Vorlagenentwicklung / Regeln / Wertermittlung <WITH/>

Werte ermitteln, die innerhalb des aktuellen Kontextes liegen

Jede Regel ermittelt (im aktuellen Kontext der Regelausführung) zunächst einen Wert, der beispielsweise auf einer oder auch mehreren Eigenschaften des aktuellen Formulars („In welcher Redaktionssprache wird das Formular bearbeitet?“) oder eines einzelnen Formularelements („Ist der Wert der Komponente NULL?“) basieren kann. Die gewünschten Eigenschaften werden in der Wertermittlung der Regeldefinition berücksichtigt.

Eine Wertermittlung wird innerhalb eines <WITH/>-Abschnitts definiert. Dieser Abschnitt muss vor den Tags, die eine Handlungsanweisung einleiten, definiert werden. Sofern für die Regel eine Vorbedingung definiert ist, wird die Wertermittlung nach der Vorbedingung definiert.

Dabei gilt für die Definition einer Wertermittlung:

  • Für jede Regel muss eine Wertermittlung definiert werden.
  • Im einfachsten Fall kann der Vorlagenentwickler eine Konstante (<TRUE/>, <FALSE/>, <TEXT/>, <NUMBER/>) innerhalb des <WITH/>-Abschnitts definieren.
  • Die Wertermittlung kann aber auch deutlich komplexer ausfallen und sich auf Werte oder Eigenschaften des Formulars oder eines Formularelements beziehen. Innerhalb der Tags zur Wertermittlung ist dann die Angabe eines <PROPERTY/>-Tags notwendig. Über:
    können weitere Werte abgeleitet werden. So kann der Wert der Eingabekomponente beispielsweise gegen bestimmte reguläre Ausdrücke oder gegen einen Vergleichswert geprüft werden.
  • Das Ergebnis der Wertermittlung (Boolescher Wert, Text, Datum,...) wird vom FirstSpirit-Framework bei der Regelausführung weitergereicht und kann vom Regel-Entwickler mit der passenden Handlungsanweisung verknüpft werden.
  • Handelt es sich beim Ergebnis der Wertermittlung um einen Booleschen Wert, kann eine Negation über das Tag <NOT/> erreicht werden, und zwar in Verbindung mit

Werte ermitteln, die außerhalb des aktuellen Kontextes liegen

Neben Werten, die im aktuellen Kontext einer Regelausführung verfügbar sind, die also das aktuelle Formular bzw. FirstSpirit-Element betreffen, in dem die Regel ausgeführt wird, kann auch auf FirstSpirit-Elemente zugegriffen werden, die außerhalb des aktuellen Kontextes liegen.

Damit können Informationen aus anderen Formularen, z. B.:

  • Formulardaten aus einer anderen Seite,
  • aus Metadaten-Formularen oder
  • aus den Projekteinstellungen

geholt werden.

Diese Wertermittlung wird über das <SCHEDULE/>-Tag mithilfe der Dienste FormDataValueService oder MetaDataValueService ausgeführt:
Dokumentation und Beispiele siehe Auf Informationen aus anderen Formularen zugreifen.

Beispiele

Beispiel 1) Booleschen Wert ermitteln und mit einer Validierung verknüpfen

In einem Formular gibt es je ein Eingabefeld für ein Erstellungsdatum („st_creationDate“), das automatisch vorbelegt wird und ein Ablaufdatum („st_endDate“), das von Redakteur gepflegt wird. Über ein dynamisches Formular soll sichergestellt werden, dass das vom Redakteur eingetragene Ablaufdatum nach dem Erstellungsdatum liegt.

Innerhalb des <WITH/>-Abschnitts wird zunächst der Wert der beiden Eingabekomponenten über ein <PROPERTY/>-Tag geholt und anschließend eine einfache <GREATER_THAN/>-Prüfung auf den beiden Werten ausgeführt. Das Ergebnis dieser Prüfung ist ein Boolescher Wert, der anschließend im <DO/>-Abschnitt mit einer Validierung verknüpft wird. Solange die Bedingung („Ablaufdatum liegt nach dem Erstellungsdatum“) nicht erfüllt ist, wird der <VALIDATION/>-Abschnitt der Regel ausgeführt.

<RULES>

<RULE>
<WITH>
<GREATER_THAN>
<PROPERTY source="st_endDate" name="VALUE"/>
<PROPERTY source="st_creationDate" name="VALUE"/>
</GREATER_THAN>
</WITH>
<DO>
<VALIDATION scope="RELEASE">
<PROPERTY source="st_endDate" name="VALID"/>
<MESSAGE lang="*" text="Please enter a valid date"/>
<MESSAGE lang="DE" text="Bitte geben Sie ein gültiges Datum"/>
</VALIDATION>
</DO>
</RULE>

</RULES>

Beispiel 2) Werte ermitteln und mit einer Handlungsanweisung verknüpfen

Statt eines Booleschen Wertes (siehe Beispiel 1) kann die Wertermittlung auch eine Ergebnismenge zurückliefern.

Das folgende Formular enthält zwei Eingabekomponenten vom Typ CMS_INPUT_COMBOBOX, deren Wertemenge automatisch aus einer Datenbanktabelle gefüllt wird. Das dynamische Formular soll nun sicherstellen, dass nach der Auswahl eines Lieferanten aus der Auswahlliste „st_supplier“ beim Ausklappen der Combobox „st_dish“ nur die Produkte des ausgewählten Lieferanten angezeigt werden. Die Auswahl aus der ersten Auswahlliste beeinflusst also die Auswahlmenge der abhängigen, zweiten Auswahlliste.

Innerhalb des <WITH/>-Abschnitts wird zunächst der Wert der ersten Eingabekomponenten über ein <PROPERTY/>-Tag geholt. Das Ergebnis dieser Wertermittlung wird anschließend im <DO/>-Abschnitt der Regel mit einer Handlungsanweisung verknüpft. In diesem Fall wird keine Validierung ausgeführt, sondern über ein weiteres <PROPERTY/>-Tag die Wertemenge der Eingabekomponente „st_dish“ dynamisch mit Werten aus einer Datenbanktabelle gefüllt (vgl. CMS_INCLUDE_OPTIONS). Der ermittelte Wert aus der Combobox „st_supplier“ dient dabei als Schlüssel.

<RULES>
<RULE>
<WITH>
<PROPERTY source="st_supplier" name="VALUE"/>
</WITH>
<DO>
<PROPERTY source="st_dish" name="query.supplier_id"/>
</DO>
</RULE>
</RULES>

Soll ein Entfernen der Auswahl aus der ersten Eingabekomponente auch ein Entfernen der Auswahl aus der zweiten Eingabekomponente bewirken, kann dies durch eine weitere Regel realisiert werden. Dazu wird die Eigenschaft EMPTY verwendet:

<RULE>
<IF>
<PROPERTY name="EMPTY" source="st_supplier"/>
</IF>
<WITH>
<TRUE/>
</WITH>
<DO>
<PROPERTY name="EMPTY" source="st_dish"/>
</DO>
</RULE>

Beispiel 3) Negation

Regeln Negation boolescher Werte

In diesem Beispiel enthält die Vorlage 3 Textfelder:

  • Textfeld 1: „st_text_1“
  • Textfeld 2: „st_text_2“
  • Textfeld 3: „st_text_3“

Textfeld 1 wird immer angezeigt, Textfeld 2 wenn Textfeld 1 leer ist und Textfeld 3, wenn Textfeld 1 nicht leer ist.

<RULES>
<RULE>
<WITH>
<PROPERTY name="EMPTY" source="st_text_1"/>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="st_text_2"/>
<NOT>
<PROPERTY name="VISIBLE" source="st_text_3"/>
</NOT>
</DO>
</RULE>
<RULES>

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