AddCaseEvent
Dodaje wpis do historii biznesowej sprawy. W odróżnieniu od automatycznie generowanej historii technicznej (która rejestruje każdą zmianę wartości pól, przesłanie sprawy itp.), historia biznesowa służy do rejestrowania tylko kluczowych momentów w procesie biznesowym, takich jak akceptacja dokumentu, wysłanie maila do klienta, otrzymanie odpowiedzi od kontrahenta czy zakończenie etapu negocjacji.
Składnia
AddCaseEvent(object)
Argumenty funkcji
Typ zdarzenia
W pierwszej kolejności musimy określić typ zdarzenia, które chcemy zapisać w historii. Do tego celu w AMODIT musi istnieć conajmniej jeden słownik określający typy zdarzeń zdarzenia. Takich słowników może być więcej. W słowniku umieszczamy listę typów zdarzeń przykładowo: „Telefon przychodzący”, „Telefon wychodzący”, „Otrzymanie maila”, „Wysłanie maila”, itd. Najlepiej gdy opis zawiera zarówno określenie kanału komunikacji jak i kierunku komunikacji. Listę zdarzeń należy zdefiniować samodzielnie wg własnych potrzeb.
Przy zapisywaniu zdarzenia do historii biznesowej możesz posłużyć się jednym z poniższych trzech sposobów.
Sposób 1: Podanie nazwy słownika i nazwy typu zdarzenia
W celu zarejestrowania zdarzenia zaleca się używania nazwy słownika ze zdarzeniami oraz nazwy pozycji ze słownika. To zapewnia przenośność kodu między środowiskami.
- EventDictionaryName – (String) [Optional] Nazwa słownika z typami zdarzeń biznesowych
- EventTypeName – (String) [Optional] Nazwa pozycji słownika
Sposób 2: Podanie id pozycji typu zdarzenia
W uzasadnionych przypadkach można użyć tylko ID pozycji ze słownika zdarzeń. To ID jest w systemie AMODIT jednoznaczne i unikalne, więc jest wystarczające do określenia jakie to zdarzenie i do którego słownika zdarzeń należy.
- EventTypeId – (Decimal) [Optional] ID pozycji słownika opisującej typ zdarzenia biznesowego
Sposób 3: Podanie id słownika i nazwy typu zdarzenia (nie zalecany)
Można również skorzystać z kombinacji, gdzie podajemy ID słownika oraz nazwę pozycji z tego słownika (nie zalecane):
- EventDictionaryId – (Decimal) [Optional] ID słownika z typami zdarzeń biznesowych
- EventTypeName – (String) [Optional] Nazwa pozycji słownika
Wiadomość, komunikat opisujący zdarzenie
Kolejny parametr to wiadomość, czyli tekst, który chcemy zapisać w ramach tego zdarzenia:
- Message – (String) [Optional] Niestandardowa wiadomość
Podmiot biznesowy, którego dotyczy zdarzenie
Dwa sposoby wprowadzania podmiotu biznesowego:
Sposób 1: (niezalecany) bezpośrednie użycie w obiekcie zdarzenia:
- BusinessSubjectName – (String) [Optional] Nazwa podmiotu związanego ze zdarzeniem (np. imię i nazwisko osoby)
- BusinessSubjectId – (String) [Optional] ID podmiotu biznesowego (np. numer ewidencyjny w Twoim systemie)
- BusinessSubjectType – (String) [Optional] Typ podmiotu biznesowego
Sposób 2: (zalecany) jako obiekt zagnieżdżony:
- BusinessSubject – (Object) [Optional] Obiekt z polami:
- Name – (String) [Optional] Nazwa podmiotu związanego ze zdarzeniem
- Id – (String) [Optional] ID podmiotu biznesowego
- Type – (String) [Optional] Typ podmiotu biznesowego
WAŻNE:
- Jeśli podasz oba sposoby, obiekt BusinessSubject ma priorytet i nadpisze wartości z osobnych pól!
- Kluczowa zasada: BusinessSubject = podmiot główny
- ZAWSZE podawaj w BusinessSubject osobę/firmę, której dotyczy proces/zdarzenie, a nie wykonawcę
Nasze propozycje nazw typów obiektów biznesowych (dostosuj do swoich potrzeb):
Podstawowe typy:
- „CLIENT” – Klient zewnętrzny
- „EMPLOYEE” – Pracownik organizacji
- „MANAGER” – Kierownik/menedżer
- „USER” – Ogólny użytkownik systemu
- „ADMIN” – Administrator systemu
Rozszerzone (przykłady):
- „DIRECTOR” – Dyrektor/zarząd
- „CONTRACTOR” – Kontrahent/dostawca
- „PARTNER” – Partner biznesowy
- „AUDITOR” – Audytor zewnętrzny
- „CONSULTANT” – Konsultant
- „VENDOR” – Dostawca
- „INVESTOR” – Inwestor
Zwracana wartość
Funkcja zwraca Boolean – true jeśli wpis do historii biznesowej został pomyślnie utworzony.
Funkcja AddCaseEvent automatycznie zapisuje dodatkowe informacje, których nie musisz podawać:
- ✅ Data i czas – dokładny moment wywołania funkcji
- ✅ Użytkownik – aktualnie zalogowany użytkownik
- ✅ ID sprawy – automatycznie z kontekstu reguły
- ✅ Nazwa reguły – nazwa reguły, z której wywołano zdarzenie
Przykład tego co zobaczysz w historii biznesowej:
📅 Data: 2024-03-15 14:30:25 👤 Użytkownik: Jan Kowalski (ID: 42) 📁 Sprawa: #9876 ⚙️ Reguła: OnDocumentApproved 📋 Zdarzenie: Dokument zaakceptowany 💬 Wiadomość: [Twoja Message] + dane BusinessSubject
Struktura zapisu w bazie danych:
cetId -- ID zdarzenia (auto-increment) cetCaseId -- ID sprawy (auto z kontekstu) cetUserId -- Wykonawca (auto - zalogowany użytkownik) cetDate -- Data/czas (auto - DateTime.Now) cetEventTypeId -- Typ zdarzenia (z parametrów) cetMessage -- JSON z szczegółami zdarzenia
JSON w cetMessage:
{ "actionName": "Reklamacja wpłynęła", "ruleName": "OnReklamacjaReceived", "customMessage": "Reklamacja otrzymana mailem - produkt uszkodzony", "businessSubject": { "Name": "Jan Kowalski", "Id": "CLIENT_12345", "Type": "CLIENT" } }
Przykłady uzycia
Przykład 1: Rejestrowanie prostego zdarzenia w procesie HR
object.EventDictionaryName = "Zdarzenia_HR"; object.EventTypeName = "Zmiana danych pracownika"; AddCaseEvent(object);
Przykład 2: Tworzy zdarzenie wraz z opisem zdarzenia
object.EventDictionaryName = "Zdarzenia_Dokumentów"; object.EventTypeName = "Dokument zaakceptowany"; object.Message = "Automatycznie zaakceptowany przez system po weryfikacji podpisu elektronicznego"; AddCaseEvent(object);
Przykład 3: Tworzy zdarzenie wraz ze wskazaniem podmiotu biznesowego, którego dotyczy
// Rejestrowanie kontaktu z klientem object.EventDictionaryName = "Zdarzenia_Klienckie"; object.EventTypeName = "Kontakt telefoniczny"; object.Message = "Rozmowa w sprawie reklamacji produktu XYZ-123"; // Utworzenie obiektu np. o kliencie subject = CreateObject(); subject.Name = "Jan Kowalski"; subject.Id = "KL001"; // to może być np. numer z Waszego systemu CRM subject.Type = "CLIENT"; // Dodanie informacji o kliencie object.BusinessSubject = subject; AddCaseEvent(object);
Ten sam efekt, ale używając osobnych pól:
// Rejestrowanie kontaktu z klientem object.EventDictionaryName = "Zdarzenia_Klienckie"; object.EventTypeName = "Kontakt telefoniczny"; object.Message = "Rozmowa w sprawie reklamacji produktu XYZ-123"; // Dodanie informacji o kliencie object.BusinessSubjectName = "Jan Kowalski"; object.BusinessSubjectId = "KL001"; object.BusinessSubjectType = "CLIENT"; AddCaseEvent(object);
Przykład 4: Tworzy zdarzenie dla sprawy typu 'Mail sent’ ze słownika o wybranej nazwie
object.EventDictionaryName = "CaseEvents"; object.EventTypeName = "Mail sent"; object.Message = "Wysłano odpowiedź na zgłoszoną reklamację"; AddCaseEvent(object);
Przykład 5: Tworzy zdarzenie dla sprawy typu opisanego przez pozycję słownika o podanym ID i informacjami o podmiocie biznesowym
object.EventTypeId = id; object.BusinessSubjectName = "Jan Kowalski"; object.BusinessSubjectId = 1224; object.BusinessSubjectType = "USER"; AddCaseEvent(object);