Похоже, ваш клиент хочет получить контрольный журнал действий пользователя в системе.
Учтите, что в каждой точке входа действия (из веб-запроса) нужно начинать запись аудита с перечислением / константой для действия. Заполните его информацией, которую предоставил пользователь, если это возможно.
На выходе / наконец, укажите в аудите, если он прошел успешно или не удалось.
Пример в псевдокоде:
enum Actions {
OPEN_MEDICAL_FILE
...
}
void handleRequest(...) {
String patient = ...;
Audit audit = new Audit(OPEN_MEDICAL_FILE);
audit.addParameter("patient", patient);
try {
... more things ..
audit.addParameter("file", "#001");
... more things ...
audit.setSuccess();
} finally {
audit.save();
}
}
Здесь важно то, что все действия пользователя сохраняются независимо от успеха или неудачи. Также клиенту действительно нужно знать всю необходимую информацию вместе с действием.
Поскольку мы регистрируем константы действий и данные, представление аудита клиенту может быть отдельно закодировано. Вы также получаете гибкость, поскольку изменение строки представления (например, «открытый медицинский файл № 001 для пациента с нулем» на «медицинский файл пациента с нулевым номером 001 открыт») не определяется во время действия, но позже. необходимо повторно проверить данные аудита.