Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Zadania cykliczne

Podsumowanie:

Funkcja zadań cyklicznych służy do okresowego wykonywania akcji zgodnie ze zdefiniowanym wyrażeniem Cron. W zadaniach cyklicznych można używać akcji następujących typów:

  • SQL do bazy systemowej,
  • Wysyłka e-mail,
  • Zapytania do Webserwisów,
  • Algorytm C#,
  • Importowanie dokumentów.

AdminSPA > INTEGRACJE > Zadania cykliczne > Lista.../Historia...

Definiowanie zadania cyklicznego

Aby dodać nowe zadanie cykliczne, kliknij kolejno INTEGRACJE > Zadania cykliczne > Lista zadań cyklicznych, a następnie kliknij przycisk Nowe zadanie w lewym górnym rogu. Zostanie wyświetlone okno dialogowe Nowe zadanie cykliczne.

W tym oknie określ następujące ustawienia:

  • Aplikacja: nazwa aplikacji, do której zostanie przypisany tworzony obiekt; wszystkie obiekty przypisane do aplikacji można wraz z nią wyeksportować, używając polecenia Migrator aplikacji w sekcji ADMINISTRACJA menu głównego.
  • Moduł: nazwa modułu aplikacji, do którego zostanie przypisany tworzony obiekt.
  • Kod: kod zadania cyklicznego.
  • Nazwa: nazwa zadania cyklicznego.
  • Aktywne: określa, czy dla zadania ma się rozpocząć odliczanie czasu do wykonania zadania zgodnie z wyrażeniem cron.
  • Cron: wyrażenie definiujące interwał wykonania zadania cyklicznego; szczegóły poniżej.
  • Typ akcji: wybierz typ akcji; dostępne wartości:
    • Akcja SQL
    • Akcja Email
    • Akcja WebService
    • Akcja Algorytm C#
    • Akcja importu dokumentów
  • Wybrana akcja: wybierz akcję do wykonania w ramach zadania cyklicznego; dostępne są tylko akcje globalne.

Dla zdefiniowanych zadań cyklicznych rejestrowana jest wspólna historia wykonania (INTEGRACJE > Zadania cykliczne > Historia wykonania zadań). Utworzenie nowego aktywnego zadania oraz zmiana stanu z nieaktywnego na aktywne powoduje utworzenie w historii wpisu ze statusem Dodano do harmonogramu (rozpoczęcie odliczania interwału cron). Zmiana stanu z aktywnego na nieaktywne, a także usunięcie zadania skutkuje wpisem Usunięto z harmonogramu. W przypadku aktualizacja zadania odliczanie interwału cron jest resetowane (wpis o usunięciu, a następnie dodaniu). Ponadto rejestrowane są statusy Rozpoczęto (rozpoczęcie wykonywania zadania), Zakończono (zakończenie wykonywania zadania) oraz Błąd. W tym ostatnim przypadku rejestrowane są szczegóły wystąpienia błędu.

Definiowanie harmonogramu

Harmonogramy definiuje się w formie specjalnych wyrażeń składających się z siedmiu pól, które rozdziela się znakiem spacji i które reprezentują (od lewej):

  • sekundy
  • minuty
  • godziny
  • dzień miesiąca
  • miesiąca
  • dzień tygodnia
  • rok (opcjonalnie)

Na przykład wyrażenie 0 0 12 ? * WED oznacza „w każdą środę o godzinie 12.”.

W poszczególnych polach można wpisywać:

  • pojedyncze wartości, np. WED, jak w powyższym przykładzie)
  • listy wartości, tj. kilka wartości oddzielonych przecinkami, np. "MON, WED, SAT" („w poniedziałek, środę i sobotę”)
  • zakresy wartości, np. "MON-WED" („od poniedziałku do środy”)

Możliwe jest także używanie zakresów na listach, np. "MON-WED, SAT" („od poniedziałku do środy i w soboty”).

Znak wieloznaczny * oznacza dowolną możliwą wartość dla danego pola. Gwiazdka w polu miesiąca oznacza „w każdym miesiącu”, a w polu dnia tygodnia oznacza „w każdym dniu tygodnia”.

