Wprowadzenie
Definicja Hook Contract służy do opisu obiektu biznesowego typu HashCode, czyli obiektu biznesowego, którego klucz jest wyliczany na podstawie jego danych biznesowych. Definicja Hook-Contract umożliwia rozdzielenie w standardowym kodzie oraz wprowadzenie nowych obiektów biznesowych HashCode w postaci aplikacji.
Niniejszy artykuł opisuje, jakie rozszerzenia można wprowadzać za pomocą definicji Hook Contract oraz jakie ograniczenia i specyficzne atrybuty należy przy tym uwzględnić.
Opis interfejsu można znaleźć w odpowiednim obiekcie deweloperskim typu Hook Contract. Szczegółowe informacje o metodach zadeklarowanych w interfejsach znajdują się w powiązanych klasach Java.
Informacje na temat infrastruktury Hook Contract znajdują się w artykule Hook Contract.
Grupa docelowa
- Deweloperzy
Opis
Ta definicja Hook Contract dostarcza informacji o obiekcie biznesowym typu HashCode. W szczególności konieczne jest podanie następujących danych:
- Klasa obiektu biznesowego
- Adapter, który ma zostać użyty
- Informacja, czy wspierana jest reorganizacja
Definicja Hook Contract: com.cisag.app.general.hook.log.HashCodeInfo
Następujące obiekty biznesowe typu HashCode zostały już przystosowane do wykorzystania tej definicji Hook Contract w standardzie i służą jako przykładowe implementacje.
Obiekt biznesowy typu HashCode | Implementacja Hook Contract |
Schematy numeracji | com.cisag.app.general.extension.log.HashCodeInfoNumericRangeImpl |
Dane Intrastat | com.cisag.app.general.intrastat.log.HashCodeInfoIntrastatDataInfoImpl |
Adresy | com.cisag.app.general.log.HashCodeInfoAddressDataImpl |
Dane dostawy | com.cisag.app.general.log.HashCodeInfoDeliveryDataInfoImpl |
Dane fakturowania | com.cisag.app.general.log.HashCodeInfoInvoicingDataInfoImpl |
Dane zleceń dostawy | com.cisag.app.general.log.HashCodeInfoOrderDeliveryDataInfoImpl |
Dane zamówień partnerów | com.cisag.app.general.log.HashCodeInfoOrderPartnerDataInfoImpl |
Ograniczenia magazynowe | com.cisag.app.inventory.location.log.HashCodeInfoStorageAreaRestrictionImpl |
Strategia magazynowania | com.cisag.app.inventory.location.log.HashCodeInfoStorageAreaStrategyImpl |
Dane dostawy zleceń dystrybucyjnych | com.cisag.app.multiorg.log.HashCodeInfoDistributionOrderDeliveryDataInfoImpl |
Ustawienia wydruku zleceń dystrybucyjnych | com.cisag.app.multiorg.log.HashCodeInfoDistributionOrderOutputSettingsImpl |
Ustawienia wydruku zleceń produkcyjnych | com.cisag.app.production.log.HashCodeInfoProductionOrderOutputSettingsImpl |
Warunki i formuły | com.cisag.app.production.parser.log.HashCodeInfoParameterizedStatementImpl |
Dane zamówienia dostawcy | com.cisag.app.purchasing.log.HashCodeInfoOrderSupplierDataInfoImpl |
Ustawienia wydruku zamówień zakupu | com.cisag.app.purchasing.log.HashCodeInfoPurchaseOrderOutputSettingsImpl |
Dane zamówienia klienta | com.cisag.app.sales.log.HashCodeInfoOrderCustomerDataInfoImpl |
Ustawienia wydruku zamówień sprzedażowy | com.cisag.app.sales.log.HashCodeInfoSalesOrderOutputSettingsImpl |
– Nazwa przestrzeni nazw obiektu biznesowego typu HashCode
– Prefiks HashCodeInfo
– Nazwa obiektu biznesowego
– Sufiks Impl
Cechy szczególne
Wszystkie obiekty biznesowe HashCode są zarządzane przez klasę HashCodeLogic
. W tym celu wymagany jest adapter.
Adapter ten musi posiadać tę samą wartość CisModuleId co implementacja Hook Contract. Wyjątkiem jest DefaultHashCodeAdapter
(w przestrzeni nazw com.cisag.app.general.hook.log) – ten adapter może być używany przez dowolną implementację Hook Contract: HashCode.
Następujące pierwotne typy danych są obsługiwane przez klasę DefaultHashCodeAdapter:
- Binary
- GUID
- boolean
- byte
- char
- liczba dziesiętna
- int
- long
- short
- String
- Valueset
Obsługiwane są również złożone typy danych (Part), które zawierają tylko określone pierwotne typy danych i tablice.
W przypadku tworzenia nowego obiektu HashCode Business, który zawiera tylko określone pierwotne typy danych, należy użyć adaptera DefaultHashCodeAdapter jako adaptera.
Dane operacyjne, które np. zależą od bieżącej daty, z reguły nie są odpowiednie – dlatego typy danych takie jak byte, liczba dziesiętna, int, long, short oraz String powinny być używane wyłącznie do ustawień, a nie do danych, które zmieniają się np. z każdą pozycją dokumentu (np. ilości i wartości).