Čo budete robiť
Pripravený výraz spustíte v cvičisku vyššie, budete meniť vždy jeden vstup a vysvetlíte výsledok. Začnite v režime Iba CEL a potom rovnaké pravidlo zopakujte v režime CEL + JSON.
Ako to funguje
Hostiteľ CEL najprv spracuje zdrojový text, skontroluje ho voči deklarovaným premenným a typom a potom ho vyhodnotí s konkrétnymi hodnotami. Hostiteľ rozhoduje, ktoré premenné, funkcie, makrá a voliteľné rozšírenia existujú. CEL poskytuje význam výrazu; údaje aplikácie sám nevyhľadáva.
Prečítajte pripravený príklad
Pravidlo v režime CEL + JSON je:
type(request.priority) == string && request.priority in ['low', 'high']Jeho vstup je:
{
"request": {
"priority": "high"
}
}Záložka Iba CEL obsahuje hodnoty aj pravidlo v jednom výraze. Povolené rozšírenie cel.bind() udrží každý názov lokálny v jeho poslednom argumente.
Vyhodnotenie krok za krokom
- Hostiteľ poskytne mapu
requests reťazcovou položkoupriority. - Kontrola typu potvrdí
string. - Členstvo v povolenom zozname je pravdivé, preto celý výraz vráti
true.
Vaša úloha
- Spustite oba režimy.
- Zmeňte prioritu na
"medium". - Odstráňte
priority, pozrite si chybu a určte, či ide o syntax, deklaráciu alebo vstup pri vyhodnotení.
Očakávané pozorovanie: "medium" má správny typ, ale nie je povolené; chýbajúca položka je problém vstupu alebo prítomnosti, nie syntaxe.
Častá chyba
Nepredpokladajte, že výraz spustiteľný v tomto cvičisku bude mať rovnaké premenné a rozšírenia v každom hostiteľovi CEL. Overte konfiguráciu cieľového hostiteľa.
Zobraziť vysvetlenie
Deklaruje a poskytuje ju hostiteľská aplikácia; CEL iba vyhodnotí výraz voči tejto hodnote.
Kontrolná otázka
Kto definuje význam a dostupnosť premennej request?
Hlavná myšlienka
Oddeľujte pravidlá jazyka od konfigurácie hostiteľa: spracujte výraz, skontrolujte názvy a typy a potom ho vyhodnoťte s dodanými údajmi.
Zdroje
CEL-DEV— oficiálny prehľad CEL.CEL-LANG— oficiálna definícia jazyka CEL.CEL-GO-BIND— oficiálna dokumentácia voliteľného rozšíreniacel.bind()použitého v samostatnej záložke.