bIT_sosswald
Returning Responder

Reihenfolge von Regeln bestimmen

Jump to solution

Hallo zusammen,

kann man die Reihenfolge, in der Regeln ausgeführt werden bestimmen?

Hintergrund der Frage: Ich ermittle über einen ValueService den Wert für ein bestimmtes Feld. Allerdings nur, wenn der Redakteur vorher nicht manuell einen Wert in das Feld eingetragen hat. Daher wird er ValueService mit when="ONSAVE" aufgerufen.

Ich wollte nun das zu befüllende Feld noch mit einer Regel absichern, die prüft ob das Feld gefüllt ist. (Für den Fall, dass der Redakteur manuell keinen Wert vergibt und auch der ValueService keinen Wert zurückliefert.)

Allerdings schlägt diese Regel immer schon zu, obwohl der ValueService einen Wert liefert. Ich gehe daher davon aus, dass hier eine RaceCondition besteht und der ValueService ein paar Millisekunden zu spät antwortet.

Kann ich irgendwie erzwingen, dass die Regel zur Validierung des Feldes erst nach Abschluss des ValueServices ausgeführt wird?

Hier meine Regeln:

<RULE when="ONSAVE">

<SCHEDULE delay="0" id="1" service="Url Segment ValueService">

<CONDITION>

<PROPERTY name="EMPTY" source="cs_url_fragment"/>

</CONDITION>

<PARAM name="value">

<PROPERTY name="VALUE" source="cs_url_fragment"/>

</PARAM>

</SCHEDULE>

<DO>

<PROPERTY name="VALUE" source="cs_url_fragment"/>

</DO>

</RULE>

<RULE when="ONSAVE">

<WITH>

<NOT>

<AND>

<PROPERTY name="EMPTY" source="cs_url_fragment"/>

<EQUAL>

<PROPERTY name="VALUE" source="cs_translated"/>

<TRUE/>

</EQUAL>

</AND>

</NOT>

</WITH>

<DO>

<VALIDATION scope="SAVE">

<PROPERTY name="VALID" source="cs_url_fragment"/>

<MESSAGE lang="*" text="The Element must not be empty!"/>

</VALIDATION>

</DO>

</RULE>

Grüße

Sandro

0 Kudos
1 Solution

Accepted Solutions
StefanSchulz
I'm new here

Hallo Sandro,

eine Festlegung der Reihenfolge ist zurzeit nicht angedacht. Würde in diesem Fall vermutlich auch nicht helfen, da der ValueService asynchron verarbeitet wird.

Die Zeitpunktfestlegung "ON_SAVE" sorgt zudem noch dafür, dass die Regel nur in einem speziellen Regeldurchlauf ausgeführt wird. Nämlich zum Zeitpunkt einer Speicheraktion. Die sich aus der ersten Regel ergebenden Änderungen sorgen somit nicht für eine Neuvalidierung der zweiten Regel. Zumindest die zweite Regel sollte somit nicht auf "ON_SAVE" festgelegt werden.

Um die Fehlermeldung nicht schon bei der initialen Bearbeitung des Formulars anzuzeigen, könnte man sich evtl. eines versteckten Feldes bedienen, um die zweite Regel zu aktivieren. Das müsste man evtl. ein wenig ausprobieren.

Beste Grüße

Stefan

View solution in original post

0 Kudos
1 Reply
StefanSchulz
I'm new here

Hallo Sandro,

eine Festlegung der Reihenfolge ist zurzeit nicht angedacht. Würde in diesem Fall vermutlich auch nicht helfen, da der ValueService asynchron verarbeitet wird.

Die Zeitpunktfestlegung "ON_SAVE" sorgt zudem noch dafür, dass die Regel nur in einem speziellen Regeldurchlauf ausgeführt wird. Nämlich zum Zeitpunkt einer Speicheraktion. Die sich aus der ersten Regel ergebenden Änderungen sorgen somit nicht für eine Neuvalidierung der zweiten Regel. Zumindest die zweite Regel sollte somit nicht auf "ON_SAVE" festgelegt werden.

Um die Fehlermeldung nicht schon bei der initialen Bearbeitung des Formulars anzuzeigen, könnte man sich evtl. eines versteckten Feldes bedienen, um die zweite Regel zu aktivieren. Das müsste man evtl. ein wenig ausprobieren.

Beste Grüße

Stefan

0 Kudos