Home Forum Nuclos Entwicklung Makros und Regeln customRule Status ändern – Nuclos 4.0.17

Ansicht von 12 Beiträgen - 1 bis 12 (von insgesamt 12)
  • Autor
    Beiträge
  • #7674
    Jan Smiesko
    Teilnehmer

    Hallo,

    ich experimentiere mit der neuen API und wenn ich nachstehendes Programm ausführte, kommt die Fehlermeldung: „Der Datensatz konnte nicht gespeichdert werden, weil er zwischenteitlich von einem anderen Benutzer geändert wurde. ….“

    package org.nuclet.businessentity;

    import org.nuclos.api.rule.CustomRule;
    import org.nuclos.api.context.CustomContext;
    import org.nuclos.api.annotation.Rule;
    import org.nuclos.api.exception.BusinessException;
    import org.nuclos.api.provider.StatemodelProvider;
    import org.nuclet.statemodel.PartnerSM;

    /** @name
    * @description
    * @usage
    * @change
    */
    @Rule(name="Test", description="Test")
    public class Test implements CustomRule {

    public void custom(CustomContext context) throws BusinessException {

    Partner p = context.getBusinessObject(Partner.class);
    StatemodelProvider.changeState(p, PartnerSM.State_10);

    }
    }

    Ich möchte, dass nach gewissen custom-Schritten der Status geändert wird und nicht ein Dialog erscheint.

    Kennt dieses Verhalten jemand?

    FG
    Jan

    #7676
    Ramin Goettlich
    Teilnehmer

    Können Sie etwas genauer beschreiben, was Sie versuchen?

    * Diese Regel hängt an einem Button in der Maske für die Entität Partner?
    * Tritt die Fehlermeldung beim Klick auf diesen Button auf oder später, z.B. bei einem anschliessenden Versuch, zu speichern?
    * Hängen am Statuswechsel nach Status 10 ebenfalls Regeln?
    * Der Inhalt der server.log wär hilfreich, um die Quelle des Fehlers besser zu lokalisieren.

    #7678
    Jan Smiesko
    Teilnehmer

    * Diese Regel hängt an einem Button in der Maske für die Entität Partner?
    Antwort: Ja

    * Tritt die Fehlermeldung beim Klick auf diesen Button auf oder später, z.B. bei einem anschliessenden Versuch, zu speichern?
    Antwort: beim Klick auf diesen Button

    * Hängen am Statuswechsel nach Status 10 ebenfalls Regeln?
    Antwort: Nein, hätte ich als nächstes getestet

    * Der Inhalt der server.log wär hilfreich, um die Quelle des Fehlers besser zu lokalisieren.

    Attachments:
    #7679
    Ramin Goettlich
    Teilnehmer

    * Hängen an der Entität Partner auch Update- oder UpdateFinal-Regeln?
    * Ein grösserer Ausschnitt der server.log wäre gut, der gepostete Teil enthält nur die Fehlermeldung, mehr Zeilen oberhalb würden zeigen, was vorher passiert ist.

    #7681
    Jan Smiesko
    Teilnehmer

    * Hängen an der Entität Partner auch Update- oder UpdateFinal-Regeln?
    Antwort: Nein

    * Ein grösserer Ausschnitt der server.log wäre gut, der gepostete Teil enthält nur die Fehlermeldung, mehr Zeilen oberhalb würden zeigen, was vorher passiert ist.
    Antwort: Oberhalb kommt das gleiche wie bereits übermittelt, weil 2x ausgeführt. Davor kommt nur der Startprozess. Die letzten Zeilen vor dem Fehler siehe Beilage.

    #7682
    Ramin Goettlich
    Teilnehmer

    Wir haben auch Fälle, in denen wir Statuswechsel per CustomRules ausführen – problemlos.

    CustomRule-Buttons lassen sich entweder so konfigurieren, dass sie nur klickbar sind, wenn der Datensatz gespeichert ist oder so, dass sie auch klickbar sind, wenn der Datensatz geändert und noch nicht gespeichert, also dirty, ist. In letzterem Fall wird implizit gespeichert, bevor der Inhalt der CustomRule zur Ausführung kommt. Das wäre eine mögliche Ursache, könnte das der Fall sein?

    Ggf. hilft ein Screenshot unmittelbar vor Klick auf den Button weiter.

    #7684
    Jan Smiesko
    Teilnehmer

    Leider tritt der Fehler in beiden Fällen auf. Eingefallen ist mir noch, dass die Entität Partner zwei Aktionen (natürlichePerson bzw. juristischePerson) hat. Die Buttons sind nur in einer Aktion (Layout) implementiert.

    CustomRegel „ausführen“ wurde auf State_20 geändert.

    siehe Screenshot …

    #7687
    Ramin Goettlich
    Teilnehmer

    Dann sollte es so eigentlich funktionieren, am besten mal ein Ticket auf support.nuclos.de erstellen.

    Kurzfristiger Workaround ggf: Entfernen der Buttons und Ausführen des Statuswechsels über die Status-Dropdown (die CustomRules tun ja nicht mehr, als den Status zu wechseln).

    #7689
    Jan Smiesko
    Teilnehmer

    Danke für die Info!

    Der Grund für customRule ist, dass der User mit einem Klick den Wechsel vornimmt, ohne dass ein Dialog erscheint.

    Werde bei Gelegenheit ein Ticket erstellen …

    FG
    Jan

    #8518
    Martin Rithos
    Teilnehmer

    Gibt es hierzu eventuell Neuigkeiten? Ich stehe vor dem gleichen Problem.

    #8530
    Franz Holzer
    Teilnehmer

    was genau ist dein Problem ?
    Bei mir funktioniert das ohne Probleme.

    Versionen ?

    #8569
    Martin Rithos
    Teilnehmer

    Mittlerweile 4.5.2 und weiterhin das gleiche Problem.

    Über einen Button soll der Status gewechselt werden. Doch es erscheint jedes Mal folgende Meldung:

    Sicherheitshalber speichere das BO zuvor nochmals ab, leider ohne Erfolg.


    import org.nuclos.api.provider.StatemodelProvider;
    import org.nuclet.meinnuclet.AuftraegeSM;

    BusinessObjectProvider.update(auftrag);
    StatemodelProvider.changeState(auftrag,AuftraegeSM.State_50);

    🙁

Ansicht von 12 Beiträgen - 1 bis 12 (von insgesamt 12)