IABACRootPolicyObject.Load

Синтаксис

Load(Reader: IXmlDomElement);

Load(Prognoz.Platform.Interop.MsXml2.IXMLDOMElement);

Описание

Метод Load осуществляет загрузку структуры атрибутного доступа из XML-файла.

Комментарии

Используется для формирования атрибутного доступа, не связанного с общей политикой безопасности. Загруженная структура атрибутного доступа из XML-файла не отображается в интерфейсе менеджера безопасности.

Для сохранения структуры атрибутного доступа в XML-файл используйте метод IABACRootPolicyObject.Save.

Пример

Для выполнения примера убедитесь, что в XML-файле содержится структура элементов атрибутного доступа: набор политик, политики, правила.

Добавьте ссылки на системные сборки: ABAC, Metabase, Ui, Xml (для примера на Fore.NET используйте MsXml2), ForeSystem (для примера на Fore.NET).

Sub UserProc;
Var
    MB: IMetabase;
    MS: IMetabaseSecurity;
    PolicyObject: IABACRootPolicyObject;
    XMLDoc: IXMLDOMDocument;
    XMLElem: IXMLDOMElement;
    XMLName, XMLElemName: String;
    Lic: Object;
Begin
    MB:= MetabaseClass.Active;
    
// Получим лицензию для возможности работы с менеджером безопасности
    Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
    MS:= MB.Security;
    
// Загрузим структуру атрибутного доступа из XML-файла 
    XMLName:= "C:\temp\ABAC.xml";
    XMLElemName:= 
"ABAC";
    XMLDoc := 
New DOMDocument60.Create;
    
If XMLDoc.load(XMLName) Then
        XMLElem := XMLDoc.selectSingleNode(XMLElemName) 
As IXmlDomElement;
        
If XMLElem <> Null Then
            MS.Policy.ABACRules.Load(XMLElem);
            MS.Apply;
        
Else
            WinApplication.ErrorBox(
"Не найден заданный элемент");
        
End If;
    
Else
        WinApplication.ErrorBox(
"Ошибка при загрузке XML");
    
End If;
    
// Освободим лицензию
    Lic := Null;
End Sub UserProc;

Imports Prognoz.Platform.Interop.ABAC;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.MsXml2;
Imports Prognoz.Platform.Interop.Ui;
Imports Prognoz.Platform.Interop.ForeSystem;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MS: IMetabaseSecurity;
    PolicyObject: IABACRootPolicyObject;
    XMLDoc: FreeThreadedDOMDocument60;
    XMLElem: IXMLDOMElement;
    XMLName, XMLElemName: String;
    Lic: Object;
    WinApp: WinApplicationClassClass = 
New WinApplicationClassClass();
Begin
    MB:= Params.Metabase;
    
// Получим лицензию для возможности работы с менеджером безопасности
    Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
    MS:= MB.Security;
    
// Загрузим структуру атрибутного доступа из XML-файла 
    XMLName:= "C:\temp\ABAC.xml";
    XMLElemName:= 
"ABAC";
    XMLDoc := 
New DOMDocument60.Create();
    
If XMLDoc.load(XMLName) Then
        XMLElem := XMLDoc.selectSingleNode(XMLElemName) 
As IXmlDomElement;
        
If XMLElem <> Null Then
            MS.Policy.ABACRules.Load(XMLElem);
            MS.Apply();
        
Else
            WinApp.ErrorBox(
"Не найден заданный элемент"Null);
        
End If;
    
Else
        WinApp.ErrorBox(
"Ошибка при загрузке XML"Null);
    
End If;
    
// Освободим лицензию
    Lic := Null;
End Sub;

В результате выполнения примера будет загружена структура атрибутного доступа из XML-файла. Если возникнут ошибки при загрузке XML-файла или не будет найден элемент «ABAC» в файле, то появится соответствующее сообщение.

См. также:

IABACRootPolicyObject