Základní informace

  • Skript je programový kód, který se spouští na straně serveru.
  • Skript se může spouštět:
    • v serverových událostech editačních formulářů,
      • OnBeforeOpen – provádí se před otevřením editačního formuláře po kliknutí na tlačítko „Uložit a nový“,
      • OnAfterOpen – provádí se po otevření editačního formuláře,
      • OnBeforeSave – provádí se před uložením záznamu do databáze,
      • OnAfterSave – provádí se po uložení záznamu do databáze,
      • OnBeforeDelete – provádí se před smazáním záznamu z databáze,
      • OnAfterDelete – provádí se po smazání záznamu z databáze,
    • po stisknutí tlačítka v editačním formuláři,
    • po stisknutí tlačítka na nahlížecí stránce,
    • při pokusu o vytvoření nového záznamu z ovládacích prvků „TimeTable“ a „Planner“.
  • Odkaz na skript je vždy součástí dialogu nastavení ovládacího prvku.
    • Nejčastěji jde o ovládací prvek „ActionButtons“ (serverové události editačního formuláře) nebo „Button“ (tlačítka v editačních formulářích a na nahlížecích stránkách).
    • Odkaz je označen jako „Upravit skript (počet řádek skriptu)“ a otevírá grafický návrhář skriptů.
  • Skript se skládá z číslovaných řádků, které jsou vyhodnocovány sekvenčně shora dolů.
  • Každý řádek skriptu obsahuje jednu instrukci určující provedení konkrétního příkazu.
  • NET Genium vyhodnocuje skript řádek po řádce bez podpory programových bloků.

