Seitenhistorie
Info |
---|
Verfügbar ab Nuclos 4.14. |
Tipp |
---|
Zu diesem Feature gibt es ein Tutorial |
GoS zu
Konfiguration
Nummernkreise: Nummern müssen in der Regel für viele BOs generiert werden, ein entsprechendes Generisches Objekt könnte also z.B. „Nummerierbar“ heissen.
Belege: In verschiedenen Belegarten, z.B. Angebot, Auftrag, Lieferschein, Rechnung, Gutschrift müssen unter Umständen in gleicher Art und Weise Netto- und Bruttosummen gebildet werden, entsprechende Generische Objekte könnten also z.B. „Beleg“ und „Belegposition“ heissen.
Konfiguration
Voraussetzung ist die Konfiguration eines entsprechenden Generischen Businessobjekts im BO-Wizard und die Definition als solches über die Checkbox Generisches Businessobjekt.
Anschließend findet das Mapping der gewünschten BOs über diese Maske statt:
- Generisches Businessobjekt: Auswahl des BOs, das als generisches Businessobjekt definiert ist
- Implementierendes Businessobjekt: Auswahl des BOs, das in der generischen Implementierung verwendet werden soll
- Attribute: in diesem Unterformular wird die Zuordnung (das Mapping) der Attribute zwischen dem generischen BO und dem originalen BO vorgenommen. Ist ein Attribute im GBO als Pflichtfeld definiert, so muss ein Mapping angegeben werden. Es bedeutet nicht, dass das Attribute im originalen BO ein Pflichtfeld sein muss.
Begrifflichkeiten
GenericGenericBusinessobject (in Analogie zum Businessobject) = Beschreibung eines BOs, das nicht für sich existiert, sondern dem Zweck dient, Gemeinsamkeiten mehrerer BOs zu abstrahieren, um die Anwendung einer Regel für all diese BOs zu erlauben (ohne in der Regel mit instanceof-Prüfungen arbeiten zu müssen).
Wrapperklasse = Automatisch generierte (und unabänderliche) Klasse, die die Attribute (bzw. deren Getter und Setter) eines GenericObject auf ein BusinessObject mappt.
Implementierendes BO / Implementing BO = Hilfsbegriff für ein BO welches auf ein GO GBO gemappt ist. Dem Implementing BO sieht man nicht an, dass es ein Implementing BO ist.
Generische Regel = Hilfsbegriff für eine Regel, die mit GOs GBOs arbeitet.
Aspekte
Generic Objects
- GenericObjects Generische Businessobjekte (GBO) können auf beliebig viele Businessobjekte (Implementing Implementierende BOs) gemappt werden.
- Ein Businessobjekt (Implementing Implementierendes BO) kann auf beliebig viele GenericObjects GBOs gemappt sein.
- Die Implementing Implementierenden BOs und deren Mappings sind Teil desselben Nuclets, das Mapping muss nicht separat zugewiesen werden.
- GenericObjects GBOs werden über den BO-Wizard Businessobjekt erstellt. GOs GBOs können Referenzfelder auf andere GOs GBOs haben (siehe Beispiel Beleg und Belegposition im Tutorial).
- Das Mapping wird mithilfe der oben beschriebenen Maske erstellt
- GenericObjects GBOs können vom RuleContext nur mittels einer neuen Methode getGenericObjectgetGenericBusinessObject(Class GOClassGBOClass) abgeholt werden. Analog werden in GOs GBOs Getter für die abhängigen GOs GBOs benötigt (siehe Beispiel Beleg und Belegposition).
- GenericObjects GBOs werden nur durch Teile der Nuclos API unterstützt. Es sind insbesondere (trivialerweise) keine QueryProvider- oder StatemodelProvider-Aufrufe etc. für GOs GBOs möglich.
- GenericObjects GBOs erhalten je Implementing BO einen Konstruktur, um ein Implementing Implementierendes BO in das GenericObject Generische BO umwandeln zu können. Damit wird eine Verwendung außerhalb des RuleContextes möglich, wenn z.B. in einem Job ein normales BO zu einem Generic-Object GBO werden soll, um es einer Generic-Rule zu übergeben (MyGenericUtils.calculateSums(<GenericObject> GO<GenericBusinessObject> gbo).
- GenericObjects GBOs können gelesen (Getter) und geändert (Setter), später ggf. auch gelöscht werden. Die entsprechenden Aufrufe werden an das zugrundeliegende, gemappte BusinessObject BO „delegiert“.
Generische Regeln
- müssen manuell an ein Implementing Implementierendes BO gehängt werden. Die Regelverwendungen sind damit im selben Nuclet wie die Implementing Implementierenden BOs.
- Ist das im Regelkontext befindliche BO kein Implementing Implementierendes BO des GOGBO, das versucht wird, aus dem Regelkontext zu holen, erfolgt eine Fehlermeldung zur Laufzeit.