Przejdź do głównej zawartości

Zmiany w IVersionedEntity

W API V9Preview3 zmieniono zachowanie rewizji dla IVersionedEntity.

Wcześniej wartość IVersionedEntity.Revision była współdzielona pomiędzy wszystkimi terminalami w tej samej grupie. Rewizja była przypisywana na głównej kasie, a następnie rozprowadzana do terminali podrzędnych. Z tego powodu, dla prawidłowej synchronizacji dostępu do danych, zalecano instalowanie wtyczek korzystających z funkcji edycji danych na głównej kasie. Po zainstalowaniu na innych terminalach, wtyczka mogła sporadycznie napotkać błędy podczas stosowania zmian.

Teraz każdy terminal Syrve POS utrzymuje własną rewizję obiektu. Oznacza to, że wyeliminowano nieuzasadnione błędy stosowania zmian spowodowane „specyfiką architektury” Syrve POS. Rewizja nie może już być używana jako kryterium porównywania obiektów między różnymi terminalami.

Za każdym razem, gdy obiekt jest modyfikowany, przypisywana jest nowa rewizja. Rewizja rośnie ściśle i monotonicznie. Jednak ten monotoniczny wzrost jest gwarantowany tylko w obrębie tej samej bazy danych terminala Syrve POS. Obiekty mogą otrzymać nowe wartości rewizji, jeśli baza danych Syrve POS zostanie odtworzona – na przykład przy zmianie głównego terminala. Aby to obsłużyć, wprowadzono nową metodę GetHostDatabaseId, która zwraca identyfikator bazy danych Syrve POS. Po odtworzeniu bazy danych Syrve POS przypisywany jest nowy identyfikator. Ponieważ identyfikator bazy danych nie może się zmienić podczas działania Syrve POS, wystarczy sprawdzić go raz przy uruchomieniu. Jeśli przy kolejnym uruchomieniu identyfikator bazy danych różni się od poprzedniego, należy przeładować dane zaczynając od rewizji zero, korzystając z GetChangedOrders, GetChangedDeliveryOrders, GetChangedKitchenOrders, GetChangedReserves.

Do SamplePlugin dodano przykład śledzenia resetów rewizji.