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ów można znaleźć w artykule Hook Contracts.
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).



