Operation(Index: Integer): Integer;
Operation[Index: integer]: integer;
Index. Индекс позиции определяемой операции.
Количество позиций определяется свойством IAuditFilterCondition.OperationCount.
Свойство Operation определяет операции, информация по которым будет отображаться в протоколе доступа.
Значения операций могут совпадать, поэтому для определения однозначности операции обязательно следует задавать класс объекта, для которого данные операции будут отображаться в протоколе доступа.
Для указания операции необходимо использовать значения перечислимого типа MetabaseObjectPredefinedRights. В этом перечислении содержатся основные и дополнительные операции, на которые можно раздавать права и вести аудит доступа. Для определенных классов объектов доступны специфические операции. Для использования специфических операций, в зависимости от класса объекта, можно использовать значения следующих перечислений:
AuditLogSpecificRights - специфические операции, доступные для протокола доступа;
CalculatedCubeSpecificRights - специфические операции, доступные для вычисляемых кубов;
CubeLoaderSpecificRights - специфические операции, доступные для загрузчика данных в куб;
CubeSpecificRights - специфические операции, доступные для различных видов кубов;
CustomObjectSpecificRights - специфические операции, доступные для объектов пользовательских классов;
DataBaseSpecificRights - специфические операции, доступные для объекта репозитория - База данных;
DictionarySpecificRights - специфические операции, доступные для объектов репозитория - Справочник НСИ и Составной справочник НСИ;
MDCalcSpecificRights - специфические операции, доступные для объекта репозитория - Многомерный расчет на сервере БД;
ProblemSpecificRights - специфические операции, доступные для объекта контейнера моделирования - Задача моделирования;
ProcedureSpecificRights - специфические операции, доступные для объекта репозитория - Процедура;
ScenarioDimensionSpecificRights - специфические операции, доступные для объекта репозитория - Сценарий моделирования;
ScheduledTaskSpecificRights - специфические операции, доступные для задач, создаваемых в контейнере запланированных задач;
SecuritySpecificRights - специфические операции, доступные для политики безопасности;
TableSpecificRights - специфические операции, доступные для следующих объектов репозитория - Таблица, Представление, Журнал, Присоединенная таблица;
UpdateObjectSpecificRights - специфические операции, доступные для объекта репозитория - Обновление;
ValidationSpecificRights - специфические операции, доступные для объекта репозитория - Правило валидации и Группа валидаций.
Основные, дополнительные и специфические операции, доступные для определенных типов объектов, представлены в разделе «Протоколируемые операции».
Для выполнения примера добавьте ссылки на системные сборки: Metabase, ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
Mb: IMetabase;
Log: IAuditLog;
Fil: IAuditFilter;
Con: IAuditFilterCondition;
AL: IAuditLogons;
AO: IAuditOperations;
Lic: Object;
Begin
MB := MetabaseClass.Active;
Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
Log := Mb.Security.OpenAuditLog;
Fil := Log.Filter;
Fil.Clear;
Con := Fil.Add;
Con.MinDate := DateTime.Parse("11.01.2019 00:00:00");
Con.OperationCount := 2;
Con.Operation(0) := MetabaseObjectPredefinedRights.Create_;
Con.OperationClass(0) := MetabaseObjectClass.KE_CLASS_METABASEUPDATEOBJECT;
Con.Operation(1) := MetabaseObjectPredefinedRights.Delete Or MetabaseObjectPredefinedRights.Create_;
Con.OperationClass(1) := MetabaseObjectClass.KE_CLASS_FOLDER;
AL := Log.OpenLogons(False);
While Not AL.Eof Do
Debug.WriteLine(AL.UserName + " " + AL.UserOS + " " + (DateTime.FromDouble(AL.Stamp)).ToString);
Debug.Indent;
AO := Log.OpenOperations(AL.Session);
While Not AO.Eof Do
Debug.WriteLine("Операция: " + AO.Name + "; Объект:" + AO.ObjectId + "; Номер операции:" + AO.Operation.ToString);
AO.Next;
End While;
AL.Next;
Debug.Unindent;
End While;
Lic := Null;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;
…
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
Log: IAuditLog;
Fil: IAuditFilter;
Con: IAuditFilterCondition;
AL: IAuditLogons;
AO: IAuditOperations;
Lic: Object;
Begin
MB := Params.Metabase;
Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
Log := Mb.Security.OpenAuditLog();
Fil := Log.Filter;
Fil.Clear();
Con := Fil.Add();
Con.MinDate := DateTime.Parse("11.01.2019 00:00:00");
Con.OperationCount := 2;
Con.Operation[0] := MetabaseObjectPredefinedRights.moprCreate_ As Integer;
Con.OperationClass[0] := MetabaseObjectClass.KE_CLASS_METABASEUPDATEOBJECT;
Con.Operation[1] := (MetabaseObjectPredefinedRights.moprDelete As Integer) Or (MetabaseObjectPredefinedRights.moprCreate_ As Integer);
Con.OperationClass[1] := MetabaseObjectClass.KE_CLASS_FOLDER;
AL := Log.OpenLogons(False);
While Not AL.Eof() Do
System.Diagnostics.Debug.WriteLine(AL.UserName + " " + AL.UserOS + " " + (DateTime.FromOADate(AL.Stamp)).ToString());
System.Diagnostics.Debug.Indent();
AO := Log.OpenOperations(AL.Session);
While Not AO.Eof() Do
System.Diagnostics.Debug.WriteLine("Операция: " + AO.Name + "; Объект:" + AO.ObjectId + "; Номер операции:" + AO.Operation.ToString());
AO.Next();
End While;
AL.Next();
System.Diagnostics.Debug.Unindent();
End While;
Lic := Null;
End Sub;
После выполнения примера в консоль будут выведены все действия с определенными классами объектов по заданным операциям, начиная с конкретной даты «11.01.2019».
См. также: