Home › Forum › Nuclos Entwicklung › Makros und Regeln › Apassen von nummernkreise.rule.GeneriereNummer
- Dieses Thema hat 17 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 8 Jahren, 1 Monat von
Kevin Johnson.
-
AutorBeiträge
-
12 Oktober 2015 um 11:55 Uhr #8584
Kevin Johnson
TeilnehmerHallo liebe Nuclos-Gemeinde,
ich habe mal wieder ein Problem, bei dem ich eure Hilfe benötige.
Ich will mit Hilfe der Nummernkreise fortlaufende Nummern mit Präfix {yy} für diverse Objekte generieren lassen.
Nun habe ich in Nummernkreise die passenden Datensätze erstellt und wollte diese nun in der org.nuclet.nummernkreise.rule.GeneriereNummer Regel anpassen.
Nun bekomme ich aber bei der Anpassung des Sourcecodes diverse Fehlermeldungen, die wohl mit dem import zusammen hängen. Allerdings wird mir nicht ganz klar wo mein Fehler liegen soll. (Siehe Bilder unten)
Den import habe ich, z.Bsp. beim Kunden, sowohl überimport org.nuclet.basistemplate.Kunde
als auch über
import org.nuclet.businessentity.Kunde
versucht.
Vielen Dank schonmal.
LG
Attachments:13 Oktober 2015 um 00:03 Uhr #8586Papa Schlumpf
TeilnehmerDa fehlen die Semikolon nach den [tt]import[/tt]-Zeilen.
13 Oktober 2015 um 02:27 Uhr #8588Thomas Hempel
Teilnehmer..und bitte auch das Feld Nummer in den Entitäten anlegen, dann kann der Code so bleiben, oder eben den Code auf den Namen des Zielfeldes ändern, immer mit .set[Deinfeldname] statt setNummer..
13 Oktober 2015 um 10:28 Uhr #8589Kevin Johnson
TeilnehmerOh das mit den Semikolon ist peinlich 😉 Vielen Dank für den Hinweis mit dem Feld Nummer. Ich bin Neuling im Bereich java und tue mich noch etwas schwer.
Ich teste es nun gleich und gebe dann Rückmeldung.Herzlichen Dank
PS: Woher ist das mit dem Feld Nummer denn ersichtlich?
PPS: Sorry ich war heute Morgen wohl nuch etwas blind. Hab es selbst entdeckt, dass es im Bereich der if else if Leiter steht. Sorry
13 Oktober 2015 um 11:20 Uhr #8592Kevin Johnson
TeilnehmerWenn ich es recht verstanden habe, dann hat bereits jede Entität ein Feld Nummer. Hier ein Beispiel in der Kundenentität:
Die cannot find Symbol Fehlermeldungen sind jetzt natürlich weg. Ich hatte einfach beim copy paste vergessen die Kommatas mit zu nehmen.
Allerdings bekomme ich immer noch die Fehlermeldung:
Dann hätte ich noch eine weitere Frage zum Punkt 5 in der Anleitung.
Wie kann ich nun die Java- Regeln den BOs zuordnen? Muss ich eine neue Regel anlegen? Im Bereich des Nuclets Basistemplate? Z.Bsp. im Bereich Anlegen für den Kunden, damit bei der Neuanlage eines Kunden automtisch eine Nr generiert wird?
Fragen über Fragen 😉
Attachments:13 Oktober 2015 um 16:21 Uhr #8593Martin Rithos
TeilnehmerBitte poste hier noch mal deinen aktuellen Code, der zum Fehler führt.
Wie kann ich nun die Java- Regeln den BOs zuordnen? Muss ich eine neue Regel anlegen? Im Bereich des Nuclets Basistemplate? Z.Bsp. im Bereich Anlegen für den Kunden, damit bei der Neuanlage eines Kunden automtisch eine Nr generiert wird?
Unter Konfiguration > Server Regelmanager. Auf der linken Seite findest du die Regeln, auf der rechten Seite, u. a. die Businessobjekte. Per Drag & Drop kannst du die entsprechende Regeln einfach „rüberziehen“ & damit zuweisen.
13 Oktober 2015 um 17:09 Uhr #8595Kevin Johnson
Teilnehmer13 Oktober 2015 um 17:35 Uhr #8596Martin Rithos
TeilnehmerMmh, nach dem ersten Überfliegen fällt mir nichts auf. Kann es sein, dass eine Regel mit dem Namen bereits existiert?
13 Oktober 2015 um 17:53 Uhr #8598Kevin Johnson
TeilnehmerDie Regel GeneriereNummer bringt das Nummernkreise Nuclet doch immer mit oder? Ich wollte dieses ja nur anpassen.
Attachments:13 Oktober 2015 um 18:00 Uhr #8599Martin Rithos
TeilnehmerJa, an sich schon, aber manchmal klont man eine Regel und vergisst sie umzubennen – dann kommt es zu diesem Fehler. Könntest du den Code direkt noch mal hier im Code-Block posten? Das macht das Debuggen leichter als wenn man auf eine Grafik schaut.
13 Oktober 2015 um 18:36 Uhr #8601Kevin Johnson
TeilnehmerCode
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;
import org.nuclet.businessentity.Kunde;
import org.nuclet.businessentity.Artikel;
import org.nuclet.businessentity.Auftrag;
import org.nuclet.businessentity.Bestellung;
import org.nuclet.businessentity.Lieferant;
import org.nuclet.businessentity.Lieferschein;
import org.nuclet.businessentity.Rechnung;@Rule(name=“GeneriereNummer“, description=“Generiert fortlaufende Nummern“)
public class GeneriereNummer implements InsertRule
{
public void insert(InsertContext context) throws BusinessException
{// 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));
} else if (businessObject instanceof Kunde) {
((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Kunde.class));
} else if (businessObject instanceof Artikel) {
((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Artikel.class));
} else if (businessObject instanceof Lieferant {
((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Lieferant.class));
} else if (businessObject instanceof Rechnung) {
((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Rechnung.class));
}
}
}Attachments:13 Oktober 2015 um 18:54 Uhr #8602Martin Rithos
Teilnehmerelse if (businessObject instanceof Lieferant {
Hier fehlt hinter Lieferant die schließende Klammer. Ich bin mir aber nicht sicher, was du hier inhaltlich erreichen möchtest:
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));
} else if (businessObject instanceof Kunde) {
((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Kunde.class));
} else if (businessObject instanceof Artikel) {
((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Artikel.class));
} else if (businessObject instanceof Lieferant {
((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Lieferant.class));
} else if (businessObject instanceof Rechnung) {
((Lieferschein)businessObject).setNummer(NummernkreiseLogik.getNextValue(Rechnung.class));
}14 Oktober 2015 um 15:34 Uhr #8603Papa Schlumpf
TeilnehmerEin kleiner Tipp zu den Syntaxfehlern. Da zeigt Nuclos immer diese „Klassenname konnte nicht gelesen werden“-Meldung, die aber keinen Hinweis darauf gibt, wo der Fehler ist.
Ich kopiere dann immer den Code in einen richtigen Editor (oder z.B. auf ideone.com), der den Syntaxfehler anzeigen kann.
In diesem Fall kommt dann das hier dabei raus: https://ideone.com/gvpBEY. Und schon kennt man den Fehler, ohne alles zu durchsuchen.
19 Oktober 2015 um 11:09 Uhr #8605Kevin Johnson
TeilnehmerSo, ich war leider ein paar Tage gesundheitlich verhindert.
Die fehlende Klammer hab ich ersetzt und Lieferschein durch die richtigen Klassennamen ersetzt (mal wieder ein Copy-Paste-Fehler :S ).
Vielen Dank auch für den Tipp mit ideone.com.Nun hab ich leider noch mehr Fehlermeldungen als bisher. Auf ideone sieht das so aus.
Im Nuclos selber erhalte ich folgende Fehlermeldungen:
Attachments:19 Oktober 2015 um 17:21 Uhr #8606Thomas Hempel
TeilnehmerDas sieht doch so aus, als ob diese Klassen:
import org.nuclet.businessentity.Kunde;
import org.nuclet.businessentity.Artikel;
import org.nuclet.businessentity.Auftrag;
import org.nuclet.businessentity.Bestellung;
import org.nuclet.businessentity.Lieferant;
import org.nuclet.businessentity.Lieferschein;
import org.nuclet.businessentity.Rechnung;
nicht existieren bzw. nicht gefunden werden.
1. Fall
Bitte öffne Konfiguration/Server-Regelmanager, öffne den rechten Baum unter Regelzuweisung/. Dort müssten alle Entitäten ohne Nuclet-zuweisung stehen, also auch die oben genannten.
Wenn ja,dann ist der Verweis richtig. In diesem Fall weiß ich grad keinen Rat..2. Fall
Falls Du ein Nuclet angelegt hast und die Entitäten dorthin verschoben hast, dann ändere die Zeilen oben nach dem Muster:
import org.nuclet.[DeinNucletName].Kunde;
Das lässt sich somit sicher reparieren. -
AutorBeiträge