Лог пользовательских операций
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Лог пользовательских операций содержит вхождения для многих API-операций и может использоваться для целей аудита. Он предоставляет данные о том, какие операции были произведены, а также подробности изменений, связанных с операцией. Операции логируются по мере выполнения в контексте залогиненного пользователя. Чтобы появилась возможность пользоваться логом операций, уровень истории на движке управления процессами должен быть установлен в FULL.
Запись вхождений лога независимо от контекста аутентификации
Если есть необходимость того, чтобы операции логировались независимо от того, выполняются ли они в контексте залогиненного пользователя или нет, тогда в конфигурации движка управления процессами флаг под названием restrictUserOperationLogToAuthenticatedUsers может быть установлен в false.
Доступ к логу пользовательских операций
Доступ к логу пользовательских операций можно получить через Java API.Сервис истории может использоваться для выполнения UserOperationLogQuery`через вызов `historyService.createUserOperationLogQuery().execute(). Запрос можно ограничить с помощью различных опций фильтрации. Запрос также является доступным извне в REST API.
Вхождения лога пользовательских операций
Лог состоит из операций (operations) и вхождений (entries). Операция соответствует одному выполненному действию и состоит из нескольких вхождений, как минимум из одного. Вхождения содержат подробные изменения, являющиеся частью операции. При выполнении запроса к логу пользовательских операций возвращаемые вхождения принадлежат к типу UserOperationLogEntry, в соответствии с вхождениями. Все вхождения из одной и той же операции связаны между собой через id операции.
Вхождение лога пользовательских операций имеет следующие свойства:
-
Operation ID: Сгенерированный id, который уникально идентифицирует выполненную операцию. Если несколько вхождений являются частью одной и той же операции, они ссылаются на один и тот же operation ID.
-
Operation Type: Имя выполненной операции. Доступные типы операций перечислены в интерфейсе io.openbpm.bpm.engine.history.UserOperationLogEntry. Отметим, что одна операция может состоять из нескольких типов, например, каскадная API операция является одной пользовательской операцией, но подразделяется на несколько типов операций.
-
Entity Type: Идентификатор типа сущности, к которому обращалась операция. Доступные типы сущностей перечислены в классе io.openbpm.bpm.engine.EntityTypes. Как и в случае с типом операции, одна операция может обращаться более чем к одному типу сущностей.
-
Category: Имя категории, с которой ассоциируется операция. Доступные категории перечислены в интерфейсе io.openbpm.bpm.engine.history.UserOperationLogEntry. Например, все рантайм операции, относящиеся к задачам, например, к операциям запроса на задачу и выполнения задачи, попадают в категорию TaskWorker.
-
Annotation: Произвольная текстовая аннотация, установленная пользователем для целей аудита. Многочисленные вхождения лога, принадлежащие одной операции, имеют одинаковые аннотации.
-
Entity IDs: Вхождение лога джобы содержит ID сущностей, которые служат для идентификации сущностей, к которым обращается операция. Например, вхождение лога операций по задаче содержит id задачи, а также id экземпляра процесса, к которому задача относится. Вторым примером можно считать вхождение лога, соответствующее приостановке всех экземпляров процесса из определения процесса; оно не содержит индивидуальные id экземпляров процесса, а содержит только id определения процесса.
-
User ID: ID пользователя, который выполнил операцию.
-
Timestamp: Момент времени, когда была выполнена операция.
-
Changed Property: Пользовательская операция может изменить несколько свойств. Например, приостановка работы экземпляра процесса меняет свойство состояния приостановки (suspension state). Для каждого измененного свойства, задействованного в операции, создается вхождение в логе.
-
Old Property Value: Предыдущее значение измененного свойства. Значение
nullозначает, что свойство ранее имело значениеnullлибо предыдущее значение неизвестно. -
New Property Value: Новое значение измененного свойства.
Аннотация логов пользовательских операций
Логи пользовательских операций могут быть полезны при аудите ручных операций. Чтобы сделать очевидной причину выполнения той или иной операции, иногда бывает недостаточно залогировать только техническую информацию (например, момент времени, тип тперации и т.д.), необходимо также добавить аннотацию, которая помещает операцию в правильный бизнес-контекст.
Вы можете напрямую передать аннотацию для следующих операций:
-
Модификация экземпляра процесса
Вы также можете поставить аннотацию на уже существующий лог операций:
Аннотация может быть установлена и снята через Java API:
String operationId = historyService.createUserOperationLogQuery()
.singleResult()
.getOperationId();
String annotation = "Instances restarted due to wrong turn";
historyService.setAnnotationForOperationLogById(operationId, annotation);
historyService.clearAnnotationForOperationLogById(operationId);
Внимание: Аннотации присутствуют на всех вхожденичх, которые принадлежат логу операций.
См. также справочник по REST API для установки и сбрасывания аннотаций.
Глоссарий операций, логируемых в лог пользовательских операций
Следующая таблица описывает операции, логируемые в лог пользовательских операций и вхождения, которые создаются как часть этих операций:
| Тип сущности | Тип операции | Категория | Свойства |
|---|---|---|---|
Task |
Assign |
TaskWorker |
|
Claim |
TaskWorker |
|
|
Complete |
TaskWorker |
|
|
Create |
TaskWorker |
Дополнительные свойства не логируются |
|
Delegate |
TaskWorker |
При делегировании задачи создаются три вхождения в лог, содержащие одно из следующих свойств:
|
|
Delete |
TaskWorker |
|
|
Resolve |
TaskWorker |
|
|
SetOwner |
TaskWorker |
|
|
SetPriority |
TaskWorker |
|
|
Update |
TaskWorker |
Измененное вручную свойство задачи, где "вручную" означает, что свойство было изменено напрямую. Запрос на задачу через TaskService не залогируется с вхождением типа update, но установка назначенного пользователя напрямую залогируется. Возможен один из следующих вариантов:
|
|
DeleteHistory |
Operator |
|
|
ProcessInstance |
Create |
Operator |
Дополнительные свойства не логируются |
Activate |
Operator |
|
|
Delete |
Operator |
Для случая обычных операций:
Для режима batch:
|
|
ModifyProcessInstance |
Operator |
|
|
Suspend |
Operator |
|
|
Migrate |
Operator |
|
|
RestartProcessInstance |
Operator |
|
|
DeleteHistory |
Operator |
|
|
CreateIncident |
Operator |
|
|
Resolve |
Operator |
|
|
SetRemovalTime |
Operator |
|
|
SetVariables |
Operator |
|
|
CorrelateMessage |
Operator |
|
|
Incident |
SetAnnotation |
Operator |
|
ClearAnnotation |
Operator |
|
|
IdentityLink |
AddUserLink |
TaskWorker |
|
DeleteUserLink |
TaskWorker |
|
|
AddGroupLink |
TaskWorker |
|
|
DeleteGroupLink |
TaskWorker |
|
|
Attachment |
AddAttachment |
TaskWorker |
|
DeleteAttachment |
TaskWorker |
|
|
JobDefinition |
ActivateJobDefinition |
Operator |
|
SetPriority |
Operator |
|
|
SuspendJobDefinition |
Operator |
|
|
ProcessDefinition |
ActivateProcessDefinition |
Operator |
|
SuspendProcessDefinition |
Operator |
|
|
Delete |
Operator |
|
|
UpdateHistoryTimeToLive |
Operator |
|
|
DecisionDefinition |
UpdateHistoryTimeToLive |
Operator |
|
Evaluate |
Operator |
|
|
CaseDefinition |
UpdateHistoryTimeToLive |
Operator |
|
Job |
ActivateJob |
Operator |
|
SetPriority |
Operator |
|
|
SetJobRetries |
Operator |
|
|
SuspendJob |
Operator |
|
|
Execute |
Operator |
Дополнительные свойства не логируются |
|
Delete |
Operator |
Дополнительные свойства не логируются |
|
SetDueDate |
Operator |
|
|
RecalculateDueDate |
Operator |
|
|
CreateHistoryCleanupJobs |
Operator |
|
|
Variable |
ModifyVariable |
Operator/TaskWorker |
Дополнительные свойства не логируются |
RemoveVariable |
Operator/TaskWorker |
Дополнительные свойства не логируются |
|
SetVariable |
Operator/TaskWorker |
Дополнительные свойства не логируются |
|
DeleteHistory |
Operator |
В случае одиночной операции: - name: имя переменной, чья история была удалена В случае перечисления операций по экземплярам процесса: - Дополнительные свойства не логируются |
|
Deployment |
Create |
Operator |
|
Delete |
Operator |
|
|
Batch |
ActivateBatch |
Operator |
|
SuspendBatch |
Operator |
|
|
Delete |
Operator |
|
|
DeleteHistory |
Operator |
Дополнительные свойства не логируются |
|
SetRemovalTime |
Operator |
|
|
ExternalTask |
SetExternalTaskRetries |
Operator |
|
SetPriority |
Operator |
|
|
Unlock |
Operator |
Дополнительные свойства не логируются |
|
DecisionInstance |
DeleteHistory |
Operator |
|
SetRemovalTime |
Operator |
|
|
CaseInstance |
DeleteHistory |
Operator |
|
Metrics |
Delete |
Operator |
|
TaskMetrics |
Delete |
Operator |
|
OperationLog |
SetAnnotation |
Operator |
|
ClearAnnotation |
Operator |
|
|
Filter |
Create |
TaskWorker |
|
Update |
TaskWorker |
|
|
Delete |
TaskWorker |
|
|
Comment |
Update |
TaskWorker |
|
Delete |
TaskWorker |
|
|
User |
Create |
Admin |
|
Update |
Admin |
|
|
Delete |
Admin |
|
|
Unlock |
Admin |
|
|
Group |
Create |
Admin |
|
Update |
Admin |
|
|
Delete |
Admin |
|
|
Tenant |
Create |
Admin |
|
Update |
Admin |
|
|
Delete |
Admin |
|
|
Group membership |
Create |
Admin |
|
Delete |
Admin |
|
|
TenantMembership |
Create |
Admin |
|
Delete |
Admin |
|
|
Authorization |
Create |
Admin |
|
Update |
Admin |
|
|
Delete |
Admin |
|
|
Property |
Create |
Admin |
|
Update |
Admin |
|
|
Delete |
Admin |
|
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org