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).
 
                        


