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ů

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);
}
}
}
}