WebToDate » O WebToDate » Rozšiřitelnost » Plánované úlohy

Plánované úlohy

Systém WebToDate obsahuje možnost spouštění tzv. plánovaných úloh v čase. V zásadě se jedná o to, že určité vybrané funkce – bloky kódu (např. vygenerování jedné stránky apod.) lze řetězit do sekvencí a tyto sekvence spouštět buď ručně (v tom případě jde v podstatě o spuštění velmi jednoduchého makra) nebo plánovaně v nastavených časech. Základní sada připravených úloh je k dispozici s každou instalací WebToDate, některé úlohy se navíc přidávají s instalací vybraných modulů. Plánovač úloh navíc počítá s tím, že lze přidávat nové uživatelské úlohy podle potřeb daného projektu.

Z hlediska programátora se jedná o vytváření bloků PHP kódu, pro který platí jistá pravidla (způsob předávání proměnných a informací o chybách) a ve kterých lze využít určité připravené knihovny. Takto vytvořené úlohy se pak registrují do systému. K nastavování parametrů, plánování a spouštění sekvencí úloh již existuje www rozhraní přímo v administračním rozhraní WebToDate.

Ve funkci Plánovač úloh se používá následující terminologie:

  • Úloha – dále nedělitelný blok programového kódu, který vykonává nějakou činnost (např. vygenerování jedné stránky, spuštění jedné akce apod.)
  • Sekvence – zřetězení úloh, které definuje pořadí vykonávání těchto úloh a případně jejich vzájemnou závislost. Nejjednodušší sekvence může přirozeně sestávat z jediné úlohy.
  • Časování – předpis definující, kdy a jak se má daná sekvence spouštět v čase (jednorázově, periodicky apod.).

Pomocí plánovaných úloh lze provádět např. následující činnosti:

  • Periodické importy či exporty dat
  • Periodické změny určité části webu a případné přegenerování stránek
  • Rozesílání e-mailových upozornění v určených časových intervalech

Jednoduchým příkladem může být např. úkol, kdy chceme na úvodní stránku umístit údaj o tom, která osoba má ten den svátek. Informace se mění jednou denně a lze ji měnit automaticky, vhodným nástrojem je plánovaná úloha. Postup v tomto případě je zhruba následující:

  1. Založí se pevně jedna databázová tabulka naplněná údaji o jmeninách. Tyto údaje se nemění, není tudíž třeba vytvářet nějaký administrační interface pro změny dat.
  2. Založí se HTML fragment, který se trvale umístí na úvodní stránku do určené oblasti a v jehož těle se nachází formátovaný HTML kód s údajem o jmeninách.
  3. Vytvoří se zákaznická plánovaná úloha, která z databáze načte údaj o tom, kdo má daný den svátek. Tato úloha načtená jména zformátuje do požadovaného HTML tvaru a výsledným kódem přepíše tělo fragmentu z předchozího kroku (na to je k dispozici knihovní funkce, která má za parametr ID fragmentu a přepíše tělo tohoto fragmentu).
  4. Vytvoří se v plánovači nová sekvence, která v prvním kroku spustí tuto zákaznickou úlohu, ve druhém kroku spustí úlohu pro generování úvodní stránky (tato úloha je standardní součástí instalace WebToDate).
  5. Sekvence se načasuje na spouštění každý den po půlnoci.

V tomto postupu se využívá v bodu 3. API pro plánované úlohy na vytvoření PHP kódu úlohy, ostatní kroky se provádí standardními prostředky přes rozhraní WebToDate.

Standardně dodávané plánované úlohy zahrnují např.:

  • Úlohy pro export a import XML dat
  • Expirační úlohu, která řeší vypršení platnosti obsahu, publikaci obsahu ve stanovený čas a nahrazování zpráv jejich novými verzemi ve stanovený čas
  • Úlohu pro generování seznamu vybraných stránek
  • Verifikační úlohu pro vyhledávání interních chyb implementace, nefunkčních odkazů apod.
  • Úlohu pro rozesílání nových diskuzních příspěvků
  • Úlohu pro promazávání cache dynamických stránek
  • Úlohy pro odstraňování nepotřebných dat z databáze

V realizovaných projektech byly vytvořeny pomocí API pro plánované úlohy např. následující funkce:

  • Stahování dat k importu z FTP serveru s následným promazáváním složek FTP serveru
  • Synchronizace dat s DMS systémem (systémem pro správu dokumentů) používaným zákazníkem
  • Úloha načítající data z webové služby burzy cenných papírů a generující tabulky s informacemi o obchodech na burze
  • Úloha provádějící výměnu dat mezi databází WebToDate a aplikací typu e-shop provozované zákazníkem na jiném vzdáleném www serveru
  • Úloha pro synchronizace vybraných dat zákaznického modulu z intranetového serveru na veřejně přístupný internetový portál