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í.

Obsah obrázku text

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.

image31

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.

  1. Otevřete si agendu Faktura.

  2. Najděte vhodný dotaz.

  3. Vložte do něj z logu získané proměnné.

  4. 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.

image
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.