OpenOperationTree(Session: Integer; Operation: Integer): IAuditOperations;
OpenOperationTree(System.UInt32, System.UInt32): Prognoz.Platform.Interop.Metabase.IAuditOperations;
Session. Номер сессии, для которой необходимо получить список операций над объектами. В качестве значения параметра необходимо передавать значение свойства IAuditLogons.Session;
Operation. Номер операции, для которой необходимо получить список операций над зависимыми объектами. Если в качестве значения передается «0», то метод возвращает список операций, совершенных в рамках сессии. Если в качестве значения передавать значение свойства IAuditOperations.Operation для какой-либо операции, то метод вернет список операций над зависимыми объектами того объекта, которому соответствует операция.
Метод OpenOperationTree возвращает список операций, произведенных в репозитории, представленный в древовидном виде.
Для выполнения примера добавьте ссылки на системные сборки: Metabase, ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
MB: IMetabase;
MS: IMetabaseSecurity;
AL: IAuditLog;
ALogon: IAuditLogons;
OperatTree, OperatTreeChild: IAuditOperations;
Lic: Object;
Begin
MB := MetabaseClass.Active;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
MS := MB.Security;
// Откроем протокол доступа
Al := MS.OpenAuditLog;
ALogon := AL.OpenLogons(False);
// Выведем в консоль список операций, совершенных за время последнего подключения к репозиторию
OperatTree := Al.OpenOperationTree(ALogon.Session, 0);
While Not OperatTree.Eof Do
Debug.WriteLine(OperatTree.ObjectId + " " + OperatTree.Name);
OperatTreeChild := Al.OpenOperationTree(ALogon.Session, OperatTree.Operation);
While Not OperatTreeChild.Eof Do
If OperatTreeChild.Succeeded Then
Debug.Indent;
Debug.WriteLine(OperatTreeChild.ObjectId + " " + OperatTreeChild.Name + " " + OperatTreeChild.Level.ToString);
Debug.Unindent;
OperatTreeChild.Next;
End If;
End While;
OperatTreeChild.Close;
OperatTree.Next;
End While;
OperatTree.Close;
// Освободим лицензию
Lic := Null;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MS: IMetabaseSecurity;
AL: IAuditLog;
ALogon: IAuditLogons;
OperatTree, OperatTreeChild: IAuditOperations;
Lic: Object;
Begin
MB := Params.Metabase;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
MS := MB.Security;
// Откроем протокол доступа
Al := MS.OpenAuditLog();
ALogon := AL.OpenLogons(False);
// Выведем в консоль список операций, совершенных за время последнего подключения к репозиторию
OperatTree := Al.OpenOperationTree(ALogon.Session, 0);
While Not OperatTree.Eof() Do
System.Diagnostics.Debug.WriteLine(OperatTree.ObjectId + " " + OperatTree.Name);
OperatTreeChild := Al.OpenOperationTree(ALogon.Session, OperatTree.Operation);
While Not OperatTreeChild.Eof() Do
If OperatTreeChild.Succeeded Then
System.Diagnostics.Debug.Indent();
System.Diagnostics.Debug.WriteLine(OperatTreeChild.ObjectId + " " + OperatTreeChild.Name + " " + OperatTreeChild.Level.ToString());
System.Diagnostics.Debug.Unindent();
OperatTreeChild.Next();
End If;
End While;
OperatTreeChild.Close();
OperatTree.Next();
End While;
OperatTree.Close();
// Освободим лицензию
Lic := Null;
End Sub;
После выполнения примера в консоль будет выведен список операций, совершенных за время последнего подключения к репозиторию. Список операций будет представлен в виде дерева. Для каждой операции выведен идентификатор соответствующего объекта и наименование операции. Если имеются операции, связанные с объектами от которых зависит какой-либо другой объект, то для данных операций также будет выведен уровень вложенности.
См. также: