Uživatelské nástroje

Nástroje pro tento web


peppol:webhookworkflow

Workflow stažení dokumentu do ESO9

1. Vznik dokumentu na AP

  • AP přijme dokument a nastaví mu status = 1.

2. Volání Webhooku

  • Webhook má ve své databázi uloženo AppID.
  • Webhook získá Secret z HTTP volání AP.
  • AP zavolá Webhook a předá AppID a Secret.
  • Webhook spustí databázovou proceduru spPeppolDocDownloader pro stažení dokladu do produkční DB.
  • Oba tyto údaje musí být totožné s databází subjektů na AP.

3. Autorizace požadavku

  • Webhook přijme požadavek z AP a porovná AppID a Secret s údaji ve své interní databázi.
  • Pokud údaje nesouhlasí, Webhook vrátí neautorizovanou odpověď (401).
  • Dle AppID najde produkční databázi aplikace, pro kterou je doklad určen.
  • Porovná Secret získaný z provolání z AP s údaji v produkční databázi dané aplikace.
  • Pokud údaje nesouhlasí, Webhook vrátí neautorizovanou odpověď (401).

4. Zápis do produkční databáze

  • Webhook přistupuje do produkční databáze s SQL autentikací. Přihlašovací údaje (connection string) jsou uloženy ve vlastní databázi Webhooku.
  • Použitý SQL účet musí mít oprávnění:
    • práva na funkci fnHodnotaParam_Varchar
    • právo zápisu do tabulky PEPPOL_DOC_QUEUE
  • SQL skript pro založení uživatelského účtu:
-- Připojení k master databázi
USE [master];
GO

-- Vytvoření přihlašovacího jména (login) na úrovni serveru
CREATE LOGIN [PeppolHttpHandler] 
WITH PASSWORD = 'SilneHeslo123!';
GO
  • SQL skript pro založení příslušné DB role:
CREATE ROLE [PeppolHttpHandlerRole]
GO
GRANT INSERT ON [dbo].[PEPPOL_DOC_QUEUE] TO [PeppolHttpHandlerRole]
GO
GRANT SELECT ON [dbo].[PEPPOL_DOC_QUEUE] TO [PeppolHttpHandlerRole]
GO
GRANT EXECUTE ON [dbo].[fnHodnotaParam_Varchar] TO [PeppolHttpHandlerRole]
GO
GRANT EXECUTE ON [dbo].[spPeppolDocDownloader] TO [PeppolHttpHandlerRole]
GO
  • SQL skript pro přidělení příslušné DB role novému uživateli:
-- Vytvoření uživatele v databázi na základě přihlašovacího jména
CREATE USER [PeppolHttpHandler] 
FOR LOGIN [PeppolHttpHandler];
GO

-- Přidání uživatele do konkrétní role v databázi
ALTER ROLE [PeppolHttpHandlerRole] 
ADD MEMBER [PeppolHttpHandler];
GO
  • Webhook otevře databázové spojení a zapíše záznam do tabulky PEPPOL_DOC_QUEUE.
  • Tento záznam obsahuje ID dokladu z AP.
  • Zde končí oprávnění databázové role použité Webhookem.

5. Stažení dokladu do produkční databáze

  • Doklad se z AP do produkční DB stahuje databázovou procedurou spPeppolDocDownloader.
  • Tuto proceduru spouští Webhook.
  • Procedura se spouští explicitně pod uživatelským účtem peppolDocCreate.
  • SQL skript pro založení uživatelského účtu:
-- Připojení k master databázi
USE [master];
GO

-- Vytvoření přihlašovacího jména (login) na úrovni serveru
CREATE LOGIN [peppolDocCreate] 
WITH PASSWORD = 'SilneHeslo123!';
GO
  • Uživatelský účet musí mít oprávnění:
    • role DB_OWNER na:
      • aplikační DB
      • dokumentová DB
      • logovací DB
  • SQL skript pro přidělení příslušné DB role novému uživateli
USE ESO9Start / ESO9Start_DOC / ESO9Start_LOG
-- Vytvoření uživatele v databázi na základě přihlašovacího jména
CREATE USER [peppolDocCreate] 
FOR LOGIN [peppolDocCreate];
GO

-- Přidání uživatele do role db_owner v databázi
ALTER ROLE [db_owner] 
ADD MEMBER [peppolDocCreate];
GO

6. Zpracování fronty dokumentů

  • DB procedura spPeppolDocDownloader zpracuje tabulku PEPPOL_DOC_QUEUE.
  • Pro všechny záznamy se status = 0:
    • provede autorizaci vůči AP
    • stáhne doklad
    • založí doklad ve formátu BIS3.0 do DMS ESO9 (jako typ FPUPEPP) a naváže jej na zpracovávaný záznam v tabulce PEPPOL_DOC_QUEUE
    • stažením dokladu z AP do aplikace ESO9 dojde ke zvýšení stavu dokladu na AP na status=2 (=staženo)
    • založí doklad daného typu (faktura, dobropis) do produkční DB
    • … a do DMS založí všechny binární přílohy (PDF), které doklad BIS3.0 obsahuje
    • při chybě založení dokladu zůstává v produkční DB uložen doklad ve formátu BIS3.0 (v DMS), z nějž se lze po odstranění příčiny chybu znovu pokusit založit doklad (faktury)
    • tento doklad již nelze znovu stáhnou z AP, protože zde je již ve stavu status=2 (=staženo)
    • po úspěšném založení dokladu v produkční databázi je na něj navázán zdrojový doklad ve formátu BIS3.0 (v DMS) a všechny jeho přílohy

7. API rozhraní Webhooku

  • Webhook poskytuje vlastní API rozhraní (CQRS), které umožňuje:
    • mazání záznamů
    • zobrazení záznamů
    • editaci záznamů
  • API je autorizováno pomocí HTTP hlavičky

X-PEPPOL-WEBHOOK-SECRET

peppol/webhookworkflow.txt · Poslední úprava: 24.03.2026 08:55 autor: turych

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki
DokuWiki Appliance - Powered by TurnKey Linux