Regeln: Vergleich auf benutzerdefiniertes Feld wird immer auf "= ist gleich" gesetzt

  • Folgendes Szenario:


    - Anlegen eines benutzerdefinierten Feldes "XYZ", Typ: Float, Verfügbarkeite: E-Mail
    - Anlegen einer Regel mit Bedingung (Benutzerdefiniertes Feld) mit "XYZ > 0", Trigger: Bearbeiten, Aktion: irgendwas ... (in unserem Fall wird die Mail weitergeleitet an eine bestimmte Adresse - das dürfte aber hier keine Rolle spielen)


    => Diese Regel schlägt immer fehl, weil es - angeblich - zu viele Elemente gibt. Das liegt aber nur daran, dass die Regel-Bedinung nicht korrekt gespeichert wird. Öffnet man nämlich die Regel nochmals im Editor, so sieht man, dass aus "XYZ > 0" ein "XYZ = 0" geworden ist - und das trifft dann auf alle Elemente zu. Das passiert übrigens genau so, wenn man die Regel im Quelltext erstellt.


    Diesen Bug bitte schnell beheben, weil durch das Fehlen solcher Vergleichsregeln ein ganz erheblicher Teil des Potentials des Greyhounds verloren geht.


    Bei mir sind in diesem Zusammenhang auch noch ein paar grundsätzliche Fragen aufgetaucht, die ich hier -> http://www.greyhound-software.de/community/index.php?page=Thread&threadID=568 untergebracht habe.

  • Hallo,


    dass der Vergleichsoperator scheinbar zurückgesetzt wird, kann ich nachvollziehen. Ich habe dieses Problem mit hoher Priorität in den internen Bug-Tracker aufgenommen.


    Die Bedingungen einer Regel werden ürigens immer nur für das aktuelle Element angewendet. GREYHOUND prüft nicht für jedes vorhandene Element, ob diese Bedingung zutreffen würde. Aber dazu habe ich im genannten Beitrag schon etwas geschrieben. :)

  • Hallo,


    das Problem mit dem Operator wurde für das nächste Release behoben. Der Operator wird übrigens in der Regel korrekt gespeichert. Wenn man diese Bearbeitet wird er leider nicht wieder korrekt geladen.


    Das andere Problem kann ich so noch nicht nachvollziehen. Es wäre hier hilfreich, die orginal Fehlermeldung zu sehen.

  • Die Fehlermeldung steht doch in dem anderen Beitrag:


    Zitat


    Die Fehlermeldung bei der Regel und im Systemprotokoll (siehe anderer Beitrag oben) sah so aus: "Cannot execute bytecode, the following errors occured: (EListError): Listenindex überschreitet das Maximum (117541616)".


    Und eben aus dieser Fehlermeldung schloss ich ja, dass hier nicht nur EIN Element durch die Regel gelaufen ist. Ich vermutete, dass nicht die Regel "X > 0" ausgeführt wurde sondern "X == 0" - und wenn das dann für ALLE Elemente geprüft würde, dann verstünde ich, dass da ein Maximum überschritten wird. Vermutlich versteht ich aber "Listenindex" falsch?


    Egal. Fakt ist, dass die Regel nicht funktioniert sondern mit o. g. Fehler abgebrochen wird.
    Reichen diese Infos? Oder fehlt noch was?