Základní skriptové příkazy

  • Deklarace proměnné
    • Definuje datový typ skriptové proměnné.
    • Pokud již proměnná existuje nebo obsahuje hodnotu, dojde ke změně jejího datového typu a nastavení hodnoty na databázovou hodnotu „null“.
  • Načtení hodnoty z databázového dotazu
    • Načte hodnotu z databázového dotazu a uloží ji do proměnné nebo do databázového ovládacího prvku.
    • Pokud již proměnná existuje, její datový typ i hodnota jsou přepsány.
  • Uložení proměnné zpět do databáze
    • Uloží hodnoty proměnné zpět do databáze na místo, odkud byly načteny.
    • Proměnná nesmí změnit počet svých hodnot (např. seskupením pomocí „GROUP(#A#)“).
  • Načtení více hodnot z databázového dotazu
    • Načte více sloupců z databázového dotazu a uloží je do proměnných nebo ovládacích prvků.
  • Cyklus
    • Provede opakování bloku skriptu ohraničeného příkazem „Další…“ pro každý prvek řídící proměnné.
    • Pokud proměnná neobsahuje žádné prvky, cyklus se neprovede.
    • Během cyklu se proměnné chovají jako jednoprvkové.
    • Hodnoty „null“ jsou v cyklu automaticky přeskočeny.
    • Jako řídící proměnná se doporučuje primární klíč „id“.
  • Přiřazení hodnot
    • Přiřazuje jednu hodnotu nebo matematický výraz do proměnné nebo ovládacího prvku.
    • U polí hodnot se operace provádí nad všemi prvky.
  • Porovnání hodnot
    • Porovnává hodnoty proměnných nebo hodnoty zadané uživatelem.
  • Další příkazy
    • Skok na řádek
    • Vyvolání přerušení
    • Odeslání e-mailu
    • Smazání záznamů z databáze podle dotazu
    • Přesměrování uživatele do editačního formuláře (dostupné pouze v OnBeforeOpen, OnAfterSave, OnAfterDelete)
    • Vytvoření nových záznamů v databázi
    • Uložení jedné nebo více hodnot do databáze
    • Komentář (včetně volání externích funkcí)

Charakter skriptovacího jazyka

  • Skript NET Genium je deklarativní, řádkově vyhodnocovaný jazyk.
  • Nepodporuje programové bloky, podmíněné větvení ani složité algoritmy.
  • Složitější logika musí být realizována pomocí externích funkcí v jazyce C#.

Spouštění skriptu mimo webové rozhraní

  • Skript přiřazený tlačítku na nahlížecí stránce lze spustit i externě pomocí programu „RunScript.exe“.
  • Program je umístěn v adresáři „NETGenium\bin“ na serveru.

Chyby a přerušení skriptu

  • Během provádění skriptu může dojít k chybě nebo k přerušení.
  • Ve všech případech dojde k ukončení skriptu, návratu do původního kontextu a zobrazení chybového hlášení uživateli.
  • U skriptů „OnBeforeSave“ a „OnBeforeDelete“ přerušení znamená zamezení uložení nebo smazání záznamu.

Vymezení skriptovacího jazyka

  • Skriptovací jazyk NET Genium je uzavřený a omezený jazyk určený výhradně k řízení aplikační logiky na straně serveru. Skript může používat pouze výše uvedené typy proměnných, příkazy, operátory, serverové funkce a externí funkce. Jakékoliv jiné konstrukce, funkce, operátory, datové typy, návratové hodnoty, programové bloky nebo jazykové prvky nejsou ve skriptu podporovány a nelze je použít. Pokud požadovanou funkcionalitu není možné realizovat kombinací dostupných skriptových příkazů, proměnných a serverových funkcí, musí být implementována formou externí funkce napsané v jazyce C#.

1. Návrhář skriptů

Obrázek.png

1.1. Zadejte příkaz…

  • Rozbalovací seznam s výběrem typu příkazu, který bude vložen do skriptu na označené místo.
    • 1. Deklarovat proměnnou
    • 2. Přidat hodnotu z dotazu
    • 3. Uložit proměnnou zpět do databáze
    • 4. Přidat více hodnot z dotazu
    • 5. Cyklus
    • 6. Přidat hodnotu
    • 7. Jestliže (výraz) přiřadit hodnotu
    • 8. Jestliže (složený výraz) přiřadit hodnotu
    • 9. Přejít na řádek
    • 10. Jestliže (výraz) přejít na řádek
    • 11. Jestliže (složený výraz) přejít na řádek
    • 12. Vyvolat výjimku (přerušení)
    • 13. Jestliže (výraz) vyvolat výjimku
    • 14. Jestliže (složený výraz) vyvolat výjimku
    • 15. Odeslat e-mail
    • 16. Jestliže (výraz) odeslat e-mail
    • 17. Jestliže (složený výraz) odeslat e-mail
    • 18. Smazat záznam
    • 19. Jestliže (výraz) smazat záznam
    • 20. Jestliže (složený výraz) smazat záznam
    • 21. Nový záznam
    • 22. Jestliže (výraz) nový záznam
    • 23. Jestliže (složený výraz) nový záznam
    • 24. Uložit hodnotu do databáze
    • 25. Jestliže (výraz) uložit hodnotu …
    • 26. Jestliže (složený výraz) uložit hodnotu …
    • 27. Uložit více hodnot do databáze
    • 28. Jestliže (výraz) uložit více …
    • 29. Jestliže (složený výraz) uložit více …
    • 30. Komentář

1.2. Proměnné

  • Rozbalovací seznam s výběrem rozsahu proměnných, které budou k dispozici ve skriptu pro ukládání hodnot. Tyto proměnné je možné používat na jednotlivých řádcích skriptu.
  • Detailní popis proměnných je uveden v samostatné příručce Proměnné.

1.3. Funkce

  • Rozbalovací seznam s výběrem serverových funkcí, které je možné volat na jednotlivých řádcích skriptu.
  • Detailní popis serverových funkcí je uveden v samostatné příručce Serverové funkce.

1.4. Hodnoty

  • Rozbalovací seznam s výběrem identifikátorů databázových ovládacích prvků, které je možné používat na jednotlivých řádcích skriptu.

1.5. Slovník

  • Slovník zobrazuje seznam komentářů a přerušení použitých napříč všemi skripty v celé aplikaci, které se vztahují k následujícím typům příkazů:
    • Parametr „message“ serverové funkce „SCHEDULEBACK“ v komentáři skriptu
    • Parametr „message“ serverové funkce „TEFUIG“ v komentáři skriptu
    • Parametr „message“ serverové funkce „TESUIG“ v komentáři skriptu
    • Parametr „message“ serverové funkce „WRITEMESSAGE“ v komentáři skriptu
    • Přerušení skriptu
  • Vyhledávání ve slovníku slouží k navržení správného tvaru uživatelských hlášek a k udržení konzistence názvosloví v celé aplikaci.

1.6. Sledování změn

  • Sledování změn zobrazuje detailní report se všemi provedenými změnami skriptu jednotlivými uživateli.

1.7. Spustit skript

  • Tlačítko „Spustit skript“ slouží ke spuštění skriptu v testovacím režimu.
  • Spuštění skriptu simuluje průběh zpracování skriptu, neukládá však žádné hodnoty do databáze, ani nemaže žádné záznamy z databáze.
  • Externí funkce volané ze skriptu v testovacím režimu se nevykonávají – do externí funkce je předána hodnota „true“ v parametru „test“:
using System;

namespace NETGenium
{
public class ExternalFunctions
{
public static string ngef(string id, string[] args, bool test, DbCommand cmd, DbConnection conn)
{
if (test) return "";

switch (id)
{
// case "MyFirstFunction": return MyFirstFunction();
default: return conn == null ? "" : conn.ExternalFunctionNotFound(id, cmd);
}
}
}
}