Die Generische Implementierung dient der Umsetzbarkeit generischer Regeln. D.h. Regeln, die für mehr als ein Businessobjekt genutzt werden können.
Der normale Regelkontext liefert immer das konkrete BO (z.B.
Auftrag a = context.getBusinessObject(Auftrag.class)).
Es gibt manchmal aber Anforderungen, die für eine Vielzahl von BOs gleichermaßen umgesetzt werden könnten, z.B. die Vergabe einer fortlaufenden Nummer beim Speichern. Die Umsetzung würde dann innerhalb einer Regel durch die Verwendung von instanceof gelöst werden. Etwa so:
... final Modifiable<?> businessObject = context.getBusinessObject(Modifiable.class); if (businessObject instanceof Geschaeftspartner) { Geschaeftspartner gp = ((Geschaeftspartner) businessObject); ... } else if (businessObject instanceof Ansprechpartner) { ... } else if (businessObject instanceof Angebot) { ... } else if (businessObject instanceof Auftrag) { ... }... ... |
Mit Hilfe der Generischen Implementierung ist es nun möglich, die Gemeinsamkeiten mehrerer BOs in "generischen Objekten" zu abstrahieren und Regeln für solche GBOs zu implementieren.
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.
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:
GenericBusinessobject (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 = Hilfsbegriff für ein BO welches auf ein 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 GBOs arbeitet.
Generic Objects
Generische Regeln