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
Dział zatytułowany „Składnia”AddCaseEvent(object)Argumenty funkcji
Dział zatytułowany „Argumenty funkcji”Typ zdarzenia
Dział zatytułowany „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
Dział zatytułowany „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
Dział zatytułowany „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ść
Dział zatytułowany „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:
Dział zatytułowany „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 BusinessSubjectStruktura zapisu w bazie danych:
Dział zatytułowany „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 zdarzeniaJSON w cetMessage:
Dział zatytułowany „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
Dział zatytułowany „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 klientemobject.EventDictionaryName = "Zdarzenia_Klienckie";object.EventTypeName = "Kontakt telefoniczny";object.Message = "Rozmowa w sprawie reklamacji produktu XYZ-123";
// Utworzenie obiektu np. o klienciesubject = CreateObject();subject.Name = "Jan Kowalski";subject.Id = "KL001"; // to może być np. numer z Waszego systemu CRMsubject.Type = "CLIENT";
// Dodanie informacji o kliencieobject.BusinessSubject = subject;
AddCaseEvent(object);Ten sam efekt, ale używając osobnych pól:
// Rejestrowanie kontaktu z klientemobject.EventDictionaryName = "Zdarzenia_Klienckie";object.EventTypeName = "Kontakt telefoniczny";object.Message = "Rozmowa w sprawie reklamacji produktu XYZ-123";
// Dodanie informacji o kliencieobject.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);