9.3 Tryby pracy sprzęgu z programem AsBase

 

Sprzęg z programem AsBase może pracować w dwóch trybach: w trybie własnym oraz w trybie kompatybilności Asix6. W trybie własnym (wewnętrznym) akcje operatorskie rodziny Asbase... wykonywane są samodzielnie, bez komunikacji z programem AsBase. W trybie kompatybilności, realizacja akcji przekazywana jest do uruchomionego lokalnie programu AsBase - działanie jest wtedy identyczne, jak w przypadku aplikacji wykonanych w technologii klasycznej.

Pomiędzy oboma trybami występują drobne różnice, które należy uwzględnić w trakcie projektowania aplikacji.

Uruchamianie lokalnej instancji programu AsBase

W trybie kompatybilności lokalne uruchomienie programu AsBase jest obowiązkowe. W przypadku trybu własnego jest to czynność opcjonalna, ale brak uruchomienia programu pociąga za sobą poniższe skutki:

a) Akcje AsbasePrint i AsbaseShow nie są wykonywane.

b) Nie są obsługiwane wewnętrzne funkcje programu AsBase, takie jak: warunki rejestracji i automatyczne receptury. Żeby te funkcje były obsługiwane, przynajmniej na jednym ze stanowisk aplikacji  powinien zostać uruchomiony program AsBase.

Definiowanie zmiennych używanych w zestawach zmiennych

Zmienne w zestawach zmiennych używanych do przeglądania danych pobieranych z bazy danych AsBase’a powinny być deklarowane w lokalnych kanałach wirtualnych (typu None). W przypadku trybu kompatybilności możliwy jest tylko jeden wariant. Zmienne procesowe używane do wymiany danych powinny być zdefiniowane w kanale typu None modułu Asmen. Wynika to z faktu, że AsBase komunikuje się bezpośrednio z serwerem danych procesowych, uruchomionym w ramach aplikacji Asix.Evo. Podsumowując, kanał zmiennych wymiany danych jest zdefiniowany jako None w pliku konfiguracyjnym serwera danych (używając programu Architekt), a w aplikacji Asix.Evo jest deklarowany jako typ Asix6.

W przypadku trybu własnego, powyższy sposób definicji zmiennych jest dopuszczalny, ale lepszym rozwiązaniem jest użycia kanału wirtualnego zdefiniowanego tylko w aplikacji Asix.Evo. W tym celu należy zmienne wymiany umieścić w kanale komunikacyjnym, dla którego nie zadeklarowano jawnie żadnego drajwera lub użyto drajwer  typu  None. Można też w definicji zmiennych nie podać w ogóle nazwy kanału, co spowoduje umieszczenie zmiennych w domyślnym kanale wirtualnym tworzonym automatycznie.

W przypadku trybu własnego korzystne może być zdefiniowanie zmiennych wymiany w osobnej bazie definicji zmiennych (typu XML lub MDB), której nazwa nie jest przekazywana do serwera danych procesowych w ramach jego pliku konfiguracyjnego.

Konwersje wartości zmiennych dla pól typu Data i Czas Trwania

Pola zestawów rejestracji i grup receptur typu Data i Czas Trwania przechowywane są w bazie danych jako kolumny typu datetime i int (ilość milisekund). W trybie kompatybilności wartości tych pól wpisywane są do zmiennych wymiany w postaci liczb całkowitych (odpowiednio ilość sekund od 1.1.1970 i ilość milisekund) lub w postaci tekstowej, jeżeli został określonych parametr format definicji pól. Projektant musi zapewnić zgodność typu zmiennych z typem pól. Jeżeli wartości przekazywane są w postaci liczbowej, to można stosować funkcje FromAsix6Date i FromAsix6Time  w celu konwersji wartości pól na typ DateTime i TimeSpan.

W przypadku trybu własnego wykonywana jest próba automatycznej konwersji wartości odczytywanej z bazy danych zgodnie z typem zmiennych wymiany.  Przy czym konwersja dotyczy zarówno odczytu danych jak i funkcji powodujących zapis pól w bazie danych. Z reguły najkorzystniejsze jest użycie zmiennych typu DateTime i TimeSpan, odpowiednio dla pól typu Data i Czas Trwania. Dla zmiennych typu tekstowego konwersja wykorzystuje parametr format definicji pól lub wykonywane jest formatowanie standardowe. Dla innych typów zmiennych data przekazywana jest jako ilość sekund od 1.1.1970, a czas trwania jako ilość milisekund.


 

Różnice w wykonaniu akcji operatorskich

W przypadku trybu własnego akcja AsbaseOpen może być ponownie wykonana dla tego samego połączenia (bez wcześniejszego zamknięcia) w celu:

a)  Odświeżenia danych pobranych z bazy danych w ramach połączenia w momencie jego pierwotnego otwarcia.

b) Zmiany wszystkich parametrów połączenia łącznie ze źródłami danych.

c) Zmiany wyrażenia filtrującego pobierane dane (w tym celu można też użyć akcję AsbaseNavigate w wariancie $Filter).

W trybie kompatybilności można stosować tylko akcję AsbaseNavigate, lub stosować metodę zamknięcia i ponownego otwarcia połączenia.

Akcja AsbaseLoadByValue jest dostępna tylko w przypadku pracy w trybie własnym.