felix_reinhold
Returning Responder

ON_SAVE Rule ruft ValueService bei refresh auf

Hallo zusammen,

ich bin bei der Entwicklung eines ValueServices auf ein seltsames Verhalten von FS gestoßen.

Ich habe in den Rules meines Metadaten-Templates eine Regel für das Speicher-Event (ON_SAVE) erstellt und rufe darin einen ValueService auf:

<ON_SAVE>
    <SCHEDULE service="UserValueService" id="changed_by" delay="0">
      <PARAM name="debug">
           <TEXT>true</TEXT>
      </PARAM>
     </SCHEDULE>
    <DO>
        <PROPERTY source="fs_portal_changed_by" name="VALUE"/>
    </DO>
</ON_SAVE>

Der Sevice an sich funktioniert auch, wird jedoch viel zu häufig aufgerufen. Ich habe testweise eine LogAusgabe in die getValue-Funktion des ValueServices eingefügt. Bei jedem Refresh der Seite (auch wenn ich nicht im Editiermodus bin) wird diese Logausgabe ausgegeben. Öffne ich dann den Editiermodus, so wird die Logausgabe im Millisekundentakt ausgegeben und der Client ist kurz vorm Absturz.

Testweise habe ich den ValueService auch schon komplett geleert bis auf die LogAusgabe und einen Dummy-Returnwert. Das Verhalten war identisch.

Wieso wird das "ON_SAVE"-Event getrittrigered, wenn ich nicht speichere, bzw. nicht einmal die Seite bearbeite? Gibt es noch ein generelles Problem mit Rules in Metadatentemplates?

Viele Grüße

Felix

0 Kudos
3 Replies
StefanSchulz
I'm new here

Hi,

das liegt daran, dass ON_SAVE kein Event ist. Es sagt nichts über den Zeitpunkt der Ausführung der Regel aus, sondern legt fest, wann die Regel valide sein muss (in der Dokumentation auch als Restriktionsstufe bezeichnet). Es ist zur Unterstützung der redaktionellen Arbeit gedacht und nicht als Triggermechanismus für Funktionen auf Elemente. Der Name des Regeltyps mag ein wenig verwirrend sein, wenn man nicht um die Herkunft weiß.

Gruß

Stefan

mbergmann
Crownpeak employee

Hallo Felix,

es handelt sich hier nicht um reine Event-Listener, die verschiedenen Varianten definieren in Verbindung mit einer Validierung lediglich die "Stärke" der Restriktion.

Siehe auch hier.

Du könntest hier mit einer <CONDITION> arbeiten, die genau dazu existiert um unnötige ValueService-Aufrufe zu vermeiden.

Viele Grüße

Michael

<edit>Da war ich wohl ein Minütchen zu langsam 😉 </edit>

felix_reinhold
Returning Responder

Besten Dank für die schnelle Antwort,

dann werde ich mal schauen, ob ich damit irgendwie zurande komme.

Viele Grüße

Felix

0 Kudos