peppol:webhookworkflow
Obsah
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á
Secretz HTTP volání AP. - AP zavolá Webhook a předá
AppIDaSecret. - Webhook spustí databázovou proceduru
spPeppolDocDownloaderpro 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á
AppIDaSecrets údaji ve své interní databázi. - Pokud údaje nesouhlasí, Webhook vrátí neautorizovanou odpověď (401).
- Dle
AppIDnajde produkční databázi aplikace, pro kterou je doklad určen. - Porovná
Secretzí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_OWNERna:- 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
spPeppolDocDownloaderzpracuje tabulkuPEPPOL_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 tabulcePEPPOL_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