Zum Hauptinhalt gehen

Condition in Schedule aktualisiert nicht

Kommentare

6 Kommentare

  • Zendesk API User
    Author: pavone - 8/8/2016 9:23

    Hallo Jonas,

    Die Validierung schlägt immer fehl. Auch wenn ich das besagte Feld befülle.

    Ich denke das lässt sich ganz einfach erklären. Wenn die Description leer ist, ist die Condition wahr, der Service wird ausgeführt und die Validierung schlägt fehl. Wenn dann die Beschreibung gefüllt wird, ist die Condition für die Regel nicht mehr erfüllt und der Service wird nicht erneut ausgeführt. Die Validierung wird also nicht aktualisiert. Mein Vorschlag wäre die Condition komplett zu entfernen und als zusätzlichen Parameter dem Service zu übergeben.

    Bevor etwas dazu sagen kann, ob sich die Lösung mit zwei Regeln optimieren lässt, muss ich nochmal nachhaken, ob ich das richtig verstanden habe :smileygrin: Also die erste Regel ruft einen Schedule auf. Das ist nicht der oben erwähnte Schedule IsProject, richtig? Dieser Schedule setzt dann den Wert für ein verstecktes Feld. Falls dieses gefüllt ist, wird die obige Regel ausgeführt?

    Viele Grüße

    Tim

    0
  • Zendesk API User
    Author: JonasE - 8/8/2016 9:51

    Hallo Tim,

    das hilft schon mal sehr für das Verständnis. Ich war davon ausgegangen, dass die Validierung immer angestoßen wird. Also auch dann, wenn die Condition fehlschlägt (und der Service dementsprechend nicht ausgeführt wird). Ein Weg, das ganze zu Lösen wäre eine erweiterte Fallabfrage. Es kann ruhig immer abgefragt werden, ob das Projekt im richtigen Scope liegt. Wenn das der Fall ist UND es leer ist (also eine Mischung aus dem Return-Wert des Services und einer normalen With-Abfrage) soll die Validierung fehlschlagen. Alles andere zeigt das Feld grün. Aber das (Mischung Schedule und With) ist momentan nicht möglich, oder?

    Die aktuell verwendete Lösung arbeitet in etwa so: In einer ersten Regel wird der Service aufgerufen. Wenn der Scope richtig ist, wird ein verstecktes Feld befüllt. In einer zweiten Regel wird dann auf Inhalt in dem versteckten Feld geprüft und zusätzlich auf den Inhalt im eigentlichen Feld (pt_description) geprüft.

    Die Lösung funktioniert, aber erscheint fehleranfällig, da dieses versteckte Feld ja danach gefüllt bleibt. Eine Lösung ohne verstecktes Feld wäre also nach wie vor die Wunschoption.

    Viele Grüße

    Jonas

    0
  • Zendesk API User
    Author: JonasE - 8/8/2016 17:12

    Ich habe jetzt, orientiert an der Hilfe, dass man Regeln ja auch "doppelt" festlegen kann, folgende Lösung:

    <RULES>

              <RULE>

                        <SCHEDULE delay="0" id="schedule_scope28" service="IsProject">

                                  <CONDITION>

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

                                  </CONDITION>

                                  <PARAM name="project">

                                            <TEXT>internet</TEXT>

                                  </PARAM>

                        </SCHEDULE>

                        <DO>

                                  <NOT>

                                            <VALIDATION scope="SAVE">

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

                                                      <MESSAGE lang="*" text="Die Description darf nicht leer sein!"/>

                                            </VALIDATION>

                                  </NOT>

                        </DO>

              </RULE>

              <RULE>

                        <WITH>

                                  <NOT>

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

                                  </NOT>

                        </WITH>

                        <DO>

                                  <VALIDATION scope="SAVE">

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

                                            <MESSAGE lang="*" text="Die Description darf nicht leer sein!"/>

                                  </VALIDATION>

                        </DO>

              </RULE>

    </RULES>

    Wenn die Condition greift (das Feld ist leer), dann wird auf den Scope geschaut und die Validierung schlägt beim richtigen Scope fehl. Das Gegenstück kommt ohne Schedule aus und sagt einfach aus, dass ein nicht leeres Feld immer OK ist. Auf diese Weise brauche ich zwar auch zwei Regeln, aber brauche das versteckte Feld nicht. Die Frage kann als beantwortet markiert werden, danke an Tim!

    Viele Grüße

    Jonas

    0
  • Zendesk API User
    Author: JonasE - 8/9/2016 15:49

    Hallo nochmal,

    bei eingehenderen Prüfungen ist mir aufgefallen, dass die Regel in dieser Form doch nicht ganz tut, was sie soll. Die beiden möglichen Scopes sind "internet" und "intranet". Wenn ich in den zweiten Scope wechsel, dann sollte dieser Schedule nie ausgeführt werden. Allerdings scheint er trotzdem zu laufen, wenn auch mit seltsamen Ergebnissen:

    1. Wenn ich das Feld pt_description nicht befülle (oder leere), dann "blinkt" das Feld unter Umständen kurz und zeigt die Fehlermeldung, aber nicht dauerhaft.

    2. Wenn ich nun versuche zu speichern, dann wird mir eine Fehlermeldung ausgegeben, diese kann ich mit Befüllen des Felds abwenden. Allerdings habe ich bei leerem Feld keine dauerhafte Anzeige des Fehlers. Ebenfalls wird der Fehler nicht im SiteArchitect unten gezeigt...

    Für mich sieht das nach einem Bug aus, weil ich mir nicht erklären kann, wie ein nicht ausgeführter Schedule trotzdem dazu führen kann, dass ein Feld nicht valide ist (was dann auch nicht angezeigt wird). Ist das ein bekannter Fehler, oder habe ich wieder etwas übersehen?

    Viele Grüße

    Jonas

    0
  • Zendesk API User
    Author: StefanSchulz - 8/10/2016 7:22

    Hallo Jonas,

    unabhängig von der Problematik: Schedule in Verbindung mit Speicher-verhindernden Regeln funktionieren nicht. Zwar wird das bei der Bearbeitung sichtbar, beim Speichervorgang werden jedoch keine Schedule-Services angesprochen, da diese dort nicht erreichbar sind (steht auch so in der Dokumentation zu den Regeln).

    Entsprechend wird beim Speichern immer ausschließlich die zweite Regel ausgeführt, d. h. das Feld darf nicht leer sein.

    Beste Grüße

    Stefan

    0
  • Zendesk API User
    Author: JonasE - 8/10/2016 11:58

    Hallo Stefan,

    vielen Dank für den Hinweis, das war mir bisher nicht bekannt. Um die Notwendigkeit einer Ausführung des Schedules zum Zeitpunkt des Speicherns zu umgehen, habe ich jetzt eine Lösung aus zwei Schedules und einer Regel für die Validierung. Die beiden Schedules fragen explizit den Scope des Projekts auf Internet oder Intranet ab und setzen dementsprechend ein verstecktes Feld. Dieses wird dann in der Validierungsregel zusammen mit dem Description-Feld überprüft. Auf diese Weise scheint es nun aber wirklich zu funktionieren. :smileywink:

    Viele Grüße

    Jonas

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.