W tym wpisie przedstawimy jak przygotować raport ze zgłoszeń zarchiwizowanych tak, aby były również widoczne grupy wsparcia dla zadań.

Wstęp

Jak wiadomo, standardowy kreator raportów nie umożliwia dodania takiej kolumny do wynikowego raportu. Często bywa tak, że jest wymagana taka informacja chociażby po to, by zweryfikować i porównać obciążenie zadaniami poszczególnych grup wsparcia sprzed roku do bieżącego. Ponadto dzięki temu będziemy w stanie posortować odpowiednio wyniki według naszych potrzeb.

Przygotowania

Warto tutaj zaznaczyć, że nazwy kolumn zgłoszeń zarchiwizowanych bazy danych również odbiegają od tych niezarchiwizowanych, ale o tym w dalszej części wpisu. Zanim przystąpimy do budowania raportu, warto przemyśleć, co będzie dokładnie nam potrzebne. W naszym przykładzie będą to dane typowo pod analizę obciążenia poszczególnych grup wsparcia – ID zgłoszenia, Zgłaszający, Temat zgłoszenia, Tytuł zadania, grupa wsparcia zadania oraz Technik przypisany do zadania. Gdy już wszystko mamy zaplanowane i wiemy co dany raport ma zawierać, możemy przystąpić do budowania raportu.

Tworzenie raportu zgłoszeń zarchiwizowanych

Sama składnia raportu różni się tylko nazwami tabel w bazie danych. Nazwy te zawierają przedrostek Arc_. Ułatwia to znacznie tworzenie takiego raportu. Należy jednak pamiętać, że nie wszystkie tabele są archiwizowane.

Zaczynamy od podstawowego SELECTa:

SELECT wo.WORKORDERID "ID zgłoszenia", wo.TITLE "Tytuł zgłoszenia" FROM Arc_WorkOrder wo
WHERE ((wo.CREATEDTIME >= datetolong('2015-01-01')) AND (wo.CREATEDTIME <= datetolong('2015-12-31')))

datetolong jest wbudowaną funkcją konwertującą wartość typu long do daty zrozumiałej dla człowieka (ServiceDesk Plus przechowuje daty jako milisekundy).

W tym momencie pojawia się pierwsza zagwozdka – jak powiązać Zgłaszającego ze zgłoszeniem zarchiwizowanym? Ponieważ Użytkownicy nie są archiwizowani cały czas przechowywani są w tej samej tabeli. Dlatego też musimy złączyć tabelę zgłoszeń archiwalnych z tabelą Użytkowników. Robimy to w następujący sposób

SELECT wo.WORKORDERID "ID zgłoszenia", wo.TITLE "Tytuł zgłoszenia", zgl.FIRST_NAME "Zgłaszający" FROM Arc_WorkOrder wo

LEFT JOIN AaaUser zgl ON wo.REQUESTERID=zgl.USER_ID

WHERE ((wo.CREATEDTIME >= datetolong('2015-01-01')) AND (wo.CREATEDTIME <= datetolong('2015-12-31')))

Dzięki temu pierwsza część za nami. Teraz musimy dodać informacje o zadaniach

SELECT wo.WORKORDERID "ID zgłoszenia", wo.TITLE "Tytuł zgłoszenia", zgl.FIRST_NAME "Zgłaszający", tdet.TITLE "Tytuł zadania", tdet.QUEUENAME "Grupa wsparcia" FROM Arc_WorkOrder wo

LEFT JOIN AaaUser zgl ON wo.REQUESTERID=zgl.USER_ID
LEFT JOIN Arc_WO_ToTaskDetails wot ON wo.WORKORDERID=wot.WORKORDERID
LEFT JOIN Arc_TaskDetails tdet ON wot.TASKID=tdet.TASKID

WHERE ((wo.CREATEDTIME >= datetolong('2015-01-01')) AND (wo.CREATEDTIME <= datetolong('2015-12-31')))

Pozostaje nam do dodania jeszcze Technik. Podobnie jak Zgłaszający, Technicy znajdują się w tabeli, która nie jest archiwizowana. Aby powiązać zadanie z Technikiem dopisujemy linijkę bardzo podobną do powiązania Zgłaszającego ze zgłoszeniem

LEFT JOIN AaaUser tech ON tdet.OWNERID=tech.USER_ID

Teraz wystarczy dopisać kolumnę do SELECTa, aby Technik był wyświetlany w raporcie. Poniżej całość raportu

SELECT wo.WORKORDERID "ID zgłoszenia", wo.TITLE "Tytuł zgłoszenia", zgl.FIRST_NAME "Zgłaszający", tdet.TITLE "Tytuł zadania", tdet.QUEUENAME "Grupa wsparcia", tech.FIRST_NAME "Technik" FROM Arc_WorkOrder wo

LEFT JOIN AaaUser zgl ON wo.REQUESTERID=zgl.USER_ID
LEFT JOIN Arc_WO_ToTaskDetails wot ON wo.WORKORDERID=wot.WORKORDERID
LEFT JOIN Arc_TaskDetails tdet ON wot.TASKID=tdet.TASKID
LEFT JOIN AaaUser tech ON tdet.OWNERID=tech.USER_ID

WHERE ((wo.CREATEDTIME >= datetolong('2015-01-01')) AND (wo.CREATEDTIME <= datetolong('2015-12-31')))

Powyższy raport oczywiście nie zawiera żadnego sortowania oraz filtru pozwalającego na wybór tylko tych zgłoszeń, w których brała udział konkretna grupa wsparcia (np. Ekipa Windows). Aby dodać takie filtrowanie wystarczy dopisać warunek

WHERE ((wo.CREATEDTIME >= datetolong('2015-01-01')) AND (wo.CREATEDTIME <= datetolong('2015-12-31'))) AND tdet.QUEUENAME COLLATE Polish_CI_AS LIKE '%Ekipa Windows%' 

Jeśli jesteśmy pewni co do nazwy grupy wsparcia, to zamiast słowa kluczowego LIKE można użyć znaku równości np. tdet.QUEUENAME COLLATE Polish_CI_AS = 'Ekipa Windows’. Natomiast znaki procentów (%) oznaczają dowolny ciąg znaków przed i za frazą Ekipa Windows.

Uwagi

W przypadku, gdy dany Technik czy użytkownik zostanie usunięty, wartość jest pusta (nieprzydzielona). Dzieje się tak, ponieważ nie są archiwizowani Użytkownicy i powiązanie odwołuje się do nieistniejącego wpisu.