Home Forum Nuclos Konfiguration Nuclet Import/Export Nummernkreise

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 15)
  • Autor
    Beiträge
  • #9027
    K. Struckmeier
    Teilnehmer

    Hallo,
    mein Problem ist, ich weiß nicht wie man die erstellten Nummernkreise auf das angegebene Businessobjekt bzw. in ein Attribut eines Businessobjekt einfügt.
    Importiert ist es schon. Muss ich da auch was an den Regeln umschreiben?

    #9030
    Thomas Hempel
    Teilnehmer

    Ja, musst Du. Und die Regel muss im REgelmanager an das BO gehängt werden.
    In der Regel GeneriereNummer steht die Anleitung im Kommentar. Bitte versuchs erstmal und frage bei Bedarf konkret wieder nach..

    #9032
    K. Struckmeier
    Teilnehmer

    Danke für die Antwort, habe es probiert aber dann beim abspeichern kommen immer zwei Fehlermeldungen

    #9035
    K. Struckmeier
    Teilnehmer

    Ich konnte es jetzt abspeichern, aber wie verknüpfe ich es jetzt mit dem Businessobjekt?
    Hier ist mein Code:

    _________________________________________________________________________________________________

    package org.nuclet.nummernkreise.rule;

    import org.nuclos.api.rule.StateChangeRule;
    import org.nuclos.api.context.StateChangeContext;
    import org.nuclos.api.annotation.Rule;
    import org.nuclos.api.businessobject.BusinessObject;
    import org.nuclos.api.businessobject.facade.Stateful;
    import org.nuclos.api.exception.BusinessException;
    import org.nuclos.api.provider.BusinessObjectProvider;
    import org.nuclos.api.provider.QueryProvider;

    import org.nuclet.nummernkreise.logic.NummernkreiseLogik;

    // @replace!
    //
    import org.nuclet.businessentity.Lieferanten;
    import org.nuclet.businessentity.Kunden;
    // import org.nuclet.businessentity.Rechnung;

    /** @name GeneriereNummerBeiStatuswechsel
    * @description Generiert fortlaufende Nummern
    * @usage
    * @change
    */
    @Rule(name=“GeneriereNummerBeiStatuswechsel“, description=“Generiert fortlaufende Nummern“)
    public class GeneriereNummerBeiStatuswechsel implements StateChangeRule
    {
    public void changeState(StateChangeContext context) throws BusinessException
    {

    final Stateful businessObject = context.getBusinessObject(Stateful.class);
    if (businessObject instanceof Kunden) {
    ((Kunden)businessObject).setNummer(NummernkreiseLogik.getNextValue(Kunden.class));
    } else if (businessObject instanceof Lieferanten) {
    ((Lieferanten)businessObject).setNummer(NummernkreiseLogik.getNextValue(Lieferanten.class));
    }
    }
    }

    ____________________________________________________________________________________________________

    Ich habe auch schon in der Liste „System/Nummernkreise“ mein Businessobjekt usw. eingetragen.

    #9037
    Ramin Goettlich
    Teilnehmer

    Unter Konfiguration | Server Regelmanager muss die Regel per Drag & Drop noch von links nach rechts auf das Businessobjekt Kunde und Lieferant gezogen werden. Haben Sie das schon gemacht?

    Dieser Zuordnungsschritt sagt Nuclos, dass die Regel für Kunden bzw. Lieferanten beim Speichern ausgeführt werden soll.

    #9038
    K. Struckmeier
    Teilnehmer

    danke für die Antwort, jetzt ist der Code aber im Bereich Statuswechsel angelegt. Ich möchte aber die Nummer vergeben bekommen wenn ich einen neuen Kunden bzw. Lieferanten anlege.

    #9039
    Ramin Goettlich
    Teilnehmer

    Dann haben Sie die Regel auf das Statusmodell gezogen, nicht auf das Businessobjekt. Beim Statusmodell müssten Sie die Zuordnung (unten rechts im Regelmanager) wieder entfernen. Und dann eine Zuordnung zu den gewünschten BOs herstellen.

    #9043
    K. Struckmeier
    Teilnehmer

    Hier ist mein Regelmanager.

    Attachments:
    #9044
    Ramin Goettlich
    Teilnehmer

    Sorry, ich sehe gerade, es handelt sich um eine Statuswechselregel, Sie müssen die andere Regel, die mit „GeneriereNummer…“ beginnt (UpdateRule), für Ihre Zwecke anpassen (und dann auf das BO im Regelmanager ziehen).

    Die in diesem Thread weiter oben abgebildete Regel kann nur auf Statusmodelle gezogen werden (StateChangeRule).

    #9045
    K. Struckmeier
    Teilnehmer

    tut mir leid aber ich glaube ich kann ihnen nicht folgen. Ich habe ja den Code den ich hier gepostet habe, unten bei „Statuswechsel“ stehen. Und wenn ich eine neue Regel erstellen will und den code reinkopiere speichert er die regel automatisch bei „Statuswechsel“. Außerdem ist es so, dass wenn ich eine Regel nach rechtes ziehen will ein „Sperr/Verbot-symbol“ erscheint.

    #9046
    Ramin Goettlich
    Teilnehmer

    GeneriereNummerBeiStatuswechsel ist, wie der Name sagt, die falsche Regel. Sie brauchen die andere, „GeneriereNummer“. Wie sieht die aus?

    #9047
    K. Struckmeier
    Teilnehmer

    die rechte „GenenriereNummer“ sieht so aus:

    ____________________________________________________________________________________-

    package org.nuclet.nummernkreise.rule;

    import org.nuclos.api.rule.StateChangeRule;
    import org.nuclos.api.context.StateChangeContext;
    import org.nuclos.api.annotation.Rule;
    import org.nuclos.api.businessobject.BusinessObject;
    import org.nuclos.api.businessobject.facade.Stateful;
    import org.nuclos.api.exception.BusinessException;
    import org.nuclos.api.provider.BusinessObjectProvider;
    import org.nuclos.api.provider.QueryProvider;

    import org.nuclet.nummernkreise.logic.NummernkreiseLogik;

    // @replace!
    //
    import org.nuclet.businessentity.Lieferanten;
    import org.nuclet.businessentity.Kunden;
    // import org.nuclet.businessentity.Rechnung;

    /** @name GeneriereNummerBeiStatuswechsel
    * @description Generiert fortlaufende Nummern
    * @usage
    * @change
    */
    @Rule(name=“GeneriereNummer“, description=“Generiert fortlaufende Nummern“)
    public class GeneriereNummer implements StateChangeRule
    {
    public void changeState(StateChangeContext context) throws BusinessException
    {

    final Stateful businessObject = context.getBusinessObject(Stateful.class);
    if (businessObject instanceof Kunden) {
    ((Kunden)businessObject).setnummer(NummernkreiseLogik.getNextValue(Kunden.class));
    } else if (businessObject instanceof Lieferanten) {
    ((Lieferanten)businessObject).setNummer(NummernkreiseLogik.getNextValue(Lieferanten.class));
    }
    }
    }
    _________________________________________________________________________________________

    #9049
    Ramin Goettlich
    Teilnehmer

    Das ist nicht der Originalzustand der Regel, sie ist ja mit der weiter oben geposteten identisch. Ich schlage vor, dass Nummernkreisnuclet nochmal zu importieren.

    #9050
    K. Struckmeier
    Teilnehmer

    Ahh jetzt bin ich schon mal weiter.
    was muss ich jetzt hier anpassen?
    ich habe jetzt schon mal alles auf das businessobjekt „Kunden“ geändert.

    ___________________________________________________________________________________________

    package org.nuclet.nummernkreise.rule;

    import org.nuclos.api.rule.InsertRule;
    import org.nuclos.api.context.InsertContext;
    import org.nuclos.api.annotation.Rule;
    import org.nuclos.api.businessobject.BusinessObject;
    import org.nuclos.api.businessobject.facade.Modifiable;
    import org.nuclos.api.exception.BusinessException;
    import org.nuclos.api.provider.BusinessObjectProvider;
    import org.nuclos.api.provider.QueryProvider;

    import org.nuclet.nummernkreise.logic.NummernkreiseLogik;

    // @replace!
    //
    import org.nuclet.businessentity.Kunden;
    // import org.nuclet.businessentity.Bestellung;
    // import org.nuclet.businessentity.Lieferschein;

    /** @name GeneriereNummer
    * @description Generiert fortlaufende Nummern
    * @usage
    * @change
    */
    @Rule(name=“GeneriereNummer“, description=“Generiert fortlaufende Nummern“)
    public class GeneriereNummer implements InsertRule
    {
    public void insert(InsertContext context) throws BusinessException
    {
    //
    // @replace! Bitte mit bei Nuclet-Integration mit eigenem Code füllen!
    //
    // Es folgen zwei Beispiele einer konkreten Umsetzung:

    final Kunden boKunden = context.getBusinessObject(Kunden.class);
    boKunden.setNummer(NummernkreiseLogik.getNextValue(Kunden.class));
    //
    //
    // Beispiel 2 (Nummerngenerierung nur für verschiedene Entitäten):
    //
    // final Modifiable businessObject = context.getBusinessObject(Modifiable.class);
    //
    // if (businessObject instanceof Auftrag) {
    // ((Auftrag)businessObject).setNummer(NummernkreiseLogik.getNextValue(Auftrag.class));
    // } else if (businessObject instanceof Bestellung) {
    // ((Bestellung)businessObject).setNummer(NummernkreiseLogik.getNextValue(Bestellung.class));
    // } else if (businessObject instanceof Lieferschein) {
    // ((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Lieferschein.class));
    // }
    }
    }

    ______________________________________________________________________________________
    Denn wenn ich jetzt einen Kunden anlegen möchte kommt eine Fehlermeldung.

    #9051
    K. Struckmeier
    Teilnehmer

    Vielen Dank für Ihre Antworten, es funktioniert jetzt.

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