Дополнительные XML атрибуты клиентов и групп

Previous pageReturn to chapter overviewNext page

 

В программе предусмотрено хранение дополнительных данных для каждого клиента и группы в виде XML.

 

Это атрибуты, описанные в консоли, но также дополнительно могут быть размещены произвольные дополнительные данные, отвечающие формату XML. Это может быть очень полезно для хранения различных данных, связанных с клиентом, для других приложений.

 

Предусматривается, что данные могут иметь большой объем и для облегчения и ускорения доступа к ним для каждого клиента эти данные хранятся ввиде отдельного файла. Эти файлы для клиента находятся в поддиректории UserAttr директории Config, для группы - GroupAttr. Это надо учесть при сохранении и переносе настроек. Имя файла - это уникальный идентификатор (GUID) клиента.

 

Формат хранения XML данных атрибутов, описанных в программе, следующий. Имена элементов значения не имеют. Атрибуты хранятся в ввиде списка элементов  первого уровня, где XML атрибут c именем GUID - идентификатор атрибута, а текстовое заполнение элемента - значение. Все остальное игнорируется, что позволяет разместить любые дополнительные данные.

 

Пример XML данных клиента -

 

<?xml version="1.0"?>

<UserAttrList GUID="{FDA6C08F-074D-4497-9192-1EA609C9ACBD}">

 <UserAttr GUID="{36C35A98-F94E-4589-A89F-6F6A061F9570}">Вася Пупкин</UserAttr>

 <UserAttr GUID="{E34A43D3-8450-4912-8B60-92A087261ACA}">Москва</UserAttr>

 <UserAttr GUID="{AB82DFBC-33B8-449F-96D9-D2FDA14A7E75}">001122-334455</UserAttr>

 <AnyName AnyAttribute="Data">Любые дополнительные данные</AnyName>

</UserAttrList>

 

В примере имеется 3 атрибута, описанных в программе. Т.е. атрибуты GUID соответствуют соответствующим атрибутам описаний (пример смотрите ниже). Все другие элементы XML данных считаются дополнительными, они хранятся, но программа с ними не работает.

 

Для доступа к описаниям атрибутов клиента - имен и GUID, используйте функцию APIGetListXML, List = 17, AttrLevel = 2. Для группы List = 18.

 

Пример этих данных описаний атрибутов клиента -

 

<?xml version="1.0"?>

<UserAttrList>

 <UserAttrItem GUID="{36C35A98-F94E-4589-A89F-6F6A061F9570}" DisplayName="Имя"/>

 <UserAttrItem GUID="{AB82DFBC-33B8-449F-96D9-D2FDA14A7E75}" DisplayName="Счет"/>

 <UserAttrItem GUID="{E34A43D3-8450-4912-8B60-92A087261ACA}" DisplayName="Адрес"/>

</UserAttrList>

 

Для доступа к этим XML данным используются функции APIGetAttr и APISetAttr, атрибуты User_AttrAll и User_AttrPart. Их применение имеет особенности -

 

APIGetAttr с атрибутом User_AttrAll - считывается точная копия XML данных, в том виде, как они записаны в файле.

 

APIGetAttr с атрибутом User_AttrPart - считываются XML данные, но элементы с атрибутами, которые определены в программе, дополняются XML атрибутами с именем этого атрибута. Имя этого атрибута - DisplayName. Это сделано для упрощения дальнейшего представления этих данных, иначе для получения имен атрибутов пришлось-бы дополнительно загружать список определений функцией APIGetListXML.

 

Пример данных, полученных путем этого вызова -

 

<?xml version="1.0"?>

<UserAttrList GUID="{FDA6C08F-074D-4497-9192-1EA609C9ACBD}">

 <UserAttr GUID="{36C35A98-F94E-4589-A89F-6F6A061F9570}" DisplayName="Имя">Вася Пупкин</UserAttr>

 <UserAttr GUID="{E34A43D3-8450-4912-8B60-92A087261ACA}" DisplayName="Адрес">Москва</UserAttr>

 <UserAttr GUID="{AB82DFBC-33B8-449F-96D9-D2FDA14A7E75}" DisplayName="Счет">001122-334455</UserAttr>

 <AnyName AnyAttribute="Data">Любые дополнительные данные</AnyName>

</UserAttrList>

 

 

APISetAttr с атрибутом User_AttrAll - запись данных с полной заменой имеющихся. Т.е. копирование XML данных один в один. Должна использоваться, если надо записать произвольные дополнительные данные.

 

APISetAttr с атрибутом User_AttrPart - запись данных с частичной заменой. Может использоваться только для записи атрибутов клиента, описанных в программе. Обновляются только те атрибуты, которые заданы в XML данных запроса. Этот вызов также может использоваться и для удаления данных, для этого надо задать пустое значение атрибута.

 

Пример записи данных -

 

<?xml version="1.0"?>

<UserAttrList GUID="{FDA6C08F-074D-4497-9192-1EA609C9ACBD}">

 <UserAttr GUID="{36C35A98-F94E-4589-A89F-6F6A061F9570}">Иванов И.И.</UserAttr>

 <UserAttr GUID="{AB82DFBC-33B8-449F-96D9-D2FDA14A7E75}"></UserAttr>

 <AnyName AnyAttribute="Data">Любые дополнительные данные</AnyName>

</UserAttrList>

 

В этом примере меняется имя и удаляются данные атрибута "Счет". Все другое не меняется. Все другие XML данные, кроме описанных атрибутов, игнорируются (в данном примере последний XML элемент).

 

Если APISetAttr вызывается с пустым параметром, т.е. вместо XML передается пустая строка, то все XML данные клиента удаляются, также удаляется соответствующий XML файл.

 

Учитывая, что дополнительные данные клиента, введенные другими приложениями в консоли нигде не отображаются, и они могут сильно загромождать XML данные, в программе предусмотрена процедура их удаления.

 

Для групп все аналогично, для APIGetAttr и APISetAttr следует использовать соответствующие номера атрибутов.

 

Для того, что-бы изменения данных клиента были зафиксированы в журнале, параметр DoUpdate в вызове APISetAttr надо выставить в true. Для группы история изменений не ведется, поэтому DoUpdate надо выставить в false.

 

Для вывода XML данных для списков клиентов и групп более удобно использовать функцию APIGetListXML, списки itUserAttrData, itGroupAttrData.

 

 

 


Текущая страница справки: help.smart-soft.ru/index.html?apiadvattr.htm

Сайт разработчиков Traffic Inspector