facebook LinkedIN LinkedIN - follow

API ABRA Gen otevírá neomezené možnosti pro vaše aplikace

Funkční rozhraní API přímo v informačním systému umožňuje velmi snadné napojení na externí aplikace, webové portály, e-shopy či zařízení, bez ohledu na dodavatele. Na ERP napojíte i vaši vlastní aplikaci, která je pro byznys firmy klíčová. S kvalitním API se programátor nemusí nic složitého učit a může se soustředit na rozvoj své unikátní aplikace. O všechny ekonomické věci se postará ERP systém.


Generické API je nedílnou součástí ERP

Rozhraní API informačního systému ABRA Gen je unikátní díky tomu, že nestojí samostatně mimo systém, ale je v něm plně integrováno. API respektuje business logiku (veškerá pravidla a pokročilé funkcionality) systému a zajišťuje jednotný přístup k datům a úplnou integritu jak při čtení, tak i při zápisu. Je jedno, zda uživatel záznam založí přímo v systému, nebo skrze API, záznam bude vždy úplný a správný.

API ABRA Gen je generické, tzn. že dovoluje přistupovat ke všem stávajícím i budoucím business objektům v celém systému. Za business objekt se zjednodušeně řečeno považují veškerá strukturovaná data, se kterými systém pracuje – faktura, firma, osoby, skladová karta apod. Těchto objektů systém obsahuje stovky a neustále v něm s přibývajícími funkcemi vznikají nové. Týká se to pochopitelně také uživatelsky definovatelných položek a číselníků. Generické API dovoluje všechny nové objekty automaticky přidávat bez toho, aniž by je musel programátor složitě dodělávat.

Výhodou generického API ABRA Gen je také skutečnost, že je v něm zpřístupněna celá datová základna systému, nikoliv pouze nějaká jeho část. V konečném důsledku to programátorům dává mocný nástroj k tomu, aby si mohli vytvořit jakékoliv vlastní vizuální prostředí a pracovat v něm se všemi daty a využívat veškerou business logiku celého systému ABRA Gen.

Vlastní dotazovací jazyk

API ABRA Gen je postavené na tradičním protokolu http a využívá architekturu REST. Pracuje tedy se základními metodami dotazování GET pro získání zdroje, POST pro vytvoření nového zdroje, PUT pro aktualizaci existujícího zdroje a DELETE pro smazání zdroje. API ABRA Gen dále obsahuje vlastní dotazovací jazyk.


Obr. 1: Princip zpracování požadavku API ABRA Gen.

Na začátku API server vyhodnotí složitost požadavku. V případě dotazu na perzistentní položky, tzn. položky uložené přímo v databázi, API komunikuje přímo s SQL databází, což zajistí rychlé odbavení požadavku. V případě složitějšího dotazu, který vyžaduje počítané položky (např. řádky v dokladech), je nutné zapojit business logiku ABRA Gen, která následně pomocí frameworku ORM (Object Relation Mapping) komunikuje se SQL databází a vrátí požadovanou odpověď. A právě možnost zapojit do API dotazu i kompletní business logiku ABRA Gen patří mezi hlavní výhody generického API.

Vícevláknové API

Původní API pracovalo jen s jedním vláknem, tzn. že všechny dotazy se vyřizovaly sériově, postupně jeden za druhým. Pochopitelně i zde existoval způsob, jak pracovat s několika dotazy najednou, nicméně bylo nutné provozovat více samostatných workerů, každý pro jedno vlákno dotazu. Konfigurace takového řešení však nebyla jednoduchá a celé řešení naráželo na různé technologické limity.

Zásadní technologické vylepšení, a přitom zjednodušení celého cyklu zpracování dotazu přináší nový multithread API server, který přijímá http požadavky a zároveň přímo komunikuje s aplikačním serverem ABRA Gen. Díky technologii více vláken server paralelně zpracovává více požadavků najednou a automaticky škáluje výkon podle aktuální zátěže.

Můžete si to představit tak, že každý požadavek je jako auto, které má na dálnici svůj vlastní pruh. Nyní má dálnice podle potřeby až 20 pruhů a s aktuálním příchodem 64bit verze ABRA Gen je těchto pruhů v podstatě neomezené množství. Jízda po takové dálnici je velmi rychlá, nedochází k zácpám a nezatěžuje celý systém.

Příklad jednoduchého dotazování

Na jednoduchém příkladu dotazu typu GET je naznačen výběr kolekce faktur (business objekt „issuedinvoice“), kde každý objekt faktury bude obsahovat field ID a field DisplayName, jehož hodnota bude vrácena pod názvem DocNumber:

GET http://localhost/data/issuedinvoices?select=ID,DisplayName+as+DocNumber

