Zadania aplikacji uruchamianie cyklicznie (gniazda cykliczne)

Jesteś tutaj:
< Powrót

Zadania aplikacji uruchamiane cyklicznie (gniazda cykliczne)

Czasami może pojawić się potrzeba uruchamiania funkcji w pewnych odstępach czasu. Przykładowo można monitorować pojawienie się określonych warunków np. czy pojawiło się zamówienie ze sklepu internetowego i uruchomić powiadomienie dla użytkownika aby zweryfikował dokument znajdujący się w buforze zamówień. W celu okresowego uruchamiania zestawu funkcji w WAPRO Mag wprowadzono zadania aplikacji uruchamiane cykliczne (gniazda cykliczne).
Za pomocą gniazd cyklicznych można np. oprogramować transmisję dokumentów między różnymi źródłami danych. Gniazda cykliczne są niezależne od wersji SQL Servera ponieważ uruchamiane są przez aplikację na każdym, aktywnym w danym momencie komputerze z uruchomionym programem.

Rys. 45  Zadania aplikacji uruchamiane cyklicznie

Dostępnych jest 9 niezależnych zadań aplikacji uruchamianych cyklicznie. Każde zadanie to gniazdo rozszerzeń, w którym dostępne są wszystkie, typowe dla gniazd funkcje. Parametry każdego zadania ustala się pod przyciskiem „Parametry zadania” (Rys. 46).

Rys. 46  Parametry zadania aplikacji uruchamianego cyklicznie

Zadanie może być w stanie aktywnym lub nieaktywnym tzn. możemy w dowolnym momencie włączyć lub wyłączyć wykonanie zadania poprzez zaznaczenie opcji „wykonuj zadanie cyklicznie” i zatwierdzenie formularza (Rys. 46).

Cykl czasu co ile zadanie ma być uruchamiane podaje się w godzinach i minutach przy czym najmniejszą jednostką czasu jak może zostać określona dla zadania są 3 minuty. Częstsze uruchamianie mogłoby spowodować zbyt duże obciążenie aplikacji i w efekcie spowolnić pracę programu.  Cykl czasu rozpoczyna się z chwilą uruchomienia aplikacji toteż na każdym stanowisku najczęściej moment aktywacji zadania będzie inny nawet dla tego samego zadania. Taki tryb uruchamiania zadań określamy mianem asynchronicznego wykonania zadań aplikacji.
Zadanie aplikacji uruchamiane cyklicznie może być wykonywane niezależnie na każdym, aktywnym stanowisku pracy lub też może zostać uruchomione tylko na jednym zaś na pozostałych wstrzymane do czasu nadejścia kolejnego momentu uruchomienia zadania, który następuje po upływie określonego cyklu czasowego.

Jeśli w parametrach zadania określono, że ma być wykonywane niezależnie (zaznaczona opcja „wykonuj to zadanie równocześnie dla wielu stanowisk”) wówczas zadanie zostanie wykonane nawet jeśli inne stanowisko w tym samym czasie również je wykonuje. W przypadku gdy nie zaznaczymy opcji „wykonuj to zadanie równocześnie dla wielu stanowisk” wówczas program analizuje przed każdym uruchomieniem zadania czy inne stanowisko w danym momencie nie wykonuje już tego zadania i, jeśli taka sytuacja ma miejsce, przerywa wykonanie aż do kolejnego momentu uruchomienia, który może wystąpić na dowolnym stanowisku.

Asynchroniczne wykonywanie zadań aplikacji w różnych momentach czasowych często jest niepotrzebne i może powodować większe obciążenie serwera. Wówczas najlepiej zaznaczyć opcję „synchronizuj cykle wykonania na stanowiskach” co spowoduje, że zanim zadanie zostanie uruchomione zegar cykli wykonania zostanie ustawiony na moment ostatniego uruchomienia zadania na dowolnym stanowisku czyli czas pozostały do wykonania zostanie skorygowany. W efekcie pomimo tego, że kolejne stanowiska mogą w dowolnym momencie wystartować odmierzając czas cykli wykonania zadań to po pewnym czasie wszystkie końcówki aplikacji będą wykonywać zadania dokładnie w tym samym momencie (z dokładnością do kilku sekund). Oczywiście przy odznaczonej opcji „wykonuj to zadanie równocześnie dla wielu stanowisk” uzyskamy efekt, że w danym momencie zadanie zostanie uruchomione tylko raz niezależnie od ilości stanowisk i program nie będzie podejmował nawet próby uruchomienia zadania aż do kolejnego cyklu.

Sama synchronizacja czasu zadań nie jest obciążająca ani dla serwera bazy danych ani dla poszczególnych stanowisk pracy. Zadania wykonywane są w niezależnych wątkach aplikacji WAPRO Mag w systemie Windows ze wszystkimi konsekwencjami tego faktu. Z punktu widzenia użytkownika zadanie wykonywane jest w tle jego bieżącej aktywności. O tym, które stanowisko aktywuje zadanie do wykonania decydują często milisekundy potrzebne dla procesora danej końcówki na przełączenie wątku a także praca użytkownika, która również zajmuje czas potrzebny dla procesu aktywującego zadanie. Nie można zatem jednoznacznie wskazać, które stanowisko będzie wykonywało dane zadanie ale można mieć pewność, że zadanie zostanie wykonane zgodnie ze zdefiniowanymi parametrami uruchamiania.
Przy określaniu parametrów wykonania zadania istnieje również możliwość zdefiniowania zakresu czasu kiedy dane zadanie jest obowiązujące (Rys. 46). Po upływie tego czasu zadanie przejdzie w stan nieaktywny (będzie wyłączone). Jest to szczególnie przydatne jeśli zadanie ma charakter tymczasowy.