Przejdź do głównej zawartości

Harmonogram (Scheduler)

Harmonogram (Scheduler) uruchamia proces według planu, bez niczyjego klikania. Nasz plan: codziennie odczytać zamówienia i zapisać krótkie podsumowanie. Żeby to zadziałało, Order Desk musi najpierw zapamiętywać swoje zamówienia.

Utwórz tabelę Orders z kolumnami Status (tekst), Discount (decimal), GrossAmount (decimal), PlacedAt (data i godzina), a potem zatwierdź zmiany i zastosuj je (wygeneruj tabelę). Tabela musi być wygenerowana, zanim procesy będą mogły ją odczytywać i zapisywać. Tabele omawiamy dokładniej w sekcji 2.

PlaceOrder ma zapisywać każde zamówienie, złożone czy odrzucone, więc dodaj SaveData za CatchError, tam gdzie obie ścieżki się spotykają. SaveData zapisuje wiersze do tabeli.

  • Zadeklaruj Discount i GrossAmount poza CatchError i pozwól, by ExecuteProcess wypełnił je od środka.
  • W polu rekordów zwróć nowy obiekt typu tabeli (użyj new, nazwy modułu i typu; IntelliSense podpowie wymagane właściwości). Id możesz pominąć — generuje się samo.
  • PlacedAt: wartość typu DateTime, np. DateTime.UtcNow.

Złóż dwa zamówienia, poprawne i puste: oba wiersze pojawią się w Orders.

Utwórz tabelę DailySummary (Day, OrdersPlaced, OrdersRejected, TotalGross) i proces DailyOrderSummary. Dodaj LoadData: wczytuje wiersze z tabeli lub zapytania do zmiennej. Wybierz Orders i użyj filtra, żeby PlacedAt był dzisiaj albo później (pomoże zmienna z dzisiejszą datą). Wynikiem jest lista TodayOrders.

Dodaj trzy zmienne: zamówienia złożone, zamówienia odrzucone i łączna kwota brutto, wszystkie z wartością początkową 0. Dodaj ForEach po wczytanych zamówieniach i If na Status:

  • złożone: dodaj 1 do zamówień złożonych i dodaj kwotę brutto zamówienia do sumy (użyj zmiennej OrderGross wewnątrz gałęzi),
  • w przeciwnym razie: dodaj 1 do zamówień odrzuconych.

Za pętlą dodaj SaveData do DailySummary: dzisiejsza data, oba liczniki i suma. Uruchom proces raz ręcznie i sprawdź nowy wiersz.

W panelu administracyjnym otwórz menu harmonogramu i kliknij new automation:

  1. Nadaj nazwę (i opcjonalnie opis).
  2. Wybierz aplikację i proces DailyOrderSummary.
  3. Ustaw datę i godzinę startu oraz częstotliwość powtórzeń (codziennie).
  4. Potwierdź.
  • Gdy kolejne uruchomienie startuje, a poprzednie wciąż trwa: zezwól na nie, pomiń je albo poczekaj na zakończenie poprzedniego.
  • Gdy usługa nie działała w zaplanowanym czasie: uruchom w następnym terminie albo od razu po starcie.

Nieudane uruchomienie można ponowić, z przerwą pomiędzy próbami. Maksymalny czas działania pomaga wyłapać zawieszone uruchomienia. Zadanie pokazuje ostatni wynik, ewentualny błąd i termin następnego uruchomienia. Pamiętaj: zaplanowane uruchomienia działają jako użytkownik systemowy, który widzi wszystkie wiersze — także te, których zwykły użytkownik by nie zobaczył.