Moduł ten służy do automatycznego przepisania zadania na inną osobę po określonym czasie.
Po wgraniu modułu pojawia się nowa zakładka w konfiguracji systemu "Automatyczne przepisywania zadań".
W zakładce tej można skonfigurować jaki typ zadania (nazwa procesu i nazwa zadania) ma być przepisane. Ustala się jak długo dane typ zadania pozostaje u danej osoby, określa się to za pomocą parametru termin. Wartość ta to ilość dni zwłoki. Można ustawić na 0 (natychmiast) lub na konkretną liczbę dni. Można też wybrać czy ma pomijać dni wolne . Przy zaznaczeniu opcji na tak, uwzględniane też są dni wolne wpisane w parametrach systemu. Rodzaj przypisania określa do kogo ma zostać przepisane zadanie. Wartości to: Użytkownik, Symbol Stanowiska, Przełożony. Wartość przypisania jest uzależnione od wyboru rodzaju przepisania. Tabele można sortować oraz wyszukiwać, operacje na wierszu to edycja danych oraz możliwość usunięcia wpisu. Aby uruchomić moduł należy dodać specjalne zadanie zaplanowane "Uruchamia moduł automatycznego przenoszenia zadań" i ustawić cykliczny czas aktywacji.
Górnym ograniczeniem jest to że dla danego procesu i zadania może być tylko jeden wpis (jedna konfiguracja). To znaczy, że nie da się np ustawić dla takiego samego zadania przepisanie do przełożonego po 3 dniach i do konkretnej osoby po 2 dniach
W celu dodania nowego wpisu należy wcisnąć przycisk "Nowa definicja"
Najpierw należy wybrać proces potem zadanie należące do tego procesu. i ustawić wybrane pola potem kliknąć zapisz.
Należy dodać zadanie zaplanowane "Uruchamia moduł automatycznego przenoszenia zadań" znajduje się ono w klasie com.suncode.plugin.autotasktransfer.scheluedtasks.RunAutoTaskTransfer. Zadanie wystarczy aktywować i określić okres powtórzeń.
Po wgraniu modułu do systemu zostaną utworzone dodatkowo 2 tabele: att_definition i att_lasttransfer.
Pierwsza służy do zapisywania konfiguracji (przechowuję acctivityDefId oraz processDefId zamiast nazw które są wyświetlane na stronie konfiguracyjnej modułu )
Druga tabela służy przechowywania informacji o ostatnim przepisaniu zadania. Informacja ta jest ważna ze względu na to żeby drugi raz zadanie nie zostało przepisane, oraz po to że jak nadal przekroczy termin żeby przepisało dalej np do kolejnego przełożonego. Data jest zapisywana w formacie liczbowym Timestamp ( w milisekundach)
1.Formularz:
Przed zapisem sprawdza się , czy wymagane pola ("Nazwa procesu", "Zadanie", "Wartość przypisania") są uzupełnione. Z tym, że dla typu "Przełożony" pole "Wartość przypisania" pozostaje puste i zablokowane.
2.Zadanie zaplanowane
Zadanie zaplanowane wczytuje cała tabele konfiguracyjną ("att_definition") i dla każdego wpisu (wiersza) pobiera pasujące zadania. Wyszukuję wszystkie zadania, które mają ten sam processDefId, activityDefId, termin jest przekroczony (czyli minęło X dni od utworzenia zadania lub od ostatniego przepisania zadania) oraz status zdania jest otwarty (oczekuje na uruchomienie, uruchomiony lub otwarte).
Następnie zadanie pobiera listę osób u których jest aktualnie zadanie i będzie je przepisywać do osoby wedle ustawień. Po przepisaniu zapisuje informacje do tabeli "att_lasttransfer" z aktualną datą, aby zadanie nie zostało znowu przepisane. Zadania nie będą przepisane gdy nowy użytkownik jest ten sam co stary użytkownik, gdy użytkownik nie ma żadnego przełożonego, użytkownik nie istnieję, nie ma stanowiska lub nie ma przepisanej osoby do stanowiska. W takim przypadku data w tabeli "att_lasttransfer" zostanie zaktualizowana i poleci stosowna informacje w logach. W momencie wystąpienia błędu podczas przepisywania zadania poleci błąd w logach, zadanie się nie wywali, ale data w tabeli "att_lasttransfer" nie zostanie zaktualizowana, dzięki czemu podczas kolejnego sprawdzania zadanie znowu będzie brane pod uwagę.
Zadanie | Starzy Użytkownicy | Rodzaj przypisania | Wartość Przypisania | Przepisane na |
---|---|---|---|---|
ZadanieA | Admin | Użytkownik | Admin | Admin [Pomija przepisanie] |
ZadanieB | Admin,User1, User2 | Użytkownik | Admin | Admin |
ZadanieC | User1, User2 | Użytkownik | Admin | Admin |
ZadanieD | Admin, User1 | Użytkownik | Admin2 [Użytkownik nie istnieje] | Admin, User [Pomija przepisanie] |
ZadanieE | Admin, User1 | Symbol Stanowiska | Stanowisko1 [Użytkownik User2] | User2 |
ZadanieF | User2 | Symbol Stanowiska | Stanowisko1 [Użytkownik User2] | User2 [Pomija przepisanie] |
ZadanieG | Admin, User1 | Symbol Stanowiska | Stanowisko1 [Brak użytkownika] | Admin, User1 [Pomija przepisanie] |
ZadanieH | Admin, User1 | Symbol Stanowiska | Stanowisko666 [Nie istnieję] | Admin, User1 [Pomija przepisanie] |
ZadanieI | Admin | Przełożony | [Admin nie ma przełożonego ] | Admin [Pomija przepisanie] |
ZadanieJ | User1 | Przełożony | [Admin jest przełożonym] | Admin |
ZadanieK | User2 | Przełożony | [User1, Admin - przełożeni] | User1, Admin |
ZadanieL | User1,User3 | Przełożony | [User1 ma przełożonego Admin User3 ma przełożonego User2] | Admin,User2 |
ZadanieM | User1,User3,User2 | Przełożony | [User1 ma przełożonego Admin, User3 ma przełożonego User2, User2 ma przełożonego User1,Admin] | Admin,User1,User2 |
Status Projektu