Niniejsza dokumentacja opisuje, w jaki sposób można wyzwalać zdarzenia workflow dla wybranych instancji jednostki biznesowej w bazie danych OLTP za pomocą aplikacji działającej w tle Wywołaj zdarzenia.
Sposób rejestrowania definicji działań dla wyzwalanych zdarzeń w celu generowania na ich podstawie działania można znaleźć w dokumentacji Definicje działań.
Definicje terminów
Definicja działania
Definicja działania jest szablonem dla działań generowanych na jej podstawie. Jeśli definicja działania jest aktywna, silnik workflow tworzy nowe działanie, gdy wystąpi zarejestrowane zdarzenie, pod warunkiem spełnienia warunku przejścia. Definicje działań są niezależne od bazy danych OLTP i systemu, w którym zostały zarejestrowane, ponieważ nie zawierają ani danych specyficznych dla systemu, ani danych specyficznych dla OLTP. Definicje działań są zapisywane w bazie danych repozytorium.
Zdarzenie
Zdarzenia stanowią podstawę do tworzenia działań z definicji działań w ramach Workflow Management. Zdarzenia mogą być wyzwalane przez zmiany danych dokonane przez system, aplikację lub działanie użytkownika. Zdarzenia zawierają parametry opisujące zdarzenie. Aby wygenerować działanie w momencie wystąpienia zdarzenia, aktywowana definicja działania musi być zarejestrowana dla tego zdarzenia, a warunek przejścia musi być spełniony.
Aplikacja w tle
Aplikacja działająca w tle to aplikacja, która jest wykonywana bez interakcji z użytkownikiem. Może zostać otwarta przez zadanie przetwarzania, przez wywołanie CORBA lub przez inną aplikację.
Zlecenie przetwarzania
Zlecenie przetwarzania zawiera informacje niezbędne do opóźnionego wykonania aplikacji działającej w tle przez kolejkę przetwarzania.
Opis aplikacji
Aplikacja w tle Wywołaj zdarzenia wyzwala zdarzenie com.cisag.pgm.workflow.InstanceEvent dla wszystkich instancji obiektów biznesowych wybranych przez instrukcję OQL. Aplikacja działająca w tle może być wykonywana jednorazowo lub regularnie za pomocą zlecenia przetwarzania. Działania mogą być generowane przy użyciu definicji działań, które zarejestrowały się dla wyzwalanego zdarzenia.
Parametry aplikacji działającej w tle
Aplikacja działająca w tle ma następujące parametry:
- Identyfikacja – należy wybrać identyfikator, aby zidentyfikować zdarzenia wyzwalane przez to zlecenie przetwarzania w warunku przejścia definicji działania i odróżnić je od zdarzeń wyzwalanych przez inne zlecenia przetwarzania.
- Obiekt biznesowy – należy wybrać obiekt biznesowy, dla którego mają być wyzwalane zdarzenia. Obiekt biznesowy musi być przechowywany w bazie danych OLTP. Zdarzenia dla obiektów biznesowych w bazie danych repozytorium nie mogą być wyzwalane.
- SELECT FROM … o WHERE – należy wprowadzić fragment OQL dla klauzuli WHERE instrukcji OQL. Opcjonalnie można wprowadzić kolejną klauzulę ORDER BY, aby zdefiniować sekwencję wyzwalanych zdarzeń. Obiekt biznesowy jest identyfikowany za pomocą aliasu o. Za pomocą klauzuli WHERE można ograniczyć wystąpienia, dla których zdarzenia są wyzwalane. Jeśli nie można wyrazić ograniczenia w klauzuli WHERE, należy zaimplementować je w warunku przejścia w definicji działania. Należy pamiętać, że każde zdarzenie musi zostać przetworzone przez serwer aplikacji i dlatego zajmuje trochę czasu. Dlatego najlepiej jest ograniczyć instancje za pomocą klauzuli WHERE. Więcej informacji na temat instrukcji OQL można znaleźć w dokumentacji Składnia OQL.
Parametry wywołanego zdarzenia
Zdarzenie com.cisag.pgm.workflow.InstanceEvent posiada następujące parametry:
- identification – identyfikacji parametru identification można użyć do rozróżnienia zdarzeń, które zostały wyzwolone przez różne zlecenia przetwarzania w definicji działania. Identyfikację zdarzenia można dowolnie wybrać podczas wprowadzania zadania przetwarzania. Identyfikacja może zawierać maksymalnie 25 znaków.
- objectInstance – parametru objectInstance można użyć do oceny obiektu biznesowego w definicji działania, na przykład w warunku przejścia lub w deklaracjach. Jeśli język skryptowy Język skryptów systemu jest ustawiony w definicji działania, należy użyć funkcji cast(), aby móc ocenić instancję obiektu biznesowego. Poniższy przykład określa obsługującego zadania pomocy technicznej, dla którego zostało wyzwolone zdarzenie.
- objectName – nazwa techniczna obiektu biznesowego w parametrze objectName jest dodatkowym kryterium rozróżniającym, jeśli identyfikacja w parametrze Identyfikacja nie jest unikalna.
Przykład
Osoba przetwarzająca zgłoszenie supportowe typu REQ, które nie zostało jeszcze zakończone, powinna zostać powiadomiona, jeśli zgłoszenie supportowe nie zmieniło się w statusie Informacje wymagane dla tego samego pracownika przez co najmniej siedem dni.
W tym celu należy utworzyć definicję procesu i zarejestrować zaprogramowane zdarzenie com.cisag.pgm.workflow.InstanceEvent na zakładce Zdarzenia definicji działania węzła startowego. Jeśli język skryptowy Język skryptów systemu jest ustawiony dla definicji działania, należy wprowadzić następujący warunek przejścia:
parameters.identification = „INFORMATION_REQUIRED” AND
days(cast(CisObject(com.cisag.app.internal.obj.SupportRequest),
parameters.objectInstance):updateInfo.updateTime, now()) > 7
W warunku przejścia najpierw sprawdzana jest identyfikacja. Następnie sprawdzane jest, czy data ostatniej zmiany zgłoszenia supportowego jest starsza niż siedem dni. Ten warunek jest wystarczający do określenia, czy zgłoszenie supportowe oczekuje na informacje od tego samego obsługującego przez co najmniej siedem dni, ponieważ atrybut updateInfo.updateTime jest również zmieniany przy każdej zmianie stanu i zmianie obsługującego.
Następnie należy otworzyć aplikację działającą w tle Wywołaj zdarzenia i utworzyć zlecenie przetwarzania, które wyzwala zdarzenie dla wszystkich zgłoszeń serwisowych ze statusem Informacje wymagane (numeryczny identyfikator: 15):
Parametr | Wartość |
Identyfikacja | INFORMATION_REQUIRED |
Obiekt biznesowy | com.cisag.app.internal.obj.SupportRequest |
SELECT FROM … o WHERE | o:orderNumber like 'REQ-%’ AND
o:status = 15 |
W przypadku uruchomienia aplikacji w tle jako serii, działania są generowane zgodnie z wybranym wzorcem serii.
Aby zminimalizować liczbę wyzwalanych zdarzeń, a tym samym uniknąć niepotrzebnego obciążenia, należy jak najszybciej sprawdzić warunki przejścia w instrukcji OQL. Na przykład w poniższej instrukcji OQL wystarczy sprawdzić identyfikację w warunku przejścia:
o: „type” IN (
SELECT SRT: „guid”
FROM com.cisag.app.internal.obj.SupportRequestType SRT
WHERE SRT: „code” = 'REQ’) AND o
: „status” IN (15) AND o
: „updateInfo.updateTime” < SYSTEMTIME – (toTimeStamp(’GMT’, 2017,1,8,0,0,0,0) – toTimeStamp(’GMT’, 2017,1,1,0,0,0,0))
ORDER BY o: „orderNumber” ASC