1 Themenübersicht
Die Hook-Contract-Definition dient der Beschreibung eines sogenannten HashCode Business Objekts, d.h. eines Business Objekts, dessen Schlüssel aus seinen Nutzdaten berechnet wird. Die Hook-Contract-Definition ermöglicht eine Entkopplung im Standardcode und die Einführung neuer HashCode Business Objekte als App.
Die Standard HashCode Business Objekte sind ab dem Release 5.0 auf die Verwendung dieser Hook-Contract-Definition umgestellt und können daher als Beispielimplementierungen herangezogen werden.
In dieser Dokumentation ist beschrieben, welche Erweiterungen Sie mit den Hook-Contract-Definitionen vornehmen können und welche Einschränkungen und Besonderheiten Sie beachten müssen.
Eine Schnittstellenbeschreibung finden Sie im zugehörigen Entwicklungsobjekt vom Typ Hook Contract. Ausführliche Informationen zu den in den Schnittstellen deklarierten Methoden finden Sie in den zugehörigen Java-Klassen.
Informationen zur Hook-Infrastruktur finden Sie in der Dokumentation „Hook Contracts“.
2 Zielgruppe
- Entwickler
3 Beschreibung
Diese Hook-Contract-Definition liefert Informationen über ein HashCode Business Objekt. Insbesondere sind die folgenden Angaben notwendig:
- Die Klasse des Business-Objects
- Den zu werdenden Adapter
- Ob Reorganisation unterstützt wird.
Hook-Contract-Definition: com.cisag.app.general.hook.log.HashCodeInfo
Die folgenden HashCode Business Objekte sind bereits im Standard auf die Verwendung dieser Hook-Contract-Definition umgestellt und dienen als Beispielimplementierungen.
HashCode Business Objekt | Hook-Contract-Implementierung |
Numerischer Wertebereich | com.cisag.app.general.extension.log.HashCodeInfoNumericRangeImpl |
Intrastat-Daten | com.cisag.app.general.intrastat.log.HashCodeInfoIntrastatDataInfoImpl |
Adressen | com.cisag.app.general.log.HashCodeInfoAddressDataImpl |
Lieferdaten | com.cisag.app.general.log.HashCodeInfoDeliveryDataInfoImpl |
Rechnungsdaten | com.cisag.app.general.log.HashCodeInfoInvoicingDataInfoImpl |
Auftragslieferdaten | com.cisag.app.general.log.HashCodeInfoOrderDeliveryDataInfoImpl |
Partner-Auftragsdaten | com.cisag.app.general.log.HashCodeInfoOrderPartnerDataInfoImpl |
Lagerrestriktion | com.cisag.app.inventory.location.log.HashCodeInfoStorageAreaRestrictionImpl |
Lagerstrategie | com.cisag.app.inventory.location.log.HashCodeInfoStorageAreaStrategyImpl |
Auftragslieferdaten Verteilaufträge | com.cisag.app.multiorg.log.HashCodeInfoDistributionOrderDeliveryDataInfoImpl |
Ausgabeeinstellungen Verteilaufträge | com.cisag.app.multiorg.log.HashCodeInfoDistributionOrderOutputSettingsImpl |
Ausgabeeinstellungen Produktionsauftrag | com.cisag.app.production.log.HashCodeInfoProductionOrderOutputSettingsImpl |
Bedingung oder Formel | com.cisag.app.production.parser.log.HashCodeInfoParameterizedStatementImpl |
Lieferanten-Auftragsdaten | com.cisag.app.purchasing.log.HashCodeInfoOrderSupplierDataInfoImpl |
Ausgabeeinstellungen Beschaffungsauftrag | com.cisag.app.purchasing.log.HashCodeInfoPurchaseOrderOutputSettingsImpl |
Kunden-Auftragsdaten | com.cisag.app.sales.log.HashCodeInfoOrderCustomerDataInfoImpl |
Ausgabeeinstellungen Vertriebsauftrag | com.cisag.app.sales.log.HashCodeInfoSalesOrderOutputSettingsImpl |
Technischer Hinweis:
Der Pfad der Hook-Contract-Implementierung ergibt sich wie folgt
- Namensraum der HashCode Business Objekts
- Präfix „HashCodeInfo“
- Name des Business Objekts
- Suffix „Impl“
3.1 Besonderheiten
Sämtliche HashCode Business Objekte werden durch die Klasse HashCodeLogic verwaltet. Hierfür wird ein Adapter benötigt.
Dieser Adapter muss die gleiche CisModuleId haben wie die Hook-Implementierung. Eine Ausnahme ist jedoch DefaultHashCodeAdapter (im Namensraum com.cisag.app.general.hook.log) – dieser Adapter darf von jeder HashCode-Hook-Implementierung verwendet werden.
Die folgenden primitiven Datentypen werden durch die Klasse DefaultHashCodeAdapter unterstützt:
- Binär
- GUID
- boolean
- byte
- char
- Dezimalzahl
- int
- long
- short
- String
- Valueset
Auch komplexe Datentypen (Parts), die nur die angegeben primitiven Datentypen enthalten, sowie Arrays werden unterstützt.
Sofern Sie ein neues HashCode Business Objekt anlegen, dass nur die angegebenen primitiven Datentypen enthält, so sollten Sie diese als Adapter den DefaultHashCodeAdapter verwenden.
Hinweis:
Bitte beachten Sie, dass Sie ein Attribut in ein HashCode Business Objekte nur dann aufnehmen sollten, wenn die Daten-Kombination häufig vorkommt. Gut geeignet sind z.B. Einstellungen und Stammdaten-Kombinationen, die nur in manchen Fällen individuell abweichen, aber in der Regel immer wieder gleich sind.
Bewegungsdaten, die z.B. vom aktuellen Tag abhängig sind, sind in der Regel nicht gut geeignet – daher sollten insbesondere die Datentypen byte, „Dezimalzahl“, int, long, short und String nur für Einstellungen verwendet werden und nicht für Daten, die sich z.B. mit jeder Belegposition ändern (keine Mengen und Werte).