Rejestracja zdarzeń procesu
Rejestracja zdarzeń
Jest to dziennik zdarzeń, w którym chronologicznie rejestrowane są zdarzenia zaistniałe w sprawie. W celu włączenia rejestracji zdarzeń należy ustawić parametr w konfiguracji platformy: CASE_HISTORY_ENABLED="true"
Rejestrujemy dwa typy zdarzeń:
Systemowe - wykonywane przez użytkowników (Klienta i Pracownika):
utworzenie sprawy,
podjęcie kroku manualnego przez użytkownika (claim),
zapisanie kroku manualnego przez użytkownika (zapisanie zadania - przerwanie realizacji - tu nie ma unClaim),
odłożenie kroku manualnego przez użytkownika (unClaim),
finalizacja kroku manualnego przez użytkownika,
zakończenie sprawy (koniec procesu),
zmiana priorytetu sprawy.
Biznesowe - zdarzenia rejestrowane w Historii przez proces, w momentach zdefiniowanych w procesie (np. w kroku automatycznym lub z poziomu formularza).
Zdarzenie biznesowe posiada atrybuty wspólne:
typ zdarzenia: biznesowe,
rodzaj zdarzenia,
osoba przypisana,
opis zdarzenia,
struktura z atrybutami zdarzenia,
datę zdarzenia.
Zdarzenia Systemowe
Konfiguracja
W celu wykorzystania pluginu służącego do dodawania poszczególnych zdarzeń systemowych na topic, należy ustawić w konfiguracji namiary na router-api poprzez config ROUTER_ENGINE_CASE_HISTORY_ROUTER_API_URL, np:
Automatyczna publikacja zdarzeń dla typów
PROCESS_START - Start procesu
PROCESS_END - Zakończenie procesu
CLAIM_TASK - Przypisanie użytkownika
UNCLAIM_TASK - Odpisanie użytkownika
ASSIGNEE_TASK - Przypisanie użytkownika przez innego użytkownika
SEND_USER_TASK - Wysłanie zadanie użytkownika
SAVE_TASK - Zapis zadania
PROCESS_PRIORITY_CHANGE - Zmiana priorytetu zadania
Zdarzenia Biznesowe
Konfiguracja
W celu rejestracji zdarzeń biznesowych, należy w aplikacji biznesowej dodać zależność:
events-connector
Następnie należy dodać konfigurację:
gdzie ROUTER_API_URL to adres aplikacji router-api.
Następnie w kodzie aplikacji np. w Handlerze zadania camundowego, należy wstrzyknąć bean'a CaseHistoryBusinessMessageConnector i wywołać na nim metodę publish przekazując obiekt BusinessMessage.
Pobieranie informacji do zdarzeń systemowych i zdarzeń biznesowych
W przypadku zdarzenia "odłożenie kroku manualnego przez użytkownika" (unclaim), przy wywołaniu innym niż w ramach Router 2 (tzn. bezpośrednio poprzez API Camundy), należy dodać obsługę zdarzenia biznesowego, które przechwyci wywołanie unclaim.
W celu właściwego rejestrowania kanału zdarzenia, należy dodać na każdym wniosku zmienną router_channel:


Kafka
Konfiguracja Kafki dla rejestracji zdarzeń procesu:
Topic
Na środowisku kafka powstał topic 'all'. Do nowego topic'u przychodzą wszystkie zdarzenia, w tym te z rejestracją zdarzeń procesu. Aplikacja router-api pobiera z topic'a all dane dla zakładki historii sprawy w Eximee Dashboard.
Przykładowy obiekt zdarzenia, który trafia na kolejkę:
Obsługa błędów
W przypadku błędu podczas pobierania zdarzenia, informacje o błędzie trafiają do logu eximee-events-errors.log.
Przykładowy wpis o błędzie:
[router2-api-docker] 2023-03-03 15:14:34.074 [key=c1411d4a-3d9e-47fc-9970-711138451a06][offset=43][value=EventData(origin=SYSTEM, type=PROCESS_PRIORITY_CHANGE, timestamp=1673541340, payload={processInstanceId=f442acfd-877f-11ed-9beb-0242ac120003, eventDescription=Ustawienie wysokiego priorytetu sprawy, channel=EXIMEE_DASHBOARD, processKey=kredytHipoteczny, username=user0001, params={}}))][topic=all] [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] ERROR java.lang.ClassCastException: Cannot cast java.lang.String to java.lang.Boolean
gdzie:
[router2-api-docker] - identyfikator kontenera, który zgłosił błąd,
key - klucz eventu,
offset - indeks wiadomości w kafce,
value - przetwarzany obiekt,
topic - topic kafkowy, z którego nastąpiła konsumpcja eventu.
Endpoint diagnostyczny dla błędów podczas pobierania zdarzeń z historii sprawy
Powstał endpoint sprawdzający czy jest wpis w aktualnym pliku z błędami dla zdarzeń:
GET TRAEFIK_HOST:TRAEFIK_PORT/router-api/case-history/event/errors
Response: false - plik jest pusty true - w pliku są jakieś błędy
Ponawianie błędów
Błędnie przetworzone zdarzenia należy ręcznie dodać do bazy danych. W tym celu należy pobrać z logu eximee-events-errors.log dane zdarzenia, np. :
następnie należy przygotować odpowiedni insert do bazy danych np.:
Gdzie:
firstName należy podmienić na właściwe imię pracownika (np. na podstawie danych z keycloak),
lastName należy podmienić na właściwe nazwisko pracownika (np. na podstawie danych z keycloak).
Ostatnia aktualizacja
Czy to było pomocne?
