Podstawowym zadaniem programu jest zapisywanie w odpowiednim formacie danych przekazanych mu w postaci
parametrów wywołania. Dodatkową funkcją dsi może być ewentualne powiadomienie operatora o zdarzeniu lub
sprawie, o których informacje zostaną dsi przekazane. Powiadomienie operatora następuje poprzez wysłanie
prośby do serwera okienek graficznych wraz z całą porcją informacji o sprawie. Serwer wyświetlając informacje
dla operatora przekaże z powrotem informacje o czasie wyświetlania okienka oraz identyfikatorze operatora,
jeśli ten potwierdzi swoją tożsamość. Serwer przekaże także stany dla poszczególnych zdarzeń danej sprawy,
zaakceptowane przez operatora (operator może zmienić stan zdarzenia z aktywnego na pasywny lub odwrotnie
albo pozostawić je bez zmian). Informacje o stanach zdarzeń, otrzymane od serwera, zostaną jako ostatnie
informacje wypisane zawsze na standardowe wyjście. Każda linia tych informacji opisuje osobne zdarzenie.
Składa się ona z identyfikatora zdarzenia będącego nieujemną liczbą całkowitą (argumenty wejściowe opcji
--event-id) oraz z liczby określającej czy zdarzenie to ma
pozostać aktywne czy pasywne (patrz: opcje --active-value i
--passive-value). Jeśli operator dokona zmiany stanu przynajmniej jednego zdarzenia,
powodując, że wszystkie, które mogą, staną się pasywne, to dodatkowo, także na standardowe wyjście,
zostanie wypisana informacja closed-by po której nastąpi identyfikator operatora.
Sprawa może mieć więcej niż jedno zdarzenie. W związku z tym wszystkie opcje
postaci --event-* (np.:--event-ctime,
--event-id,
--event-state) mogą wystąpić
więcej niż jeden raz. Dla każdego zdarzenia muszą wystąpić wszystkie opcje
postaci --event-*, ale ich kolejność jest dowolna. Każda z tych opcji ma
wewnętrzny licznik wystąpień dzięki czemu może wystąpić przemieszanie zdarzeń.
Program dsi stara się w ten sposób uzbierać minimalną ilość w pełni
zdefiniowanych zdarzeń np. dwa poniższe zdarzenia, choć podane w różny
sposób (w innej kolejności), są tożsame:
1)
--event-ctime 15
--event-mtime 20
--event-id 1
--event-hits-number 2
--event-state active
--event-msg "zdarzenie 1"
--event-ctime 16
--event-mtime 21
--event-id 2
--event-hits-number 3
--event-state active
--event-msg "zdarzenie 2"
2)
--event-ctime 15
--event-ctime 16
--event-mtime 20
--event-mtime 21
--event-id 1
--event-id 2
--event-hits-number 2
--event-hits-number 3
--event-state active
--event-state active
--event-msg "zdarzenie 1"
--event-msg "zdarzenie 2"
Informacje przekazane dsi w postaci argumentów wywołania zapisywane są do plików (dzięki
wielokrotnemu użyciu opcji -f można stworzyć ich całą listę). Jeśli żaden plik nie został
wyspecyfikowany, albo jeśli do żadnego pliku nie udało się zapisać danych, to informacje
zostaną wypisane na standardowe wyjście. Zapisywanie tych informacji odbywa się przed
wypisaniem informacji o stanach poszczególnych zdarzeń sprawy na standardowe wyjście,
o którym była wyżej mowa. Informacje są też zawsze zapisywane w bazie danych SQL, z której korzystają
prawie wszystkie moduły systemu David.