GraphQL v rámci Sofa
Z pohledu administrátora Sofa lze GraphQL dotazy volat třemi různými způsoby:
-
jako uživatel,
-
jako agenda,
-
jako externí informační systém.
Nastavení oprávnění k přístupu
Oprávnění přístupu k určitým typům souborů se v Sofa nastavuje v okně Administrace.
-
Po stisku tlačítka Dokumenty/SmartSafe se otevře okno pro nastavení vlastností souborů podle typu. V levém sloupci ve skupině Základní nastavení klepněte na položku Typy souborů.
-
V pravé části okna je přehled typů souborů. Vyberte ten, který chcete zkontrolovat či upravit – například Faktura. Klepněte na tlačítko se třemi tečkami před jeho názvem.
-
V následující příkazové nabídce spusťte příkaz Nastavit oprávnění.
V okně Nastavit oprávnění k typu souboru – Faktura vidíte na trojici karet, jaká oprávnění mají k souborům typu Faktura uživatelé (podle skupin a rolí), jednotlivé agendy a také informační systémy.
Tak například na kartě Agendy je zřejmé, že k souborům typu Faktura má nastavená systémová oprávnění agenda Faktura, a to v dokumentové i archívní (SmartSafe) části práva dokumenty vytvářet, zobrazovat, upravovat a sdílet.
Tlačítkem Přidat agendy můžete pak vytvořit další oprávnění i pro jiné agendy.
Volání dotazů jako uživatel
Pokud uživatel zobrazuje tabelárně zobrazená data (gridy), případně volá GraphQL dotazy z editoru v rámci FlowApps, volá je vždy jako aktuálně přihlášený uživatel. Toto je nutné zohledňovat při práci a také při navrhování přístupových práv k souborům v rámci DMS.
Modelová situace:
V systémových událostech zjistíte, že vám nejde vložit dokument typu Faktura.
-
Otevřete si agendu Faktura.
-
Najděte vhodný dotaz.
-
Vložte do něj z logu získané proměnné.
-
Dotaz spusťte.
Vrátí se odpověď, že nemáte oprávnění vkládat soubory typu Faktura.
Vysvětlením je, že oprávnění vkládat soubory typu Faktura má pouze agenda Faktura, a proto tedy dotaz spouštěný uživatelem (bez úprav nastavení) neprojde.
Volání dotazů jako agenda
Druhým způsobem je volání dotazů jako agenda. Toto je důležité hlavně pro návrháře agend, kteří v rámci agendy mohou sestavovat své GraphQL dotazy a následně se rozhodovat, jestli je chtějí z agendy volat jako agenda, nebo jako aktuálně přihlášený uživatel.
Způsob volání se řídí nastavením daného dotazu v rámci procesního JavaScriptu (PAJS). Příklady volání Graph QL z PAJS jsou k kapitole Příloha 1.
Volání dotazů jako externí informační systém
Posledním způsobem, pro který je nutné např. v rámci DMS řešit oprávnění, je volání dotazů jako externí systém.
Modelový příklad:
Ukážeme si, jak přes prohlížeč Altair získat seznam souborů typu Faktura.
V okně Nastavit oprávnění k typu souboru – Faktura je nejprve nutné na záložce Informační systémy povolit, aby daný systém měl oprávnění zobrazovat soubory požadovaného typu.
Díky sdílené session se Altair autentizuje jako externí systém pouze, pokud je v hlavičce vyplněn autorizační token (viz kapitola Napojení na Sofa). |
Platnost autorizačního tokenu je 120 minut, poté je nutné zažádat si o nový. V případě, že autorizační token uvedený v hlavičce je neplatný, vrací se jako odpověď na dotaz ERROR 500. |
query ($page: Int = 1, $limit: Int = null, $order:[DocFile_Type_invoice_OrderByExpr] = null, $where:DocFile_Type_invoice_BooleanExpr = null) { docs { files { invoices(page:$page, limit:$limit, orderBy:$order, where:$where) { pageInfo { hasNextPage hasPreviousPage } edges { node { sys { id currentBlob { binary { # downloadLink je adresa na stazeni posledniho nahraneho souboru downloadLink fileName } } } } } } } } }
Příklad výsledku:
{ "data": { "docs": { "files": { "invoices": { "pageInfo": { "hasNextPage": true, "hasPreviousPage": false }, "edges": [ { "node": { "sys": { "id": "3545d76c-fe38-468d-9983-89364f83b1ee", "currentBlob": { "binary": { "downloadLink": "https://presofa.602.cz/api/bpmn/v1/data/file?fileId=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaWQiOiJhcmNoaXZlIiwiZmlkIjoiY2NjMDY5ZWItMzkzYy00OWVhLWJiMGUtNTZhZjU0YzA3Y2M5IiwiaXNzIjoiaHR0cHM6Ly9wcmVzb2ZhLjYwMi5jei8ifQ.NXsjXf3Ty8ypsAQLLs2SwDjW4vNKUx1T0HlG-G01NRw", "fileName": "Course_Core.png" } } } } }
Ve výpisu se opakuje část od pole node po složenou závorku s čárkou na konci příkladu – pro každou uloženou fakturu, pokud je nastaveno $limit: Int = null nebo po nastavený počet faktur, například 10 – pokud je nastaveno $limit: Int = 10.
Ve výpisu je pro každou fakturu uvedeno ID souboru, dále URL adresa, na které lze soubor stáhnout a název souboru.