Home › Forum › Nuclos Konfiguration › Nuclet Import/Export › Nummernkreise
- Dieses Thema hat 14 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 7 Jahren von
K. Struckmeier.
-
AutorBeiträge
-
14 November 2016 um 17:43 Uhr #9027
K. Struckmeier
TeilnehmerHallo,
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?15 November 2016 um 01:36 Uhr #9030Thomas Hempel
TeilnehmerJa, 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..15 November 2016 um 11:37 Uhr #9032K. Struckmeier
TeilnehmerDanke für die Antwort, habe es probiert aber dann beim abspeichern kommen immer zwei Fehlermeldungen
15 November 2016 um 12:16 Uhr #9035K. Struckmeier
TeilnehmerIch 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.
15 November 2016 um 12:41 Uhr #9037Ramin Goettlich
TeilnehmerUnter 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.
15 November 2016 um 12:47 Uhr #9038K. Struckmeier
Teilnehmerdanke 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.
15 November 2016 um 12:54 Uhr #9039Ramin Goettlich
TeilnehmerDann 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.
15 November 2016 um 13:41 Uhr #9043K. Struckmeier
TeilnehmerHier ist mein Regelmanager.
Attachments:15 November 2016 um 13:48 Uhr #9044Ramin Goettlich
TeilnehmerSorry, 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).
15 November 2016 um 14:09 Uhr #9045K. Struckmeier
Teilnehmertut 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.
15 November 2016 um 14:31 Uhr #9046Ramin Goettlich
TeilnehmerGeneriereNummerBeiStatuswechsel ist, wie der Name sagt, die falsche Regel. Sie brauchen die andere, „GeneriereNummer“. Wie sieht die aus?
15 November 2016 um 14:37 Uhr #9047K. Struckmeier
Teilnehmerdie 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));
}
}
}
_________________________________________________________________________________________15 November 2016 um 14:45 Uhr #9049Ramin Goettlich
TeilnehmerDas ist nicht der Originalzustand der Regel, sie ist ja mit der weiter oben geposteten identisch. Ich schlage vor, dass Nummernkreisnuclet nochmal zu importieren.
15 November 2016 um 15:08 Uhr #9050K. Struckmeier
TeilnehmerAhh 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.16 November 2016 um 12:12 Uhr #9051K. Struckmeier
TeilnehmerVielen Dank für Ihre Antworten, es funktioniert jetzt.
-
AutorBeiträge