Wszystkie pola mają zestaw obsługiwanych wartości. Dla sekund i minut są to liczby od 0 do 59 dla sekund i minut, dla godzin liczby od 0 do 23 dla godzin. W polu dnia miesiąca można wpisać dowolną liczbę od 0 do 31 (pamiętając o liczbie dni w danym miesiącu). Miesiące można określać liczbowo od 0 do 11 lub skrótami tekstowymi JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV i DEC. Dni tygodnia można określać liczbami od 1 do 7 (1 oznacza niedzielę) lub skrótami SUN, MON, TUE, WED, THU, FRI i SAT.

Znak / oznacza przyrosty wartości. Na przykład wpisanie 0/15 w polu minut będzie oznaczało „co kwadrans od minuty 0”, natomiast wartość 3/20 w tym polu oznacza „co dwadzieścia minut, poczynając od 3. minuty” (to samo, co wpisanie 3, 23, 43).

W pola dnia miesiąca i dnia tygodnia można używać pytajnika (?), który oznacza „brak określonej wartości”. Przydaje się to w przypadku konfigurowania harmonogramu z użyciem tylko niektórych pól. W tych polach można także używać litery L, która oznacza ostatni (ang. Last) dzień miesiąca (31 stycznia, ale 28 lutego) lub ostatni dzień tygodnia (7 lub SAT). Jednak użycie tej litery wraz z określeniem dnia tygodnia, np. FRIL (lub 6L), będzie oznaczało ostatni taki dzień tygodnia w miesiącu, czyli w tym przykładzie „ostatni piątek miesiąca”. Z opcją L nie można używać zakresów ani list.

Litera W oznacza dzień roboczy (ang. Weekday) przypadający najbliżej podanego dnia miesiąca. Na przykład 15W oznacza „najbliższy dzień roboczy po 15 dniu miesiąca”.

Symbol # jest używany w polu dnia tygodnia służy do określania kolejnego dnia tygodnia w miesiącu. Na przykład FRI#3 (lub 6#3) oznacza „trzeci piątek miesiąca”.

Jako pomocy w konstrukcji wyrażeń cron można użyć generatora online: https://www.freeformatter.com/cron-expression-generator-quartz.html.

Przykłady

  • 0 0/5 * * * ?: co pięć minut
  • 10 0/5 * * * ?: co pięć minut, zaczynając od 10 sekundy po każdej pełnej godzinie (np. 10:00:10, 10:05:10 itp.)
  • 0 30 10-13 ? * WED,FRI: o godzinie 10:30, 11:30, 12:30 i 13:30 w każdą środę i piątek.
  • 0 0/30 8-9 5,20 * ?: co pół godziny między 8:00 i 10:00 w każdy 5. i 20. dzień miesiąca; NIE obejmuje godziny 10:30, tylko 8:00, 8:30, 9:00 i 9:30.

Konfiguracja modułu Quartz

Za uruchamianie zadań cyklicznych odpowiada moduł Quartz w serwisie TaskService. W pliku appsettings.json serwisu TaskService znajduje się sekcja Quartz (domyślne wpisy przedstawiono poniżej), w której można dopisywać odpowiednie ustawienia konfiguracyjne. Dokumentację dostępnych opcji konfiguracji można znaleźć pod adresem https://www.quartz-scheduler.net/documentation/quartz-3.x/configuration/reference.html.

  "Quartz": {
    "quartz.threadPool.threadCount": "10"
  }

To ustawienie określa liczbę wątków w puli, do której wysyłane są instrukcje uruchamiania zadań cyklicznych. W przypadku, kiedy przydzielona liczba będzie zbyt mała na obsłużenie zaplanowanych zadań, może dojść do sytuacji, że indywidualna iteracja zadania cyklicznego nie zostanie wykonana. Moduł Quartz obsługuje tę sytuacją w taki sposób, że po upływie zadanego czasu (ustawienie quartz.jobStore.misfireThreshold, domyślnie 60 000 ms) ponowi próbę wykonania takiego zadania.

|← Karta Postproces |↑ Do góry |→ ADMINISTRACJA |

Copyright © 2025 OPTEAM SA. Theme Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license.