Hauptmenü

RuleSet funktioniert nicht wie erwartet

Begonnen von Alexander Gensler, 30.09.2025 12:19:52

⏪ vorheriges - nächstes ⏩

Alexander Gensler

Hallo zusammen,

ich habe folgendes RuleSet:

Rule "GetDaten" on Ticket
    ExecuteMacro "GetErreichbarkeit1Jahr" as MacroResult with {"NN": 1}
    Set DynamicFields.PrivateAnschrift "${MacroResult.Data.strasse}"
    Set DynamicFields.PrivatePLZ ${MacroResult.Data.plz}
    Set DynamicFields.PrivaterOrt "${MacroResult.Data.ort}"
   
    If TR.DynamicFields.isEmpty(PrivateAnschrift)
    Tell Warning "Fehlende Stammdaten" "Ihre Stammdaten konnten nicht geladen werden.<br/>Bitte prüfen Sie diese auf Vollständigkeit und Aktualität."
    Disable Submit
        Stop
    EndIf
    If TR.DynamicFields.isEmpty(PrivatePLZ)
    Tell Warning "Fehlende Stammdaten" "Ihre Stammdaten konnten nicht geladen werden.<br/>Bitte prüfen Sie diese auf Vollständigkeit und Aktualität."
    Disable Submit
        Stop
    EndIf
    If TR.DynamicFields.isEmpty(PrivaterOrt)
    Tell Warning "Fehlende Stammdaten" "Ihre Stammdaten konnten nicht geladen werden.<br/>Bitte prüfen Sie diese auf Vollständigkeit und Aktualität."
    Disable Submit
        Stop
    EndIf
End

Das ausgeführte Makro liest von einer SQL-Datenbank einen Datensatz und setzt diese Werte. Ist einer der drei Werte leer, soll eine Warnung ausgegeben werden und der Speichern-Button deaktiviert werden.

Leider wird die Warnmeldung auch ausgegeben, wenn alle drei Werte erfolgreich geladen werden konnten:
Fehler.png

Kann mir jemand sagen, wo hier der Fehler (mutmaßlich) in der If-Bedingung liegt? Ich habe es auch schon probiert, die Anweisung zur Fehlermeldung + Deaktivieren des Speichern-Buttons in eine eigene Rule auszulagern und mit entsprechenden if-Bedingungen zu versehen und diese im Anschluss der ersten Rule auszuführen.

Viele Grüße
Alexander

Torsten Thau

#1
Hi Alexander,

innerhalb der Workflow Rules werden die zuvor geänderten Werte nicht berücksichtigt. Du könntest aber folgendes probieren und direkt nochmal die Macrorückgaben auswerten. Denn die werden ja ohnehin verwendet um die Formularfelder zu setzen.

Rule "GetDaten" on Ticket
    ExecuteMacro "GetErreichbarkeit1Jahr" as MacroResult with {"NN": 1}
    Set DynamicFields.PrivateAnschrift "${MacroResult.Data.strasse}"
    Set DynamicFields.PrivatePLZ ${MacroResult.Data.plz}
    Set DynamicFields.PrivaterOrt "${MacroResult.Data.ort}"
  
    If ("${MacroResult.Data.strasse}" eq "" || "${MacroResult.Data.plz}" eq ""  || "${MacroResult.Data.ort}" eq "")
        Tell Warning "Fehlende Stammdaten" "Ihre Stammdaten konnten nicht geladen werden.<br/>Bitte prüfen Sie diese auf Vollständigkeit und Aktualität."
        Disable Submit
        Stop
    EndIf
End

Denn mit "isEmpty" gibt es noch eine Stolperfalle: es ist eigentlich für Selection-DF gedacht und checkt ob dort Werte ausgewählt sind oder nicht (https://docs.kixdesk.com/pro/de/administration/workflow/rule-sets.html#UUID-f45c61ad-e9a6-4568-6902-22c133dc0d1b_UUID-adeb9d80-c209-a2ba-3885-d810cfe9eed0)

CU, Torsten


UPDATE: fehlende Anführungsstriche um Variablen in Code nachträglich ergänzt entspr. Rückmeldung Alexander

Alexander Gensler

Hallo Torsten,

besten Dank, das hat mit minimalen Änderungen funktioniert.
In der If-Bedingung mussten die Variablen von Straße und Ort jeweils noch in Hochkommata gesetzt werden (analog zu den Set-Zeilen), damit die NVARCHAR-Werte aus der SQL-Datenbank passend als Strings gecastet werden und der Vergleich mit eq möglich ist.

Viele Grüße
Alexander


Torsten Thau

Hallo Alexander,

oh ja - jetzt da du das schreibst fällt es mir auch auf. Danke. 

CU, Torsten