Tworzenie systemowego audytu
Aby dodać kolejny audyt do systemu należy:
- Do klasy AuditTypes dodać odpowiednią wartość np. AUDIT_CUSTOM_TEST.
- W klasie AuditCategories należy dodać nowy utworzony typ audytu w metodzie zwracającej kategorię tego audytu.
Jeżeli audyt jest dodawany do kontrolera/servletu i jest dostęp do obiektu HttpServletRequest, to należy dodać fragment:
@RequestMapping( "audit" ) @ResponseStatus( HttpStatus.OK ) public void test( HttpServletRequest request ) { // czasochłonne operacje request.setAttribute( "audit", AuditBuilder.getInstance() .type( AuditTypes.AUDIT_CUSTOM_TEST ) .success( true ) .params( ImmutableMap.of( "param1", "paramValue" ) ) // parametry audytu .build() ); }
System sam obliczy sobie czasy wykonania zapytania, wyciągnie zalogowanego użytkownika oraz adres IP.
Możemy też skorzystać z odpowiednich metod zamiast ustawiać pole z sukcesem:AuditBuilder.getInstance().type(AuditTypes.AUDIT_CUSTOM_TEST).buildSuccess(); AuditBuilder.getInstance().type(AuditTypes.AUDIT_CUSTOM_TEST).buildFailure();
Jeżeli audyt jest dodawany w innym miejscu, niż kontrolery/servlety, to należy dodać fragment.
Date started = new Date(); // czasochłonne operacje ... ManualAuditBuilder.getInstance() // ManualAuditBuilder pozwala na ustawienie dodatkowo użytkownika, czas trwania audytu i adres IP .type( AuditTypes.AUDIT_CUSTOM_TEST ) .started( started ) .username( username ) // jeżeli nie ma dostępu do requesta, lecz znany jest użytkownik .success( true ) .params( ImmutableMap.of( "param1", "paramValue" ) ) .build() .log();
Należy samemu obliczyć czas wykonania audytu, ustawić ręcznie użytkownika i adres IP (jeżeli jest taka informacja).
Do tłumaczeń systemowych typu SERVER należy dodać wpisy z tłumaczeniami dla typu audytu (klucz identyczny jak typ audytu), oraz dla nazwy parametru (AUDIT_PARAM_ + nazwa parametru wielkimi literami). Przykładowo:
messages.propertiesAUDIT_CUSTOM_TEST=Dowolna nazwa audytu AUDIT_PARAM_PARAM1=Dowolna nazwa parametru audytu
6. W przypadku w którym wartości parametrów audytu wymagają przetworzenia przed wyświetleniem należy dodać odpowiedni Formatter rozszerzający klasę com.suncode.pwfl.audit.formatter.Formatter z modułu plusworkflow-audit.
Sytuacje w których powinno się dodać własny formatter to:
- tłumaczenie nazwy procesu/zadania
- pobranie imienia i nazwiska użytkownika (zamiast loginu)
- pobranie jakiejś nazwy którą użytkownik może zdefiniować w customowych plikach tłumaczeń
- przetłumaczenie wartości logicznej
- przetłumaczenie jakiejś nazwy np. typ indeksu klasy dokumentów, typ uprawnienia, konfiguracji itp
Klasa Formatter posiada już niektóre metody pozwalające na tłumaczenie wybranych parametrów audytu.
Jeśli tworzymy audyt operacji w której zostają zmienione jakieś parametry np. należy w parametrach audytu pokazać zmianę parametru w formacie stara_wartość > nowa_wartość. Jeśli wartości mają zostać w jakiś sposób przetworzone to zalecam przekazać je do formattera w postaci "stara_wartość;nowa_wartość", ponieważ metody w klasie Formatter mają obsługę dostosowaną to wartości oddzielonych średnikiem.
Tworzenie audytu wdrożeniowego
Aby dodać wdrożeniowy audyt należy:
Jeżeli audyt jest dodawany do kontrolera/servletu i jest dostęp do obiektu HttpServletRequest, to należy dodać fragment:
@RequestMapping( "audit" ) @ResponseStatus( HttpStatus.OK ) public void test( HttpServletRequest request ) { // czasochłonne operacje request.setAttribute( "audit", AuditBuilder.getInstance() .type( "AUDIT_CUSTOM_TEST" ) // typ audytu jako zwykły tekst .success( true ) .params( ImmutableMap.of( "param1", "paramValue" ) ) // parametry audytu .build() ); }
System sam obliczy sobie czasy wykonania zapytania, wyciągnie zalogowanego użytkownika oraz adres IP.
Jeżeli audyt jest dodawany w innym miejscu, niż kontrolery/servlety, to należy dodać fragment.
Date started = new Date(); // czasochłonne operacje ... ManualAuditBuilder.getInstance() .type( "AUDIT_CUSTOM_TEST" ) // typ audytu jako zwykły tekst .started( started ) .username( username ) // jeżeli nie ma dostępu do requesta, lecz znany jest użytkownik .success( true ) .params( ImmutableMap.of( "param1", "paramValue" ) ) .build() .log();
Należy samemu obliczyć czas wykonania audytu, ustawić ręcznie użytkownika i adres IP (jeżeli jest taka informacja).
Do dowolnego zarejestrowanego tłumacza o scope SERVER należy dodać wpisy z tłumaczeniami dla typu audytu (klucz identyczny jak typ audytu), oraz dla nazwy parametru (AUDIT_PARAM_ + nazwa parametru wielkimi literami). Przykładowo:
tlumaczenia_wdrozeniowe.propertiesAUDIT_CUSTOM_TEST=Dowolna nazwa audytu AUDIT_PARAM_PARAM1=Dowolna nazwa parametru audytu
Przydatne linki