1. Základní informace

  • Naplánované úlohy jsou programy spouštěné na pozadí operačního systému Windows. Konfigurace naplánovaných úloh se provádí v „Plánovači úloh“ resp. „Task Scheduleru“.
  • Účelem naplánovaných úloh je periodické spouštění spustitelných programů
    • jednou denně, týdně nebo měsíčně v daný čas (hodina a minuta) – například v 04:00 ráno,
    • každý den opakovaně od daného času (hodina a minuta) v daném intervalu (počet hodin/minut) a po danou dobu (počet hodin) – například od 06:00 ráno v intervalu 30 minut po dobu 18 hodin,
    • nebo v libovolných kombinacích i s použitím omezení na konkrétní dny – například
      • každé pondělí, středu a pátek ve 22:00,
      • prvního ledna, března a června ve 08:00 ráno,
      • apod.

1.1. Skripty na tlačítkách (ovládacích prvcích Button)

  • NET Genium využívá naplánovaných úloh pro periodické spouštění skriptů, definovaných v rámci tlačítek umístěných na nahlížecích stránkách.
  • Pro jednodušší a uživatelsky přívětivější nastavení naplánovaných úloh lze využít Setup.exe, což umožňuje plánování bez přímého zasahování do systémových nastavení.
    • Spusťte Setup.exe z adresáře bin.
    • Vyberte možnost pro naplánování úlohy pro RunScript.exe, která se objeví mezi posledními volbami v rozhraní.
    • Zadejte ID tlačítka pro skript, který chcete naplánovat.
    • Nastavte čas a frekvenci spouštění skriptu a potvrďte tlačítkem „Nastavit“.
  • Pro spuštění skriptu definovaného tlačítkem slouží program „RunScript.exe“, umístěný v adresáři „bin“ každého NET Genia.
    • Použití: „RunScript.exe <ID> [<UserID>]“
    • Parametr „ID“ značí ID tlačítka, a je možné ho zjistit v administrátorském režimu v tooltipu, který se zobrazí po zastavení ukazatele myši nad odkazem „Upravit Button ID ...“ nebo nad odkazem „Upravit skript“.
    • Volitelný parametr „UserID“ představuje ID uživatele, pod jehož přihlašovacím jménem bude skript spuštěn. Pokud volitelný parametr není uveden, bude skript spuštěn pod anonymním uživatelem a tiskové šablony vytištěné skriptem se v takovém případě sestaví bez ohledu na přístupová práva. Se zadaným parametrem platí práva daného uživatele. Stejně se tiskové šablony sestaví i ve skriptech, které skript spustí serverovou funkcí „SCHEDULESCRIPT“.
    • Skript tlačítka běží v jedné databázové transakci, kterou potvrdí až jeho úspěšné dokončení; serverová funkce „COMMIT()“ ji uprostřed skriptu potvrdí a začne novou. Skripty spuštěné serverovou funkcí „SCHEDULESCRIPT“ běží až po potvrzení skriptu tlačítka, každý ve vlastní transakci. Skončí-li některý z nich chybou, nespustí se už zbývající skripty naplánované týmž skriptem, ale zápisy skriptu tlačítka i dříve dokončených naplánovaných skriptů zůstanou uložené. E-mail odeslaný krokem „Odeslat e-mail“ ale odchází okamžitě, takže ho pozdější chyba skriptu nevrátí. Soubor „Config\Demo.txt“ zabrání zápisům kroků skriptu do databáze i odesílání e-mailů ze skriptu. Externí funkce volané ze skriptu se ale spustí normálně, s parametrem „test“ s hodnotou „false“, a do databáze zapsat mohou.
    • Program vrací návratový kód 0 při úspěšném dokončení a 1 při chybě – i tehdy, když skript tlačítka neexistuje nebo je prázdný, když ID nepatří tlačítku nahlížecí stránky, nebo když selže skript spuštěný serverovou funkcí „SCHEDULESCRIPT“. Podrobnosti chyby jsou v logu „Errors“. Návratový kód 1 vrací program bez spuštění skriptu i tehdy, je-li NET Genium deaktivované (soubor „Config\UnderConstruction.txt“) nebo právě probíhá jeho aktualizace – důvod v takovém případě zapíše do logu „Warnings“. Spuštěný bez parametrů vypíše jen způsob použití a vrátí 1 bez zápisu do logu.
    • Serverové funkce „SCHEDULEPRINT“ a „SCHEDULEPRINTOFATTACHMENT“ se při spuštění programem „RunScript.exe“ nevykonají, a to ani ve skriptech spuštěných serverovou funkcí „SCHEDULESCRIPT“. Bez účinku zůstanou i funkce „SCHEDULEFORM“, „SCHEDULEVIEWPAGE“, „SCHEDULEURL“, „SCHEDULEBACK“, „SCHEDULEENTRY“, „SCHEDULEPORTLETS“ a „SCHEDULEMAILMESSAGE“, které plánují navigaci po dokončení skriptu. Tiskovou šablonu lze ve skriptu vytisknout do přílohy serverovou funkcí „PRINTATTACHMENT“.
  • Pomocí naplánované úlohy není možné napřímo spouštět skripty, definované v rámci tlačítek umístěných v editačních formulářích. Toto omezení je ale možné snadno vyřešit spuštěním tlačítka na nahlížecí stránce, které následně pomocí serverové funkce „SCHEDULESCRIPT(int button, int id)“ spustí tlačítko umístěné v editačním formuláři.

