Load(Reader: 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» в файле, то появится соответствующее сообщение.
См. также: