Home › Forum › Allgemeines › Allgemeines zu Nuclos › BO Attribute
- Dieses Thema hat 11 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 7 Jahren von
Nick Röder.
-
AutorBeiträge
-
30 November 2016 um 16:18 Uhr #9158
K. Struckmeier
TeilnehmerHallo, wie mache ich es wenn ich zwei BO’s habe, und ich in einem etwas anlege, das Nuclos das dann auch in das andere BO einträgt.
(Bsp.: BO: Lager, Wareneingang. Ich habe mir den Namen und die Mengenangabe eines Artikels aus dem Lager geholt und die gelieferte Menge mit der Menge aus dem Lager addiert. Dann habe ich einen endgültigen Wert der Menge eines Artikels. Nun muss dieser Wert wieder ins Lager zu dem Artikel übertragen werden.)
Wie mach ich das?
Bisheriger Regel-Code:
package org.nuclet.businessentity;
import org.nuclos.api.rule.InsertRule;
import org.nuclos.api.context.InsertContext;
import org.nuclos.api.annotation.Rule;
import org.nuclos.api.exception.BusinessException;/** @name
* @description
* @usage
* @change
*/
@Rule(name=“addition“, description=“addition“)
public class addition implements InsertRule {@Override
public void insert(InsertContext context) throws BusinessException {Wareneingang wareneingang = context.getBusinessObject(Wareneingang.class);
//Artikel artikel = context.getBusinessObject Artikel.class);int a,b,c;
a=wareneingang.getMenge();
b=wareneingang.getGeliefert();
c=a+b;
wareneingang.setMenge(c);//Artikel.setBestand(c);
}
}1 Dezember 2016 um 22:35 Uhr #9163Ronald Sedelies
TeilnehmerSollte eigentlich nicht so schwer sein.
Innerhalb der Regel hast du ja die Entität des Wareneingangs ja schon geholt. Sollte der Wareneingang den Artikel referenzieren (also ein Attribut mit Typ „Referenzfeld“ auf Artikel), dann funktioniert es so:Artikel artikel = wareneingang.getArtikelBO();
artikel.setBestand(c);
BusinessObjectProvider.update(artikel);Ich hoffe, ich habe dein Problem richtig verstanden;-)
Viele Grüße
Ronald
2 Dezember 2016 um 03:47 Uhr #9166Dieter Mennig
TeilnehmerHallo KSC-2016,
siehe auch hier:
http://wiki.nuclos.de/display/Konfiguration/BusinessObjectProvider
Dort ist zu den einzelnen Methoden auch ein Beispiel angegeben.
Viele Grüße
5 Dezember 2016 um 11:16 Uhr #9171K. Struckmeier
TeilnehmerDanke für die Antworten aber beim speichern der Regel kommt diese Fehlermeldung:
addition.java:37: cannot find symbol
symbol: variable BusinessObjectProvider
location: class org.nuclet.businessentity.additionMein Regel-Code:
package org.nuclet.businessentity;
import org.nuclos.api.rule.InsertRule;
import org.nuclos.api.context.InsertContext;
import org.nuclos.api.annotation.Rule;
import org.nuclos.api.exception.BusinessException;/** @name
* @description
* @usage
* @change
*/
@Rule(name=“addition“, description=“addition“)
public class addition implements InsertRule {@Override
public void insert(InsertContext context) throws BusinessException {Wareneingang wareneingang = context.getBusinessObject(Wareneingang.class);
//Artikel artikel = context.getBusinessObject(Artikel.class);
Artikel artikel = wareneingang.getArtikelBO();int a,b,c;
a=artikel.getBestand();
b=wareneingang.getGeliefert();
c=a+b;artikel.setBestand(c);
BusinessObjectProvider.update(artikel);}
}5 Dezember 2016 um 12:02 Uhr #9172Nick Röder
Teilnehmerich vermute es liegt am Copy&Paste aus einer HTML-Seite. Da sind manchmal dann Zeichen vorhanden, die Nuclos nicht interpretieren kann.
Kopieren Sie mal den Code in einen Texteditor und dann zurück in Nuclos. Evtl. zeigt der Texteditor ein (verstecktes) Zeichen an.
5 Dezember 2016 um 12:06 Uhr #9173K. Struckmeier
TeilnehmerHab ich gemacht. Da kommt aber immer noch die selbe Fehlermeldung.
Muss ich nicht noch irgendetwas im Regelmanager machen?
5 Dezember 2016 um 12:10 Uhr #9174Nick Röder
TeilnehmerKönnen Sie noch den weiteren Text der Fehlermeldung posten. Der Regelcode hat ja nur 35 Zeilen, evtl ist eine andere Regel davon betroffen
5 Dezember 2016 um 12:13 Uhr #9175K. Struckmeier
TeilnehmerDa steht nur im unteren Fehlermeldung-Fenster dieser eine Fehler:
addition.java:32: cannot find symbol
symbol: variable BusinessObjectProvider
location: class org.nuclet.businessentity.additionUnd wenn ich oben auf den grünen Hacken klicke, kommt die Meldung: Quelltext erfolgreich kompiliert.
5 Dezember 2016 um 12:19 Uhr #9176K. Struckmeier
TeilnehmerWas ist den mit diesem Code? Vielleicht hilft der mir weiter, wenn Sie mir erläutern könnten, welche Codeteile ich auf mich bezogen ändern muss.
public class Bestellunganlegen implements InsertRule {
public void insert(InsertContext context) throws BusinessException {
Artikel myArticel = QueryProvider.getById(Artikel.class, 40465351L);
myArticel.setEinstandspreis(3.99d);
BusinessObjectProvider.update(myArticel);
}
}Vor allem würde ich gerne wissen, was es mit diesem Code auf sich hat:
Artikel myArticel = QueryProvider.getById(Artikel.class, 40465351L);
5 Dezember 2016 um 12:49 Uhr #9177Nick Röder
TeilnehmerSorry, habe die Fehlermeldung nicht richtig gelesen.
Nuclos findet die Klassen für den BusinessObjectProvider nicht, dieser muss importiert werden (bei den anderen Imports).
import org.nuclos.api.provider.BusinessObjectProvider;
5 Dezember 2016 um 12:52 Uhr #9178K. Struckmeier
TeilnehmerVIELEN VIELEN DANK , Danke Danke 🙂
5 Dezember 2016 um 12:53 Uhr #9179Nick Röder
TeilnehmerBzgl Ihrem Code. Darüber holen Sie sich ein Objekt anhand einer ID (die jeder Datensatz hat). Das ist im Wiki und unter api.nuclos.de ausführlich beschrieben.
-
AutorBeiträge