Jako administrator ServiceDesk Plus powinieneś widzieć wszystko w zakresie raportów – kto, co, gdzie. Niestety producent nie ułatwia nam zadania – jako administrator nie widzisz w panelu administracyjnym zaplanowanych raportów….

Wydaje się nam dziwne to, że administrator nie ma takiej opcji. Należy się zastanowić co w przypadku, kiedy np. ktoś będzie próbował wykonywać nam co chwila operację SELECT wszystkich zgłoszeń/zadań przy pomocy zaplanowanych raportów? W przypadku posiadania małej ilości zgłoszeń – sytuacja taka będzie raczej niezauważalna. Ale co w przypadku posiadania 100 000 zgłoszeń/zadań? Możemy już powoli odczuwać skutki takiego działania. Niektórzy powiedzą – można zobaczyć kto uruchamia raporty w dzienniku systemowym. Zgadza się. Ale jak zatrzymać takie działanie (zakładając, że musimy działać szybko a nie szukać tego użytkownika po całej firmie)? Rozwiązanie jest jedno – musimy zagrzebać w bazie danych naszego SDP.

UWAGA: Poniższy przykład oparty jest na SDP v. 9200+ i PGSQL.

Listujemy wszystkie  zaplanowane raporty:

SELECT taskid, instance_id, schedulename, reportid, mailid, subject,  message, ownerid, report_type FROM reportscheduletask;

Powyższe zapytanie zwraca nam wszystkie raporty jakie są wysyłane z naszej aplikacji. Ale na pierwszy rzut oka jest to mało czytelne – ownerid, reportid itd. Uprośćmy widok – na początek nazwa raportu z bazy

SELECT rstask.taskid, rstask.instance_id, rstask.schedulename, rstask.reportid, crdetails.report_name, rstask.mailid, rstask.subject, rstask.message, rstask.ownerid, rstask.report_type FROM reportscheduletask rstask
left join customreport_details crdetails on crdetails.reportid=rstask.reportid;


W wyniku otrzymaliśmy:

1;2401;"3_Daily_901_2016_07_05_04_55_41";901;"raport_testowy";"supertajny[at]imejl123.org";"Raport dla testu";"Opis raportu";3;"XLS"

No to już mamy informację jaki raport. Ale kto to jest ownerid 3? Dorzućmy tabele z użytkownikami

SELECT rstask.taskid, rstask.instance_id, rstask.schedulename, rstask.reportid, crdetails.report_name, rstask.mailid, rstask.subject, rstask.message, rstask.ownerid,aaausr.first_name, rstask.report_type FROM reportscheduletask rstask
left join customreport_details crdetails on crdetails.reportid=rstask.reportid
left join aaauser aaausr on aaausr.user_id=rstask.ownerid;

Wynik:

1;2401;"3_Daily_901_2016_07_05_04_55_41";901;"raport_testowy";"supertajny[at]imejl123.org";"Raport dla testu";"Opis raportu";3;"administrator";"XLS" 

Możemy jeszcze trochę oczyścić nasze zapytanie i stworzyć bardziej przyjazne nazwy kolumn. Ostatecznie nasze zapytanie wygląda tak:

SELECT rstask.taskid "ID zadania", rstask.schedulename "nazwa zadania", rstask.reportid "ID raportu", crdetails.report_name "Nazwa raportu", rstask.mailid "Odbiorca", rstask.subject "Temat wiadomości", rstask.message "Treść wiadomości", rstask.ownerid "ID Właściciela",aaausr.first_name "Właściciel", rstask.report_type "Format raportu" FROM reportscheduletask rstask
left join customreport_details crdetails on crdetails.reportid=rstask.reportid
left join aaauser aaausr on aaausr.user_id=rstask.ownerid;

W kolejnej części pokażemy, jak zmienić właściciela raportu czy usunąć raport z planowania 🙂