Przejdź do głównej zawartości

Zadania aplikacji uruchamiane cyklicznie (gniazda cykliczne)

Czasami może pojawić się potrzeba uruchamiania funkcji gniazd rozszerzeń 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 Anywhere 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 dziewięć 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 Parametry zadania aplikacji uruchamianego cyklicznie

Zadanie może być w stanie aktywnym lub nieaktywnym, tzn. można w dowolnym momencie włączyć lub wyłączyć wykonanie zadania poprzez zaznaczenie opcji Wykonuj zadanie cyklicznie i zatwierdzenie formularza.

Cykl czasu, w którym zadanie ma być uruchamiane podaje się w godzinach i minutach, przy czym najmniejszą jednostką czasu, jak może zostać określona dla zadania są trzy 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 stanowisku, zaś na pozostałych może być 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 opcja Wykonuj to zadanie równocześnie dla wielu stanowisk nie zostanie włączona, 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 uruchomi się zadanie, 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). Przy odznaczonej opcji Wykonuj to zadanie równocześnie dla wielu stanowisk zadanie zostanie uruchomione tylko raz w danym momencie, niezależnie od liczby 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 Anywhere ze wszystkimi konsekwencjami. 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. 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.