(((Данная статья относится к новому аудиту)))
API и IAuditService
Интерфейс API подсистемы аудита содержится в классе IAuditService
и предназначен для фиксирования собственных операций аудита.
Реализация находится в классе AuditServce
.
WriteCommonAuditOperation
Метод WriteCommonAuditOperation
используется SQLDataService
‘ом для записи стандартных операций аудита (создание, изменение, удаление).
Не рекомендуется вызывать этот метод самостоятельно.
Описание метода:
Guid? WriteCommonAuditOperation(
DataObject operationedObject,
IDataService dataService,
bool throwExceptions); ```
{Br}
* `operationedObject` - Объект, над которым выполняется операция.
* `dataService` - Сервис данных, выполняющий операцию.
* `throwException` - Следует ли пробрасывать возникшее при выполнении операции исключение. Если установить `false` и произойдет ошибка, метод вернет `null`
* returns `Guid?` - возвращает `Guid` созданной записи аудита, `null` при возникновении ошибки и установленном throwExceptions = false
Метод автоматически высчитывает статус операции (создание, удаление или изменение) на основании статуса объекта (dataObject.GetStatus()).
## WriteCustomAuditOperation
Метод `WriteCustomAuditOperation` предназначен для фиксации собственных операций аудита.
Описание метода:
Guid? WriteCustomAuditOperation( CustomAuditParameters customAuditParameters, string dataServiceConnectionString, Type dataServiceType, bool throwExceptions);
* `customAuditParameters` - параметры аудита (подробнее см. ниже)
* `dataServiceConnectionString` - строка соединения сервиса данных
* `dataServiceType` - тип сервиса данных
* `throwException` - Следует ли пробрасывать возникшее при выполнении операции исключение. Если установить `false` и произойдет ошибка, метод вернет `null`
* returns `Guid?` - возвращает `Guid` созданной записи аудита, `null` при возникновении ошибки и установленном throwExceptions = false
### CustomAuditParameters
Класс, содержащий описание параметров аудита для собственных операций.
Содержит в себе следующие поля:
* tTypeOfAuditOperation `CommonAuditOperation` - устанавливает тип операции поля `CustomAuditOperation` на основе существующих типов операций (Создание, изменение, удаление, чтение, выполнение). Добавлено для удобство использования.
* string `CustomAuditOperation` - тип операции, отображаемый на списковой форме аудита.
* DataObject `AuditDataObject` - аудируемый объект. Сам объект не сохраняется, сохраняется только его `primaryKey`. Автоматически означивает свойство `AuditObjectType`.
* Type `AuditObjectType` - тип аудируемого объекта. Автоматически означивается при установке `AuditDataObject`.
* object `AuditObjectPrimaryKey` - primaryKey аудируемого объекта. Автоматически означивается при установке `AuditDataObject`.
* string `AuditObjectTypeOrDescription` - Тип (`AssemblyQualifiedName`) или описание объекта, аудит которого проводится. Задание `AuditDataObject` или `AuditObjectType` автоматически означит это поле.
* DateTime `OperationTime` - время выполнения операции. Если время не задано, установится `DateTime.Now` (''__Примечание__: в таком случае, при асинхронной записи реальные и записанные даты будут различаться. Рекомендуется означивать это поле самостоятельно'').
* tExecutionVariant `ExecutionResult` - результат выполнения операции (Не известно, Не выполнено, Выполнено, Ошибка).
* CustomAuditFieldList `CustomAuditFieldList` - список с изменениями объектов, которые необходимо записать в подсистему аудита.
* bool `UseDefaultWriteMode` - использовать ли режим записи по умолчанию.
* tWriteMode `WriteMode` - режим записи аудита (синхронный или асинхронный). При установленом `UseDefaultWriteMode` = true; это поле не учитывается.
## RatifyAuditOperation
Метод `RatifyAuditOperation` используется для подтверждения записанной ранее операции аудита. Фактически, он изменяет её `ExcecutionResult`.
К примеру, если разработчик хочет аудировать все нажатия конкретной кнопки, то первым делом в обработчик нажатия записывается директива создания записи в аудите (с помощью метода `WriteCustomAuditOperation`) с результатом выполнения ExecutionResult = tExecutionVariant.Unknown; После выполнения всех операций необходимо изменить статус записи аудита (при помощи вызова метода `RatifyAuditOperation`) на соответствующий действительности: если процесс завершился успешно, установить ExecutionResult = tExecutionVariant.Executed и т.д.
bool RatifyAuditOperation(
tExecutionVariant executionVariant,
List
executionVariant
- статус операции, который необходимо установить.auditOperationIdList
- список ID записей аудита, для которых необходимо изменить статусdataServiceConnectionString
- строка соединения сервиса данныхdataServiceType
- тип сервиса данныхthrowException
- Следует ли пробрасывать возникшее при выполнении операции исключение. Если установитьfalse
и произойдет ошибка, метод вернетnull
- returns
bool
- результат выполнения операции (True
, если успешно).