Dopytovací jazyk REST API systému ABRA Gen
Tu sú uvedené možnosti dopytovania v ABRA API.

Dopytovanie (tiež dopytovací jazyk alebo BO Query) v REST API ABRA Gen slúži k efektívnemu výberu dát zo systému ABRA Gen.
Dopyt je možné špecifikovať v dvoch formách:

V základnom variante sa dopyt zapisuje vo forme query parametrov URL HTTP požiadavky. Výber je v základnom variante vždy uskutočňovaný nad kolekciou BO alebo importným manažérom.
Pre url zakódovanie/dekódovanie reťazcov je možné využiť rôzne on-line nástroje typu URL decoder/encoder. (Zdroj pre download si nájdete na webe.)

V rozšírenom variante sa dopyt zapisuje vo forme JSON dokumentu, ktorý je zasielaný v tele HTTP požiadavky (používa sa HTTP metóda POST).
Výber je v rozšírenom variante uskutočňovaný:
- nad resourcom query podradeným kolekcii BO (napr.
/{spojenie}/{kolekcia BO}/query
) - potom sa v JSON dopyte neuvádza vlastnosť class - nad všeobecným resourcom pre rozšírené dopytovanie s názvom query (
/{spojenie}/query)
- potom sa v JSON dopyte uvádza vlastnosť class
Pri výbere dát z kolekcie BO nie sú vo východiskovom stave zahrnuté užívateľské ani neperzistentné položky.
Parameter /query
vykonáva dopyt na základe práv užívateľa v závislosti na triede (class), nad ktorou dopyt beží.
- Trieda s BO kontrolerom - Práva sa vyhodnocujú podľa kontrolera spojeného s touto triedou (napr. issuedinvoices).
- Trieda bez BO kontrolera - Práva sa overujú na základe sprístupnenia položiek pre API. Pokiaľ nie je možné nastaviť oprávnenie k spusteniu dopytu, dopyt nebude realizovaný.
Užívatelia majú právo spúšťať dopyty (opRun) na vybrané položky. Prístup k ďalším položkám sa nastavuje v agende Sprístupnenie položiek pre API.

Výraz je v dopytovacom jazyku sekvencie jedného alebo viacerých operandov (operandom je field BO alebo výraz), v prípadnej kombinácii s operátormi (spojovanie reťazcov, matematické operácie atď.), ktorý je možné vyhodnotiť ako jednu hodnotu.
Príklad výrazu pre spojenie polí Code a Name: Code || Name
Pri použití výrazu v klauzule SELECT dopytu je do názvu výsledného fieldu dosadený celý výraz. Na jeho premenovanie slúži v základnom variante dopytovania operátor as, v rozšírenom variante je nutné field špecifikovať ako výrazový objekt (JSON objekt obsahujúci alias fieldu a výraz dosadzovaný do jeho hodnoty).
Vo výrazoch je možné používať niekoľko druhov operátorov:
- Reťazcové a aritmetické - ich popis nájdete v tabuľke na konci tejto kapitoly.
- Porovnávacie - viď popis klauzuly where v kapitole Příklady základního dotazování REST API ABRA Gen.
- Logické - viď sekcie o kombinovaní výrazov v rovnakej kapitole.
Operátory je možné reťaziť, vyhodnocované sú vždy zľava doprava, v prípade aritmetických operátorov je patrične aplikovaná prednosť. Poradie vykonávania výrazov je možné ovplyvňovať pomocou zátvoriek.
Okrem operátorov je vo výrazoch možné používať tiež všeobecné funkcie.
Funkcie | |||
---|---|---|---|
Funkcie | Význam | Príklad použitia | Popis príkladu |
Reťazcové funkcie | |||
Prevedie reťazec na veľké písmená |
|
Obmedzí výber na objekty, ktorých názov (Name) po prevedení na veľké písmená obsahuje reťazec ABRA. Túto funkciu, rovnako ako jej obdobu lower(), je možné používať i na iných miestach, napr. v klauzule orderby:
Bez použitia funkcií upper() alebo lower() zohľadňuje dopytovanie na reťazce a ich časti prostredníctvom Web API veľkosť písmen (je case sensitive
Je potrebné sa dopýtať takto:
|
|
Prevedie reťazec na malé písmená |
|
Obmedzí výber na objekty, ktorých názov (Name) po prevedení na malé písmená obsahuje reťazec abra. |
Pri zadaní SQL príkazu a použití podmienky, v ktorej je textový stĺpec (memo), sa jeho porovnanie vyhodnocuje ako case case insensitive Ak je nejaká položka case insensitive, znamená to, že nie je citlivá na veľké a malé písmená, inými slovami, že nerozlišuje veľké a malé písmená. Tzn., že nie je rozdiel, ak je napísané napr. "Abc" alebo "abc". Opak je case sensitive..
Príklad použitia podmienky:SELECT ID FROM RestrictionDefinitions T_1 WHERE T_1.Note COLLATE UNICODE_LOCALE_CI like '%inTer%'
Z dôvodu, že databázový server Oracle nepodporuje možnosť nastavenia COLLATE na týchto stĺpcoch, je výsledok dopytovania vyhodnocovaný ako case sensitive Ak je nejaká položka case insensitive, znamená to, že nie je citlivá na veľké a malé písmená, inými slovami, že nerozlišuje veľké a malé písmená. Tzn., že nie je rozdiel, ak je napísané napr. "Abc" alebo "abc". Opak je case sensitive..