1.2. Servisní nástroje

  • NET Genium využívá naplánovaných úloh také pro periodické spouštění servisních nástrojů:
    • Zálohování databází a souborů pomocí programu „BackupServer.exe“
    • Zálohování databází pomocí programu „SqlBackup.exe“
    • Zálohování souborových příloh pomocí programu „FileBackup.exe“
    • Automatické aktualizace NET Genia na nejnovější verzi pomocí programu „Update.exe“
    • Pravidelné odesílání neúspěšně odeslaných e-mailů z adresáře „SMTP“ pomocí programu „ResendEmlFiles.exe“

2. Vytváření naplánovaných úloh pomocí programu „Setup.exe“

  • „Setup.exe“ je doporučovaný způsob pro vytváření naplánovaných úloh spojených se spouštěním skriptů tlačítek umístěných na nahlížecích stránkách. Naplánované úlohy vytvořené programem „Setup.exe“ je možné dále ručně nakonfigurovat přímo v „Plánovači úloh“ resp. „Task Scheduleru“.
  • Všechny naplánované úlohy jsou vytvářeny ve složce „NET Genium“, která již buď existuje, nebo jí „Setup.exe“ vytvoří.
  • Naplánované úlohy jsou nastaveny tak, aby byly spouštěny v kontextu uživatelského účtu „SYSTEM“ s nejvyššími oprávněními.
  • Spusťte program „Setup.exe“, který se nachází v adresáři „bin“ každého NET Genia.

