Beispielfall 1: Nummernkreise
In einem Projekt gibt es mehrere BOs, die bei der Neuanlage eine automatische Nummer vom System vergeben bekommen.
Bei den betroffenen BOs handelt es sich um:
- Angebot
- Auftrag
- Lieferschein
- Bestellung
Die bisherige Implementierung wurde über Verwendung von instanceof gelöst (siehe Codeausschnitt rechts) und soll nun über ein Generisches BO abgelöst werden.
public void insert(InsertContext context) throws BusinessException { final Modifiable<?> businessObject = context.getBusinessObject(Modifiable.class); if (businessObject instanceof Angebot) { ((Angebot) businessObject).setAngebotsnr(NummernkreiseLogik.getNextValue(Angebot.class)); } else if (businessObject instanceof Auftrag) { ((Auftrag) businessObject).setAuftragsnr(NummernkreiseLogik.getNextValue(Auftrag.class)); } else if (businessObject instanceof Lieferschein) { ((Lieferschein) businessObject).setLieferscheinnr(NummernkreiseLogik.getNextValue(Lieferschein.class)); } else if (businessObject instanceof Bestellung) { ((Bestellung) businessObject).setBestellnr(NummernkreiseLogik.getNextValue(Bestellung.class)); } }
Zunächst wird ein neues generisches Businessobjekt namens 'Nummerierbar' mit dem BO-Wizard erstellt.
Dieses BO erhält genau ein Attribut "Nummer".
Der Datentyp muss dem Datentyp des Feldes in den implentierenden BOs entsprechen !
Das BO enthält keine speziellen Berechtigungen und auch kein Layout. Es dient nur als abstraktes Businessobjekt für die Geschäftsregel bei der Nummergenerierung.
Das BO Nummerierbar wird einem beliebigen Nuclet zugewiesen.
Beispielfall 2: Summenberechnung in Belegpositionen
In einem Projekt gibt es BOs für Angebot, Auftrag und Rechnung. Alle diese BOs enthalten ein Unterformular mit Belegpositionen und Spalten für Einzelpreis, Menge und Gesamtpreis. In allen Fällen berechnet sich der Gesamtpreis:
Gesamtpreis = Einzelpreis * Menge
Statt diese Implementierung in jedem BO einzeln vorzunehmen, möchten wir uns wieder dem Feature Generische Implementierung bedienen.
Die Berechnung findet in diesem Fall nur in den Belegpositionen statt. Dennoch benötigen wir jeweils ein generisches BO für den Hauptdatensatz und für das Unterformular. Wir erstellen also zwei Generische BOs:
- Beleg (keine Attribute)
- Belegposition (mit den Attributen Einzelpreis, Menge, Gesamtpreis und Referenzfeld zum Beleg)
und erzeugen die benötigten Datensätze in der generischen Implementierung.