Nastavenie Web API
Konfigurácia Web API spočíva v úpravách súboru APIServer.yaml. Popis jednotlivých parametrov, ktoré sú k dispozícii, nájdete v sekcii Konfigurácia WebAPI. Okrem toho môže byť pre prevádzku Web API potrebné upraviť tiež nastavenie prostredia na úrovni operačného systému. V prípade potreby môžete zapnúť a nakonfigurovať logovanie. K dispozícii je i tip, ako otestovať funkčnosť. Venujte tiež, prosím, pozornosť pokynom v sekciách Upozornenie, hlavne, ak prechádzate zo starších verzií.
V hostiteľskom OS je nutné nastaviť bránu firewall tak, aby bol voľný port, na ktorom Web API server počúva, viď ďalej konfigurácia Web API.
Ďalej, rovnako ako pre pracovné stanice je potrebné, aby mal server, kde beží služba Web API (resp. používateľ, pod ktorým služba beží) nainštalované české prostredie. To je nutné hlavne z dôvodu správneho fungovania všetkých Quick report funkcií a správnosti navrátených výsledkov. Detailný popis nastavenia českého prostredia nájdete tu.
V koreňovej inštalačnej zložke ABRA Gen nájdeme šablónu konfiguračného súboru. Šablónu si zazálohujeme a premenujeme (odstraníme príponu .tmpl):
APIServer.yaml.tmpl → APIServer.yaml
Web API je možné spustiť i bez tohto kroku, potom pobeží s defaultným nastavením (ktoré zodpovedá obsahu šablóny), ale bez konfiguračného súboru nebudete mať možnosť nastavenie zmeniť.
Znak # bude pred riadkovým komentárom. Pokiaľ riadok začína týmto znakom, hodnota uvedená v riadku sa pri spracovaní konfiguračného súboru ignoruje a Web API použije hodnotu východiskovú.
Vo formáte yaml sú signifikantné medzery, konkrétne úroveň odsadenia určuje príslušnosť položky do určitého bloku. Z tohto dôvodu je dôležité na začiatku riadkov s parametrami nejaké medzery ponechať, aby bolo zrejmé, do ktorého bloku patria. Pokiaľ nastavujete hodnotu parametra, odmažte len samotný znak # a nechajte riadok pred dvojicou medzier.
Konfiguračný súbor obsahuje niekoľko sekcií s parametrami, ktoré si v ďalšom texte preberieme.
Adresa, na ktorej Web API počúva. Súvisiaci parameter: port
Východisková hodnota: 0.0.0.0
Východisková hodnota "0.0.0.0" znamená, že aplikácia bude dostupná na ľubovoľnej IPv4 adrese, ktorú má daný počítač pridelenú.
Pokiaľ používate webovú aplikáciu Úlohy a ponecháte parametre host a port vo východiskovom nastavení, adresa 0.0.0.0 môže spôsobiť, že sa "autokonfiguračnému mechanizmu" nepodarí naviazať spojenie. Viď Poznámky k umiestneniu aplikácie a pripojenie k dátam v popise webovej aplikácie Úlohy. V takom prípade je potrebné si vynútiť preťaženie hodnoty parametrov host a port špecifikovaných v súbore APIServer.yaml nastavením parametra URL v sekcii Tasks v súbore Nexus.cfg.
Port, na ktorom Web API počúva. Súvisiaci parameter: host
Východisková hodnota: 80
Pokiaľ používate webovú aplikáciu Úlohy a ponecháte parametre host a port vo východiskovom nastavení, adresa 0.0.0.0 môže spôsobiť, že sa "autokonfiguračnému mechanizmu" nepodarí naviazať spojenie. Viď Poznámky k umiestneniu aplikácie a pripojenie k dátam v popise webovej aplikácie Úlohy. V takom prípade je potrebné si vynútiť preťaženie hodnoty parametrov host a port špecifikovaných v súbore APIServer.yaml nastavením parametra URL v sekcii Tasks v súbore Nexus.cfg.
Cesta k súboru ApiLib.dll.
Východisková hodnota:
Východisková hodnota null predpokladá, že sa súbory APIServer.jar a ApiLib.dll nachádzajú v rovnakej zložke. Pokiaľ tomu tak nie je, je potrebné týmto parametrom špecifikovať cestu k súboru ApiLib.dll, aby API server knižnicu našiel.
Minimálny počet súčasných pripojení k serveru (vláken).
Východisková hodnota: 16
Maximálny počet súčasných pripojení k serveru (vláken).
Východisková hodnota: 250
Určuje maximálnu veľkosť requestu v bytoch (B).
Východisková hodnota: 10000000 B (10 MB).
V defaultním stavu je kontrola SNI zapnuta. Na každém connectoru je následně možná pomocí stejné proměnné nastavit, zda SNI používat. Pokud nemá connector proměnnou nastavenu, použije se hodnota z globálniho nastaveni v sekci Server.
Výchozí hodnota: true
Cesta k certifikátu vo formáte PKCS #12 (typicky súbor s príponou .pfx) alebo do Java keystore. Súvisiaci parameter:
Východisková hodnota:
Príklad nastavenia:
server:
certPfx: "C:\\mnt\\datashareone\\abra\\tslssl\\cert\\MyPKCS12Certificate.pkcs12"
certPassword: "fk45235#!@41324zfaABCD"
Pokiaľ nie je certifikát zadaný, server komunikuje prostredníctvom http.
Pokiaľ je cesta k certifikátu neplatná alebo nesúhlasí heslo, server sa nespustí.
Pokiaľ sú oba parametre zadané správne, server komunikuje prostredníctvom https.
Pokiaľ máte certifikát vo formáte PEM a súkromný kľúč v samostatnom súbore, môžete ich "skombinovať" do certifikátu vo formáte PKCS #12 pomocou nástroja OpenSSL:
openssl pkcs12 -inkey MyPrivateKey.key -in MyPEMCertificate.crt -export -out MyPKCS12Certificate.pkcs12
Pri prevode je nutné poznať heslo k súkromnému kľúču MyPrivateKey.key, rovnako je možné zadať heslo k vytváranému MyPKCS12Certificate.pkcs12. Toto heslo následne nastavíte ako hodnotu parametra certPassword.
V niektorých prípadoch je nutné, aby certifikát obsahoval i takzvané Medziľahlé (sprostredkujúce) certifikačné autority. V opačnom prípade nie je certifikát úplný, čo následne vedie k problémom so spúšťaním niektorých služieb.
V prehliadači Google Chrome povoľuje API dopyt z verejnej siete do siete privátnej. Defaultnou hodnotou je true. Pokiaľ je hodnota false, komunikácia nebude možná.
Nepovinná sekcia. Sekcia slúži hlavne pre zadávanie viacerých IP adries protokolov IPv4 alebo IPv6, na ktorých bude server počúvať. Pokiaľ nie je sekcia uvedená, správa sa nastavenie bežným spôsobom. Pokiaľ sa sekcia uvedie, tak sa pri štarte servera vytvoria konektory pre každú položku tu uvedenú namiesto jediného podľa sekcie server.
Subsekcia Connector môže obsahovať položky Host, Port, Cert_pfx, Cert_password. Pokiaľ nejaká nie je uvedená alebo je prázdna alebo nula (v prípade portu), tak sa hodnota vezme z rovnomennej položky v sekcii Server.
Podľa yaml špecifikácie hyphen (-) znamená položku zoznamu. Subsekcia Connectors musí byť na rovnakej úrovni ako ostatné položky v sekcii server.
Príklad použitia subsekcie Connectors
Interval pro sbírání dat o paměti a cpu. Výchozí hodnota je 30000 ms. Lze nastavit v rozmezí 15000 -180000 ms.
Interval pro odesílání dat na aplikační server. Výchozí hodnota je 600000 ms. Lze nastavit v rozmezí od dvojnásobku hodnoty parametru telemetrySampleIntervalMs do 600000 ms.
CORS - Fetch Standard - jedná se o protokol realizovaný pomocí přidaných http hlaviček v request a response.
V options dotazu(takzvaném preflight) se posílá hlavička Origin a hlavička access-control-request-method. Pro úspěšnou odpověď je třeba vrátit status 200 nebo 204 a správně vyplněné hlavičky access-control-allow-origin, access-control-allow-methods a případně access-control-allowed-headers. Preflight dotaz posílá prohlížeč automaticky v případě tzv. cross origin requestu - tedy skript stažený z origin X dělá v javascriptu request na origin Y. Pokud preflight dotaz selže anebo nemá nastavené výše uvedené hlavičky, prohlížeč vlastní dotaz ani neposílá.
V non options dotazu může být taky hlavička Origin, na kterou se dle protokolu odpoví access-control-allow-origin a v případě, že je zapotřebí credential, tak i hlavičkou access-control-allow-credentials. Tady nejde jednoduše odlišit normální request od cors requestu, ale hlavičku Origin používá CORS vždy. Pokud prohlížeč nedostane v odpovědi správné hlavičky, nezprostředkuje odpověď zpátky do skriptu, který request vyvolal a ten skončí chybou.
CORS protokol použije prohlížeč automaticky a použije se jen v případě cross origin site request.
PNA - Private Network Access: introducing preflights je rfc od googlu, které není součástí CORS protokolu. Pro potřeby ověření posílání dotazů do lokální sítě ale zavedlo rfc, které doplňuje sadu cors hlaviček o access-control-request-private-network a access-control-allow-private-network.
Na rozdíl od CORS se vyskytuje nejen v rámci cross origin request, ale může se volat i v případě sop - same origin policy, tedy pokud java skript posílá dotaz na stejnou adresu odkud byl stažen, ale adresa je soukromější(viz výše uvedené rfc, kde se klasifikují různé private adresy).
V případě, že se jedná o cors dotaz, je access-control-request-private-network přímo součástí cors preflightu.
V případě, že se nejedná o cors dotaz, je součástí preflight dotazu opět hlavička Origin.
Na rozdíl od cors zavádí ještě jednu hlavičku access-control-request-credentials, na kterou přímo v preflight je odpověď access-control-allow-credentials. CORS tuto request hlavičku nepotřebuje, protože případnou hlavičku access-control-allow-credentials uvádí až v non preflight dotazu, kdy už je jasné, co je to za dotaz a jesti jsou credentials protřebné.
Nastavení v ABRA Gen
V případě cross dotazů z prohlížeče je třeba pomocí této volby nakonfigurovat origin skriptů, u kterých je povolené cross dotazy provádět. V definici jednotlivých povolených domén je možné použít wildcard znaky * a ? s obvyklým významem.
Východisková hodnota: *.abra.software".
CORS je také logováno v rámci logů. Více viz popis logování CORS volání.
Pokud se zpracovává preflight dotaz anebo non preflight dotaz s vyplněnou hlavičkou Origin, pak se origin kontroluje podle zadaných origins zleva doprava a pokud se nalezne shoda, vyhledávání skončí s tím, že je Origin povolené a do response se doplní očekávané hlavičky. Hledání je case insensitive.
PNA preflight - kromě kontroly Origin hlavičky ovlivňuje kontrolu už dříve zavedená volba allowPrivateNetworkAccess: true. Pokud je true(výchozí hodnota), a Origin hlavička je v allowedOrigins sekci, PNA přístup se povolí, v opačném případě se zamítne.
Příklad konfigurace parametru:
allowedOrigins:
- localhost:3000
- "*.abra.software"
Konfiguraci lze provést také v JSON formě: allowedOrigins: ["localhost:3000", "*.abra.software"]
Prázdné pole pak: allowedOrigins:[].
Tento parametr ovlivňuje zpětnou kompatibilitu - pokud uživatel používá scripty stažené z jiné domény než abra.software v prohlížeči pro cross site requesty, bude muset správně nakonfigurovat parametr allowedOrigins.
Zapnutie (true) alebo vypnutie (false) zohľadňovania všeobecnej ochrany dát.
Východisková hodnota:
Kombinuje sa s nastavením položky Obísť ochranu dát vo vlastnostiach používateľa, ktorý sa pre prístup k API využíva. Východisková hodnota je false.
| APIServer.yaml, parameter dataProtection | Agenda Používatelia, položka Obísť ochranu dát | Web API zohľadňuje ochranu dát |
|---|---|---|
|
|
|
nie |
|
|
|
nie |
|
|
|
áno |
|
|
|
nie |
|
|
|
nie |
|
|
|
nie |
Zohľadňovanie ochrany dát môže mať (v závislosti na konkrétnej implementácii) výrazný negatívny dopad na výkon - pred nastavením tohto parametra na hodnotu true v produkčnom prostredí je potrebné prevádzku aplikácií využívajúcich Web API dôkladne otestovať.
Maximálny počet vláken, ktoré môžu súbežne spracovávať požiadavky.
Východisková hodnota: 64
Doba, po ktorej sú vlákna určené na spracovanie požiadaviek ukončené.
Východisková hodnota: 3600000
Ide o vlákna, ktorých maximálny počet je určený vyššie uvedeným parametrom threadPoolSize. V prípade potreby sú operatívne vytvárané vlákna nové.
Doba (v milisekundách), po ktorej je vlákno ukončené, pokiaľ sa počas nej požiadavku nepodarí spracovať (vybaviť). Počíta sa len doba samotného spracovania požiadavky, nie čas, kedy požiadavka čaká v rade. Po ukončení vlákna vráti server chybu 408 Request Timeout.
Východisková hodnota: 600000
Požiadavky sú zaraďované do radu v prípade, kedy je vyčerpaný maximálny počet aktívnych vláken daný hodnotou parametra threadPoolSize.
Doba (v milisekundách), počas ktorej požiadavka čaká v rade, než sa uvoľní vlákno, ktoré by ho mohlo začať spracovávať. Po uplynutí tejto doby vráti server chybu 503 Service Unavailable, požiadavka je z radu vyradená a je nutné ju zaslať znovu.
Východisková hodnota: 30000
Parameter bol vo verzii 21.3.5 odstránený.
Parameter ovplyvňoval, či sa má s každou požiadavkou realizovať nové prihlásenie.
V súčasnej dobe je každá požiadavka autorizovaná novým prihlásením automaticky. Pokiaľ je používateľ s rovnakými prihlasovacími údajmi uložený v cache, vykoná sa prihlásenie len v prípade, pokiaľ medzitým došlo ku zmene (napr. nastavenie nového hesla).
Vďaka tomuto správaniu sa zmena prihlasovacích údajov používateľa realizujúceho požiadavky prejaví okamžite. Zmenami sa môže rozumieť:
- zmena prihlasovacieho hesla
- Zmena ďalších vlastností používateľa (napr. príznaku Prihlásenie nevizuálneho používateľa API)
- zmena oprávnení (prístupových práv)
Ak prechádzate na verziu 21.3.5 z predchádzajúcej verzie 21.3.2, skontrolujte, či váš konfiguračný súbor APIServer.yaml neobsahuje už nepodporovaný parameter authorizeEachRequest, prípadne ho odstráňte.
Pokiaľ konfiguračný server obsahuje nepodporované parametre, Web API server sa nespustí. Toto správanie bude v budúcich verziách systému upravené.
V klauzule Select sa pre reťazenie (konkatenáciu) aktuálne používa operátor "||". Pokiaľ je potrebné vrátiť pôvodné správanie a pre reťazenie použiť operátor "+", je potrebné parameter nastaviť na hodnotu True.
Východisková hodnota: False.
V prípade práce s časom je nutné, pokiaľ je hodnota nastavená na True, použiť pred uvedením času kľúčové slovo timestamp.
Primárne je vykonanie v EXE určené pre požiadavky, pri ktorých sú problémy s chodom v threade. Ide hlavne o tlače, skripting a čokoľvek, čo vytvára vizuálne prvky(aj keď sa nakoniec samozrejme nezobrazujú). Parameter nie je v konfigurácii predvyplnený, je potrebné ho v prípade prepnutia na iné ako defaultné správanie doplniť ručne.
Parameter defaultExecutor má dve hodnoty:
- inprocess - vykonanie vo vlákne (threade) - Východisková hodnota.
- outprocess - vykonanie v externom EXE (použitie tejto voľby so sebou nesie využitie viac pamäte systému).
Parameter určuje počet neprihlásených apirunner.exe procesov v API poole a ak príde požiadavka, ktorá sa má vybaviť outofprocess, vezme sa z tohto poolu a použije. Tým sa ušetrí čas pri prvom dotaze (spustenie apirunner.exe). Ak je pool prázdny, apirunner.exe sa normálne spustí.
Ak je parameter defaultExecutor (popis uvedený vyššie) nastavený na outprocess, pool sa vytvorí hneď pri štarte servera. Ak je inprocess, zostáva pool prázdny až do príchodu prvej požiadavky, ktorá sa má vykonať pomocou outprocess (s parametrom ?executor=outprocess).
Východisková hodnota: 2
Parameter je možné nastaviť len od 4 GB a vyššie a je odporúčané ho nastaviť, ak budú nejaké requesty nadmerne leakovať a bežná doba životnosti executora (štandardne 1h) nestačí.
Parameter funguje na 2 rôznych miestach a kontroluje private pamäť zabranú procesom:
-
Pri vykonávaní requestu - ak pamäť zabraná outprocesom presiahne túto veľkosť, outprocess sa ukončí a klientovi je zaslaná chyba, že pamäť prekročila túto hranicu.
-
Na outprocess samotnom (apirunner.exe) - ak pamäť mimo vykonávania requestu presiahne túto veľkosť - 1, tak sa outprocess tiež ukončí. Dôvod pre -1 je ten, aby prípadne klient nedostal na vykonanie executor s pamäťou tesne pred limitom, pretože potom by ani relatívne malý request nemusel prejsť.
V prípade akéhokoľvek prekročenia limitov je informácia zapísaná do logu s úrovňou 3.
Východisková hodnota: 0 - vypnuté
Parameter určuje, ako sa budú novo prichádzajúce požiadavky mapovať na ApiRunner.exe.
-
Hodnota 1 - v rovnakom ApiRunner.exe sa spustia len požiadavky s rovnakým credentials. Je to východisková hodnota a credentials sa berú tak, ako prichádzajú. To znamená, že napr. obnovený JWT token je považovaný za odlišný od predchádzajúceho.
-
Hodnota 2 - v rovnakom ApiRunner.exe môžu bežať požiadavky akéhokoľvek klienta.
S týmto parametrom úzko súvisia nasledujúce parametre outprocessLifeTimeMs a outprocessMaxClients, ktoré sú popísané nižšie.
Východisková hodnota: 1
Parameter určuje životnosť ApiRunner.exe. Po uplynutí tejto doby sa prestane ponúkať klientom, avšak uvoľní sa až po uzavretí poslednej požiadavky klienta na ňom. V prípade serverstate môže dôjsť k výraznému predĺženiu doby uvoľnenia.
Východisková hodnota: 28800000
Parameter určuje maximálny počet klientov, ktorých môže hostiť jeden ApiRunner.exe. Východisková hodnota je 1, čo znamená, že systém sa bude správať rovnako ako pred vznikom tohto parametra. Až keď sa táto hodnota zvýši, uplatní sa vyššie uvedený parameter stratégie pre alokovanie jednotlivých klientov.
Zvýšením počtu klientov sa znížia nároky na server, ale zároveň sa zvýši pravdepodobnosť, že v prípade problémov a ukončenia ApiRunner.exe sa to dotkne aj iných klientov.
Pri nastavení parametra
Východisková hodnota: 1
Počet vlákien v Connection poole pre neoverené (neprihlásené) volania.
Doba v milisekundách, ktorá určuje, ako dlho sa čaká na pridelenie vlákna Connection poolu na spracovanie požiadavky.
Doba v milisekundách, ktorá určuje, ako dlho je možné spracovávať požiadavku v rámci Connection poolu.
Parameter definuje maximálny počet vlákien dostupných v dedikovanom poole pre používateľské relácie v endpointe /serverstate. Každé vlákno je vyhradené jednému používateľovi a spravuje jeho dočasnú medzipamäť, ktorá slúži na spracovanie požiadaviek na business objekty (BO). Požiadavky od toho istého používateľa sú spracovávané serializovane (v poradí, v akom prichádzajú), aby sa zabránilo kolíziám v rámci relácie.
Vlákna tohto poolu sú oddelené od štandardných požiadaviek, čo zabezpečuje lepšiu správu výkonu a izoláciu operácií spojených s medzipamäťou.
Východisková hodnota: 128
Parameter sa týka nastavenia Spracovanie požiadaviek v medzipamäti.
Parameter určuje maximálnu dobu nečinnosti (v milisekundách) pre každé vlákno používateľskej relácie v endpointe /serverstate. Ak od poslednej požiadavky uplynie zadaná doba, relácia je automaticky ukončená, vlákno uvoľnené späť do poolu a všetky medzipamäte priradené k relácii sú odstránené. Toto nastavenie umožňuje optimalizáciu pamäťových zdrojov a zabraňuje neobmedzenému hromadeniu neaktívnych relácií.
Východisková hodnota: 14400000
Parameter sa týka nastavenia Spracovanie požiadaviek v medzipamäti..
Po prepnutí na true je do query podmienok where na položku odkazujúcu na firmu doplnená podmienka aj za predchodcov.
Parameter je dôležitý pri profilovaní API. Tu je potrebné zadať cestu, do ktorej sa budú zapisovať profilovacie dáta. Je možné ich načítať v aplikácii Profiler. Viac viď postup Ako profilovať Web API.
profilePath: c:\ABRA\Logs\Profiler\
Parameter ovplyvňuje generovanie SQL. Ak je nastavený na true, použije sa v SQL dopyte INNER JOIN namiesto LEFT JOIN v prípadoch, keď je väzobné pole (field) definované ako NOT NULL (pretože väzba v takom prípade vždy existuje a zmena neovplyvní výsledok dopytu).
Východisková hodnota: false (zachováva spätnú kompatibilitu a vždy používa LEFT JOIN). Prepnutie na true môže pomôcť vyriešiť problémy s výkonom SQL dopytov.
Parameter slúži na zapnutie autorizácie nad koreňovým endpointom /.
Východisková hodnota: false
Nadväzuje na predchádzajúci parameter. Ak je zadané v predchádzajúcom parametri rootAuth: true, tak v tomto sa zadáva heslo pre autorizáciu (zadáva sa v nešifrovanej podobe). Prístup je potom možné získať štandardne, buď pomocou hlavičky authorization, metódou basic alebo pomocou query parametra auth. Query string je potrebné zostaviť zakódovaním Base64url, viď kapitola Autentizácia a autorizácia.
Východisková hodnota: bez hesla
http://localhost:80?auth=Omhlc2xv
Parameter ovplyvní dobu, za ktorú prebehne nová kontrola zmeny práv používateľa. Nastavením menšieho timeoutu sa nové práva prejavia skôr, ale znamená to vyššiu frekvenciu dotazov na appserver (pred spustením každej požiadavky sú to dotazy za všetky nakešované vlákna, ktoré aktuálne nič nevykonávajú). Záleží teda na konkrétnej záťaži apiservera a potrebách klienta.
Nastavením na 0 sa zmeny prejavia okamžite – to je výhodné najmä pre testovanie.
Východisková hodnota: 30 s.
securityRightsCheckTimeoutMs: 30000
Parameter ovplyvní, čo bude vracať API dopyt bez definovaného parametra select alebo selectschema. Parameter má dve hodnoty.
Áno - Znamená, že dopyty bez definovaného parametra select alebo selectschema budú na výstupe vracať iba ID dopytovaného objektu.
Nie - Východisková hodnota. Pri neuvedenom parametri select alebo selectschema vracia buď všetky polia v prvej úrovni (v prípade, že sa dopytujeme na zoznam objektov), alebo všetky polia vrátane rozvinutých vlastnených referencií a kolekcií (v prípade, že sa dopytujeme iba na jeden objekt).
Od verzie ABRA Gen 25.4 bude východisková hodnota nastavená na Áno, to znamená, že dopyty bez uvedených parametrov budú vracať len ID. Aj po tejto zmene bude možné vrátiť pôvodné správanie prepnutím na hodnotu Nie.
minimalSelectSchema: false
Pomocou tohto parametra je možné ovplyvniť, v akom časovom pásme sú vypisované hodnoty dátumových polí. V predvolenom stave sú dátumy vracané v UTC (napr. "2024-01-04T13:04:00.000Z"). Ak je parameter nastavený na true, dátumy sú vracané v lokálnom časovom pásme (napr. "2024-01-04T14:04:00.000+01:00").
Parametrom je možné definovať, do ktorých adresárov je možné uložiť externé súbory ako prílohy a obrázky. Bez definovaných adresárov nie je možné ukladať externé prílohy a obrázky.
Východisková hodnota: Nie je povolený žiadny adresár.
allowedDocumentFolders:
- "C:\\Pictures"
- "C:\\Folder"
Príklady pre sieťové zložky s názvom servera alebo jeho IP adresou:
\\\\Nazov_Sieťového_Disku\\Nazov_zložky\\xxx
\\\\IP_Zariadenia\\Nazov_zložky\\xxx
Vypína mechanizmus, ktorý mení vykonávanie poddotazov typu objektový odkaz. Takéto poddotazy sa vykonávajú v rámci nadradeného dotazu, kam sa položky pripájajú pomocou JOIN väzby. Netýka sa poddotazov obsahujúcich klauzuly
Východisková hodnota: true
Príklad dotazu rozšíreného dotazovania, z ktorého systém získa položky zo subdotazu poskytovateľ do nadradeného dotazu ako:
providerow_id.displayname
providerow_id.displayname + '_TEST'
{
"class": "05CPMINJW3DL342X01C0CX3FCC", # receivedorderrow
"select": [
"providerow_id.displayname",
"providerow_id.id",
"id",
"displayname",
{
"name": "poskytovatel",
"value": {
"field": "providerow_id",
"query": {
"select": [
"displayname",
"displayname + '_TEST'",
],
},
},
},
],
"where": "parent_id eq '1100000101'",
}
Parameter kontroluje, že do konkrétnych BO položiek je možné v danom okamihu zapisovať, rovnako ako vo vizuálnom prostredí, a ďalej kontroluje, že je možné do kolekcie vkladať riadky a je možné už existujúci riadok editovať alebo mazať. Bežne je žiaduce, aby sa API správalo rovnako ako vizuálne prostredie, teda aby položky, ktoré nie je možné editovať, nebolo možné editovať ani v rámci API. Napr. celkovú cenu na riadku dokladu, ktorá nie je používateľsky editovateľná a počíta sa.
V niektorých veľmi špecifických prípadoch môže byť potrebné takúto možnosť aktivovať. V takom prípade je potrebné parameter nastaviť na hodnotu false, čím sa kontrola vypne.
Východisková hodnota: true
Zakázaním tejto kontroly a zapisovaním hodnôt do polí, ktoré nie sú bežne editovateľné, môže dôjsť k tomu, že dáta nebudú konzistentné a následne nemusí systém zobrazovať správne dáta. Preto je vypnutie tejto kontroly odporúčané robiť len kontrolovane, po dobu potrebnej opravy v systéme a následne opäť kontrolu zapnúť.
Adresárová cesta, do ktorej sú logy ukladané.
Východisková hodnota:
Úroveň podrobnosti logovania (čím vyššie číslo, tým detailnejšie logovanie). Viac informácií viď popis v sekcii Konfigurácia logovania.
Východisková hodnota: 1
Aktivuje logovanie. Pokiaľ chcete logovanie používať, zmeňte východiskovú hodnotu false na hodnotu true.
Východisková hodnota:
Maximálna veľkosť logu v bajtoch. Východisková hodnota 0 znamená, že je veľkosť logu neobmedzená
Východisková hodnota: 0
Počet logov zaradených do rotácie. Viac informácií viď popis v sekcii Konfigurácia logovania.
Východisková hodnota: 1
Logovanie Web API má dve "úrovne".
Úpravami sekcie logs v konfiguračnom súbore APIServer.yaml je možné ovplyvňovať logovanie činnosti samotného Web API servera (APIServer.jar). Pokiaľ chcete zmeniť východiskovú hodnotu niektorého z parametrov, odstráňte znak # na začiatku príslušného riadka (dvojicu medzier za znakom # ponechajte).
# log configuration
logs:
# path where logs are stored, when empty then it is a directory where API server is
# path: ""
#
# number of details increase with this number(max. level is 6)
# level: 1
# enable/disable log
# enabled: false
# max size of log in bytes (0 is unlimited)
# maxsize: 0
# number of rotated logs when maxsize is set
# maxcount: 1
Prostredníctvom súboru APIServer.yaml je možné konfigurovať nasledujúce parametre týkajúce sa logovania:
Adresárová cesta, do ktorej sú logy ukladané.
Východisková hodnota:
Východiskovou hodnotou je prázdny reťazec; pokiaľ túto východiskovú hodnotu nezmeníte, budú sa logy ukladať do rovnakej zložky, v ktorej sa nachádza Web API server (soubor APIServer.jar).
Pokiaľ v ceste používate spätné lomky a zároveň cestu uzavriete do úvodzoviek, z technických dôvodov musíte každú lomku uvodiť ďalšou spätnou lomkou, teda zdvojiť:
- path: C:\AbraGen\Logs - správne
- path: C:/AbraGen/Logs - tiež správne; štandardné lomky je možné použiť i na platforme Windows
-
path: "C:\AbraGen\Logs" - nie je možné použiť, pokus o spustenie Web API skončí chybou:
Exception in thread "main" java.lang.RuntimeException: unable to read configuration file APIServer.yaml - path: "C:\\AbraGen\\Logs" - správne
Najjednoduchším riešením je cesty do úvodzoviek neuzatvárať - v skutočnosti úvodzovky nie sú potrebné, a to ani v prípade, kedy cesta obsahuje medzery.
Určuje, jaké informace a v jaké podrobnosti se do logu zapisují. Čím vyššie číslo, tým detailnejšie logovanie.
Možnosti:
-
-
0 (severe) - do logu sa zapisujú len nasledujúce udalosti:
- chyby, kvôli ktorým sa Web API server nepodarilo inicializovať/spustiť
-
1 (warning) - Východisková hodnota. Udalosti úrovne 0 + naviac:
-
chyby pri inicializácii logovania
-
-
2 (info) - Udalosti úrovní 0 a 1 + naviac:
- informácia o (úspešnom) spustení Web API servera
- informácia o aktuálnej konfigurácii
- Informácia o adrese a porte, na ktorých počúva Javalin
- 3 (config) - v súčasnej dobe sa nevyužíva
-
4 (fine) - Udalosti úrovní 0, 1, 2 a 3 + naviac:
- použitá cesta k ApiLib.dll
- všetky zasielané požiadavky (len metóda a URL)
- všetky doručené odpovede (len metóda a URL)
-
5 (finer) - Udalosti úrovní 0, 1, 2, 3 a 4 + naviac:
- všetky zasielané požiadavky (vrátane hlavičky a tela)
- všetky doručené odpovede (vrátane hlavičky a tela)
-
6 (finest) - v súčasnej dobe sa nevyužíva
-
Aktivuje logovanie. Pokiaľ chcete logovanie používať, zmeňte východiskovú hodnotu false na hodnotu true.
Maximálna veľkosť logu v bajtoch. Východisková hodnota 0 znamená, že je veľkosť logu neobmedzená (do logu sa zapisuje, pokiaľ sa nezaplní disk). Východiskovú hodnotu je vhodné zmeniť.
Skutočná veľkosť logu môže byť nepatrne vyššia o dĺžku jedného záznamu. Hodnota parametra sa kontroluje pred zápisom - pokiaľ je log menší ako maxsize, pridá sa do neho ďalší záznam (bez ohľadu na dĺžku záznamu), v opačnom prípade sa log uzavrie a založí sa nový.
Počet logov zaradených do rotácie.
Web API server vždy aktuálně zapisuje do logu "0".
Pokiaľ je potrebné do logu zapísať niečo ďalšie a veľkosť logu "0" presiahla nastavenú veľkosť maxsize, log "0" sa uzavrie, premenuje sa na "1", založí sa nový prázdny log "0" a nové záznamy sa zapisujú do neho. Pokiaľ sa opäť zaplní, log "1" sa premenuje na "2", log "0" sa uzavrie a premenuje na "1" a založí sa nový prázdny log "0".
Toto pokračuje, pokiaľ sa nedosiahne maximálneho počtu logov (maxcount). Pokiaľ je napr. maxcount: 5 a už existujú logy "0", "1", "2", "3" a "4", pri zaplnení logu "0" sa log "4" zmaže, "3" sa premenuje na "4", "2" sa premenuje na "3", "1" sa premenuje na "2", "0" sa uzavrie a premenuje na "1" a založí sa nový prázdny log "0".
Východiskovú hodnotu 1 je vhodné zmeniť hlavne v prípade, že máte nastavenú nenulovú hodnotu parametra maxsize. Pokiaľ si napr. nastavíte maxsize na 10485760 a maxcount ponecháte na východiskovej hodnote 1, hneď ako dosiahne veľkosť logu 10 MB (1024 x 1024 x 10), celý log sa zmaže a začne sa vytvárať nový a v tú chvíľu máte v logu len jeden záznam z poslednej logovanej akcie, všetky predchádzajúce záznamy sú stratené.
Logovanie spracovania požiadaviek Web API (na úrovni business logiky - tzn. čo sa deje následne potom, čo Web API server odovzdá požiadavku knižnici ApiLib.dll) sa konfiguruje ako akékoľvek iné logovanie činnosti ABRA Gen.
Podrobnejšie informácie o logovaní nájdete v samostatnej kapitole Logovanie Web API.
Pre zapnutie HTTPS je potrebné do konfiguračného súboru zadať hodnoty parametrov cert_pfx a cert_password. Protokol HTTPS sa začne používať automaticky.
Zabezpečená komunikácia vyžaduje použitie protokolu TLS 1.2.
Či sú všetky komponenty Web API správne nastavené a funkčné, je možné jednoducho vyskúšať zadaním nastavenej adresy a portu do internetového prehliadača, napr.
http://localhost:80/
V prípade úspechu sa zobrazí HTML tabuľka obsahujúca informácie o verzii, zoznam databázových spojení a odkaz na online nápovedu k systému AbraGen. Viď tiež príklad Základný zdroj (informácie o systéme) v kapitole Štruktúra URI.
Informace platná jen do verze 22.0. Od verze 22.1 využívá ABRA Gen znakovou sadu Unicode.
Pri práci s dátami prostredníctvom rozhrania Web API je nutné pamätať na skutočnosť, že všetky systémové položky sú v databáze systému ABRA Gen uložené v znakovej sade Windows-1250. Pri vytváraní požiadaviek a spracovaní odpovedí na nich preto používajte uvedenú znakovú sadu (kódovú stránku).