IMetabaseUpdateObjectNode.Acl

Синтаксис Fore

Acl(Result: IAccessControlList);

Синтаксис Fore.NET

Acl(Result: Prognoz.Platform.Interop.Metabase.IAccessControlList);

Параметры

Result. переменная, в которую будет помещен результат.

Описание

Свойство Acl возвращает список контроля доступа безопасности объекта в обновлении.

Комментарии

Актуально при использовании дискреционного метода контроля доступа. Условия для использования свойства:

Обновление будет происходить по старому механизму (будут копироваться из исходного объекта IMetabaseObjectDescriptor->SecurityDescriptor->Acl) если хоть одно из условий не выполняется.

Пример Fore

Для выполнения примера предполагается наличие в репозитории объектов с идентификаторами «OBJ1» и «OBJ2». Для выполнения примера добавьте ссылки на системные сборки «Metabase».

Sub UserProc;
Var
    Mb: IMetabase;
    Obj: IMetabaseObjectDescriptor;
    Upd: IMetabaseUpdate;
    Nd: IMetabaseUpdateObjectNode;
    RootFolder: IMetabaseUpdateFolderNode;
    ObjDesc: IMetabaseObjectDescriptor;
    SecDesc: ISecurityDescriptor;
    AcessCL: IAccessControlList;
Begin
    Mb := MetabaseClass.Active;
    ObjDesc:=MB.ItemById("OBJ1");
    SecDesc:=ObjDesc.SecurityDescriptor;
    AcessCL:=SecDesc.Acl;
    Upd := Mb.CreateUpdate;
    RootFolder := Upd.RootFolder;
    Nd := RootFolder.Add(MetabaseUpdateNodeType.Object) As IMetabaseUpdateObjectNode;
    Upd.AllowReplaceSD := True;
    Nd.UpdatePart := MetabaseObjectUpdatePart.ReplaceSecurityDescriptor;
    Obj := Mb.ItemById("OBJ2").Bind;
    Nd.Object := Obj;
    Nd.Acl.Append(AcessCL);
    Upd.SaveToFileNF("С:\Update.pefx");
    Upd := Mb.CreateUpdate;
    Upd.LoadFromFileNF("С:\Update.pefx");
    Upd.Apply;
End Sub UserProc;

В процессе выполнения примера происходит установка созданного обновления. После выполнения примера дополнительные параметры безопасности объекта репозитория с идентификаторами «OBJ2» заменятся дополнительными параметрами «OBJ1».

Пример Fore.NET

Для выполнения примера предполагается наличие в репозитории объектов с идентификаторами «OBJ1» и «OBJ2». Для выполнения примера добавьте ссылки на системные сборки «Metabase».

Shared Sub UserProc(Params: StartParams);
Var
    Mb: IMetabase;
    Obj: IMetabaseObjectDescriptor;
    Upd: IMetabaseUpdate;
    Nd: IMetabaseUpdateObjectNode;
    RootFolder: IMetabaseUpdateFolderNode;
    ObjDesc: IMetabaseObjectDescriptor;
    SecDesc: ISecurityDescriptor;
    AcessCL: IAccessControlList;
Begin
    Mb := Params.Metabase;
    ObjDesc:=MB.ItemById["OBJ1"];
    SecDesc:=ObjDesc.SecurityDescriptor;
    AcessCL:=SecDesc.Acl;   
    Upd := Mb.CreateUpdate();
    RootFolder := Upd.RootFolder;
    Nd := RootFolder.Add(MetabaseUpdateNodeType.untObject) As IMetabaseUpdateObjectNode;
    Upd.AllowReplaceSD := True;
    Nd.UpdatePart := MetabaseObjectUpdatePart.moupReplaceSecurityDescriptor;
    Obj := Mb.ItemById["OBJ2"].Bind();
    Nd.Object := Obj;
    Nd.Acl.Append(AcessCL);
    Upd.SaveToFileNF("С:\""Update.pefx");
    Upd := Mb.CreateUpdate();
    Upd.LoadFromFileNF("С:\""Update.pefx",UpdateLoadMode.ulmReplace);
    Upd.Apply(Null);
    End Sub;

В процессе выполения примера происходит установка созданного обновления. После выполнения примера дополнительные параметры безопасности объекта репозитория с идентификаторами «OBJ2» заменятся дополнительными параметрами «OBJ1».

См. также:

IMetabaseUpdateObjectNode