Obrázek.png

  • Zaškrtněte volby, které chcete zvolit dle níže uvedeného popisu:
  • „Vytvořit naplánovanou úlohu pro BackupServer.exe (záloha serveru)“
    • Zaškrtněte tuto volbu, pokud chcete automaticky vytvořit naplánovanou úlohu pro pravidelné zálohování serveru – databáze a adresáře.
  • „Vytvořit naplánovanou úlohu pro SqlBackup.exe (záloha databáze)“
    • Zaškrtněte tuto volbu, pokud chcete automaticky vytvořit naplánovanou úlohu pro pravidelné zálohování databáze.
  • „Vytvořit naplánovanou úlohu pro FileBackup.exe (záloha příloh)“
    • Zaškrtněte tuto volbu, pokud chcete automaticky vytvořit naplánovanou úlohu pro pravidelné zálohování souborových příloh. Úloha se vytvoří bez cílového adresáře zálohy, který je pro program „FileBackup.exe“ povinný – v „Plánovači úloh“ je nutné cílový adresář doplnit do pole „Přidat argumenty“, jinak úloha skončí chybou.
  • „Vytvořit naplánovanou úlohu pro Update.exe (aktualizace)“
    • Zaškrtněte tuto volbu, pokud chcete automaticky vytvořit naplánovanou úlohu pro pravidelnou aktualizaci NET Genia na novou verzi.
  • „Vytvořit naplánovanou úlohu pro ResendEmlFiles.exe“
    • Zaškrtněte tuto volbu, pokud chcete automaticky vytvořit naplánovanou úlohu pro pravidelné odesílání neúspěšně odeslaných e-mailů z adresáře „SMTP“.
  • „Vytvořit naplánovanou úlohu pro RunScript.exe“
    • Zaškrtněte tuto volbu, pokud chcete automaticky vytvořit naplánovanou úlohu pro spuštění skriptu s daným ID, ve stanovený čas, případně s možností pravidelného opakování úlohy 2x za hodinu po dobu 18 hodin.
    • Úloha dostane jako argument jen ID tlačítka, skript proto běží pod anonymním uživatelem. Má-li běžet pod konkrétním uživatelem, je nutné v „Plánovači úloh“ doplnit do pole „Přidat argumenty“ za ID tlačítka mezeru a ID uživatele.
    • Čas spuštění se zadává ve tvaru „hh:mm“, výchozí hodnota je „06:00“. Hodnota bez dvojtečky se vyhodnotí jako 00:00.
  • Vytvořené úlohy se spouštějí denně – „BackupServer“, „BackupDatabase“ (program „SqlBackup.exe“) a „BackupAttachments“ (program „FileBackup.exe“) v 00:05, „Update“ ve 04:00, „ResendEmlFiles“ od 06:00 opakovaně po 30 minutách po dobu 18 hodin a úloha pro „RunScript.exe“, pojmenovaná podle názvu tlačítka, v zadaný čas.
  • Instalaci spusťte kliknutím na tlačítko „Nastavit“. Po úspěšném dokončení se program zavře; zprávu zobrazí jen při chybě nebo upozornění – u databáze MSSQL upozorní u každé vytvořené nebo změněné úlohy na nutnost zkontrolovat její uživatelský účet.
  • Existující naplánovanou úlohu vyhledává „Setup.exe“ podle názvu ve složce „NET Genium“. Má-li úloha stejného názvu akci, která spouští tentýž program (soubor na téže cestě), „Setup.exe“ ji nemění, ohlásí, že úloha již existuje, a nový čas spuštění ani nové argumenty se neuplatní. Úlohu je v takovém případě nutné upravit přímo v „Plánovači úloh“. Úloha stejného názvu bez takové akce, typicky úloha jiné instalace NET Genia na témže počítači, dostane akci navíc a čas jejího spuštění zůstane původní.
  • Úloha pro „RunScript.exe“ se jmenuje podle názvu tlačítka. Pro druhé tlačítko se stejným názvem proto „Setup.exe“ úlohu nevytvoří a ohlásí, že již existuje – tlačítko je nutné přejmenovat, nebo úlohu vytvořit ručně v „Plánovači úloh“.
  • Spusťte „Plánovač úloh“ a zkontrolujte vytvořenou naplánovanou úlohu, případně změňte uživatelský účet, v jehož kontextu má být naplánovaná úloha spouštěna.
  • Dodatečná změna uživatelského účtu je nezbytná především v situacích, kdy plánujeme spouštění programu s přístupem do databáze – „FileBackup.exe“, „Update.exe“, „ResendEmlFiles.exe“ a „RunScript.exe“ – a kdy je databázový server nainstalovaný na jiném počítači, než je samotná aplikace, resp. IIS. V takovém případě není možné používat výchozí uživatelský účet „SYSTEM“, ale typicky technologický účet definovaný v „Active Directory“.
  • Zálohování databází obecně je možné pouze z počítače, který je zároveň databázovým serverem. Programy „BackupServer.exe“ a „SqlBackup.exe“ má tedy smysl spouštět pouze z počítače, který je zároveň databázovým serverem.