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