Podejrzany klient

Do procedur często używanych w programie zalicza się pomiar aktywności pracy użytkownika. W gruncie rzeczy sprowadza się to do modyfikacji rekordu przynależnego konkretnej stacji roboczej i dodania atrybutów charakteryzujących ostatnie "kliknięcia" użytkownika. Sposoby pomiaru mogą być różne, aczkolwiek jego skuteczność zależy przede wszystkim od tego, w których miejscach programu funkcja ta będzie wywoływana. Można ją bowiem przypisać pewnym metodom określonej klasy obiektów, tak że np. każde otwarcie lub uaktywnienie formularza będzie powodowało uruchomienie procedury pomiaru aktywności.

Generalnie funkcja ACTIVITY, której parametrem jest nazwa obiektu dostarczana przez zmienną programu, aktualizuje wiersz tabeli TM, wstawiając aktualną wartość czasu w kolumnie Last_Action_Time, co ma odzwierciedlać ostatnio zanotowany "ruch" użytkownika. Zwiększa się też licznik, nazwany tu "Flag", sumujący poszczególne monitorowane kroki użytkownika podczas bieżącej sesji, a w kolumnie Objectid jest zapisywana nazwa otwieranej na ekranie planszy.

Niepowtarzalność wskazana

Chciałbym zwrócić uwagę na sposób selekcji wiersza przynależnego danej stacji roboczej. O ile wcześniej wykorzystywałem parametr "Host_Name", tutaj - ale tylko do prezentacji pewnych możliwości - posłużyłem się identyfikacją innego rodzaju, złożoną z identyfikatora użytkownika oraz czasu rozpoczęcia przez niego pracy. Należy chyba zgodzić się z faktem, że w każdym poważnym środowisku przetwarzania nazwa użytkownika rejestrowanego przez aplikację musi być unikalna, tym bardziej że zazwyczaj wiąże się ona z hasłem dostępu. Jeśli jednak założymy mniej poważne środowisko, gdzie użytkowników typu "Jasio" bez hasła może być więcej, to na pewno nie zdarzy się dwóch, którzy rozpoczęli pracę, w tej samej sekundzie uruchamiając program.

Jako rozsądną alternatywę polecam jednoznaczną identyfikację za pomocą nazwy komputera. Należy jednak zwrócić uwagę, że identyfikacja stacji roboczej na poziomie NetBIOS jest tak naprawdę możliwa jedynie w sieci lokalnej - w sieciach rozległych może bowiem zaistnieć problem zapewnienia unikalności nazw. Trzeba też uwzględnić fakt, że możliwość wysyłania przez aplikacje komunikatów bazujących na mechanizmach poleceń systemu (net send) istnieje tylko w obrębie systemu domenowego, co ogranicza zasięg działania rozwiązania tylko do użytkowników aktualnie zalogowanych w domenie.

Oczywiście, można wyobrazić sobie wiele konstelacji różnych rozwiązań, dopasowując je do aktualnej konfiguracji i zapotrzebowania - obszar do dyskusji jest tu ogromny i znacznie przekracza ramy niniejszego artykułu. Dla uproszczenia skupmy się zatem wyłącznie na sieciach lokalnych.

W środowiskach, gdzie żaden z wymienionych sposobów identyfikowania komputerów nie jest wystarczający, można posłużyć się np. adresami IP stacji, pamiętając wszakże, że w przypadku dynamicznego przyznawania adresów IP w trybie DHCP przedłużenie "dzierżawy" adresu może w pewnych warunkach nie doprowadzić do przydzielenia stacji roboczej jej domyślnego adresu IP.

Function ACTIVITY(Objectid)

strSQL = "update TM set Last_Action_Time='" & Format(Now(), "dd-mm-yyyy hh:nn:ss") & "', Objectid='" & Objectid & "', Flag=Flag+1 where Userid='" & Userid & "' and Login_Time='" & Login_Time & "'"

WYKONAJ_SQL (strSQL)

REMOVE_OLD

End Function

Pukanie do klienta

Procedura pomiaru aktywności służy jedynie jako element orientacyjny i pomocniczy w określaniu sposobu pracy użytkownika i raczej nie powinna stanowić o ocenie jego wydajności. Jej podstawowym zadaniem jest aktualizacja zawartości kolumny Last_Action_Time, co dowodzi tylko tego, kiedy odbyła się np. ostatnia zmiana planszy na danym komputerze. Jeśli w kolumnie Last_Action_Time widnieje czas z dnia wczorajszego, to należy przyjąć, że nastąpiło nie kontrolowane wyłączenie stacji roboczej, która potem nie wznowiła już pracy. Należy też założyć, że nikt nie siedzi przed komputerem stale z tą samą planszą przed oczami, a jeśli nawet warunki pracy tego wymagają, okresy bezczynności trzeba inaczej określić.


TOP 200