Podobně můžete zjistit stav skladu metodou POST – odesláním jednoduchého dotazu získáte stav všech skladových karet (business objekt „storesubcard“) ve všech skladech:

POST http://localhost/data/query
{
  "class": "storesubcards",
  "select": [
    "storecard_id",
    "store_id",
    "Quantity"
  ]
}

Pozn.: Metodami POST a GET dostanete v podstatě stejná data, ale v případě složitějších dotazů je výhodnější použít POST z důvodu možnosti vnořených poddotazů a větší přehlednosti.

Pokročilé dotazy pro komplexní aplikace

Důležitou funkcí API ABRA Gen je možnost volat dávkové dotazy. V jednom dotazu je díky tomu možné vykonat několik operací v řadě za sebou. To má výhodu v tom, že není nutné čekat na odpověď každého požadavku zvlášť, čímž se významně urychlí vyřízení celého dotazu. Druhou výhodou je transakční zpracování, tedy že pokud se jedna z operací v dávce nepovede, neprovede se ani celá dávka – transakce se nedokončí, pokud nedoběhne poslední část dávky. Dávka může obsahovat libovolnou posloupnost standardních požadavků typu create, update a delete.

Příklad ukazuje dávkovou operací tří položek zahrnutých do jednoho pole „items“. Položky se zpracují v nastaveném pořadí. V první položce je vytvořen účet, který má svoje jméno a kód. Ve druhé položce je ten samý účet identifikovaný podle nově vzniklého „obj_id“ přejmenován (tímto způsobem je možné odkazovat se v jednotlivých položkách dávky na předchozí položky) a ve třetí položce je nový objekt celý smazán:

POST http://localhost/data/batch
{
  "items": [
    {
      "type": "create",
      "id": "a",
      "data": {
        "class_id": "accounts",
        "object_data": {
          "name": "acc 1",
          "code": "009"
        },
        "query": {
          "select": ["id", "code", "name"]
        }
      }
    },
    {
      "type": "update",
      "id": "b",
      "allow_expr": true,
      "data": {
        "class_id": "accounts",
        "obj_id": "${a.id}",
        "object_data": {
          "name": "${a.name + '0'}",
          "code": "${a.code}"
        },
        "query": {
          "select": ["id", "code", "name"]
        }
      }
    },
    {
      "type": "delete",
      "id": "c",
      "allow_expr": true,
      "data": {
        "class_id": "accounts",
        "obj_id": "${b.id}"
      }
    }
  ]
}

Další užitečnou funkcí je volání tzv. importních manažerů. Ty mají v business logice za úkol některé pokročilé funkce jako je tvorba vazby mezi doklady. Když vzniká jeden doklad ze druhého, např. konkrétní příjemka z objednávky vydané, doklady nestojí v systému samostatně, ale jsou navzájem propojené X vazbou. Díky volání importních manažerů o tyto pokročilé funkce v API nepřijdete.

Příklad ukazuje import objednávky vydané („issuedorder“) s konkrétním číslem do příjemky („receiptcard“). V těle dotazu je určena řada výstupního dokladu, na který se importují všechny řádky:

POST http://localhost/data/receiptcards/import/issuedorders/4470000101
{
  "params": {
    "docqueue_id": "0600000101"
  }
}

Přes API ABRA Gen je rovněž možné volat jakékoliv individuální úpravy, které jsou v systému navrženy formou scriptů. Script jako takový může v ABRA Gen provádět velmi komplexní operace, jako je např. uzávěrka pokladního prodeje nebo uzávěrka skladů. A právě i takto složitý proces lze díky API ABRA Gen zahrnout do vaší vlastní aplikace. Využití vhodné kombinace dávkových operací, importních manažerů a volání scriptů vám ve výsledku dává při tvorbě vlastních aplikací takřka neomezené možnosti.

Komplexní a přehledná dokumentace

Integraci přes API ABRA Gen programátorům významně usnadňuje komplexní a velmi podrobná dokumentace. Dostupná je nejen swager dokumentace, ale také detailní přehled všech business objektů a jejich položek a v online nápovědě také soubor konkrétních příkladů pro modelové situace. Navíc lze využít také online interaktivní dokumentaci, která sdružuje všechny zmíněné zdroje, a kromě toho umí načíst celou strukturu konkrétního API spojení vč. definovatelných číselníků a položek, které může mít vaše firma v systému vytvořeny.

Bezpečnost na prvním místě

Přístup k API je v případě API ABRA Gen dovolen pouze uživatelům, kteří mají v ABRA Gen nastavené odpovídající oprávnění. V API také fungují standardní oprávnění pro přístup k řadám dokladů, střediskům atd. Při zpřístupnění API do internetu lze použít zabezpečený protokol HTTPS, díky kterému je potom veškerá komunikace s API šifrovaná.