External taski i integracje
Implementacja External Taska – przykład „get register data”
External Task służy do realizacji integracji z systemami zewnętrznymi (np. rejestry, scoring, CRM, API).
Silnik Flowee BPMS nie wykonuje logiki sam – publikuje zadanie w silniku, a zewnętrzna aplikacja (worker) cyklicznie je pobiera, przetwarza i odsyła wynik.
W tym przykładzie zadanie „get register data” służy do pobrania danych z publicznego rejestru na podstawie numerów NIP/REGON i zapisania ich do danych procesu w JSONie procesowym.
1. Konfiguracja External Taska w BPMN
Implementation:
Element | Znaczenie |
|---|---|
type="external" | Zadanie będzie obsługiwane przez zewnętrznego workera |
topic="GetRegisterData" | Kanał komunikacji – worker subskrybuje ten topic |
asyncBefore="true" | Osobna transakcja (bezpieczne retry, brak blokad) |
inputParameter | Dane wejściowe przekazywane do workera |
2. Dane przekazywane do workera
Do workera trafiają następujące zmienne:
Variable | Type | Value |
|---|---|---|
nip | String or expression | ${dataDelegate.getValueByPath(processInstanceId, 'formData.public.client.startData.nip')} |
regon | String or expression | ${dataDelegate.getValueByPath(processInstanceId, 'formData.public.client.startData.regon')} |
path | String or expression | formData.private.client.register Miejsce zapisu danych w procesie w JSONie, żeby potem zasilić formularz danymi zwrotnie z API |
Przykład danych, które worker dostanie z Flowee BPMS:
3. Logika po stronie workera (system zewnętrzny)
Worker to osobna aplikacja (np. Java, Spring Boot, Node.js, .NET), która:
Subskrybuje topic GetRegisterData
Pobiera zadanie z silnika Flowee BPMS
Wywołuje system rejestr publiczny
Zapisuje wynik do procesu
Oznacza zadanie jako zakończone
Schemat działania:
Flowee → External Task → Worker → Rejestr publiczny → Worker → Flowee
4. Odpowiedzialność workera
Worker powinien:
Odczytać dane wejściowe:
nip
regon
path
Wywołać system Rejestr publiczny:
REST / SOAP / MQ
zbudować request
obsłużyć błędy
Zbudować dane wynikowe:
np.
Zapisać wynik do procesu:
pod ścieżką przekazaną w path: formData.private.client.register
Przykładowa odpowiedź workera do Flowee BPMS
Worker kończy zadanie, przekazując zmienne:
lub bezpośrednio zapisuje do repozytorium danych (jeżeli korzysta z tego samego dataDelegate API).
Biznesowo:
➡ dane z Rejestru publicznego pojawiają się w formularzu sprawy
➡ mogą być użyte w kolejnych bramkach, DMN lub decyzjach.
Obsługa błędów i retry
External Task automatycznie wspiera:
retry
time-outy
komunikaty błędów
Worker powinien:
Sytuacja | Co zrobić |
|---|---|
Błąd techniczny | zgłosić failure + retry |
Błąd biznesowy | zwrócić poprawną odpowiedź z flagą |
Brak danych | zapisać status i kontynuować |
System Rejestr publiczny nie odpowiada | retry z backoffem |
Przykładowe scenariusze:
Rejestr publiczny niedostępny → retry
Firma nie istnieje → status: NOT_FOUND
Błąd danych → business error
Znaczenie biznesowe tego External Taska
Ten krok procesu:
✔ integruje proces z rejestrem zewnętrznym
✔ automatyzuje pobieranie danych
✔ zasila formularz sprawy
✔ eliminuje ręczne sprawdzanie