Навигация:  Traffic Inspector SDK > API администрирования > Интерфейсы > ITrafInspAdmin >

UpdateList и UpdateList2

Previous pageReturn to chapter overviewNext page

 

Обновление данных конфигурации и состояния.

 

C/C++ -

 

HRESULT _stdcall UpdateList([in] enum APIListType List, [in] VARIANT xml);

HRESULT _stdcall UpdateList2([in] enum APIListType List, [in] VARIANT xml, [in] enum ConfigUpdateOptions UpdateOptions);

 

Delphi -

 

procedure UpdateList(List: APIListType; xml: OleVariant); safecall;

procedure UpdateList2(List: APIListType; xml: OleVariant; UpdateOptions: ConfigUpdateOptions); safecall;

 

 

Функция UpdateList позволяет обновлять только уже имеющиеся элементы. Если GUID элемента отсутствует, то будет выдана ошибка (исключение).

 

Функция UpdateList2 позволяет гибко обновлять и добавлять элементы. С ее помощью также доступны операции установки настроек по умолчанию. Для нее задается дополнительный параметр UpdateOptions.

 

 

Параметры

 

List

Тип списка, перечисление APIListType.

 

XML

XML данные в текстовом виде. Эти данные проверяются на соответствие XML схеме, если что-то не так, то возвращается ошибка (исключение). Для элементов списка требуется обязательный атрибут GUID -  уникальный идентификатор.

 

UpdateOptions

Только для функции UpdateList2. Элементы перечисления ConfigUpdateOptions, могут быть скомбинированы логической операцией OR.

При указании ConfigUpdate_IgnoreNotExistsItems если отсутствуют элементы списка, то это не будет сопровождаться ошибкой, как у функции UpdateList.

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

 

 

Замечание

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

 

 

Пример использования

 

Скрипт добавляет дополнительный атрибут клиента - в случае отсутствия атрибута с заданным GUID. При наличии данного атрибута с другим именем - существующий атрибут переименовывается. Если существует атрибут с заданным именем, но другим GUID - такой атрибут удаляется.


Set Srv = CreateObject("TrafInsp.TrafInspAdmin")

AdmID="TIAdmin" 'Логин администратора Traffic Inspector

AdmPass="123456" 'Пароль администратора TIAdmin

 

Set Perm = Srv.QueryPermissions()

LogOn = Perm.DoSharedLogon(AdmID, AdmPass, "Script")

 

'Дополнительный атрибут клиента Сотовый телефон

AttrGUID = "{9B863411-1165-4562-8F98-77F0FC9FC894}"

AttrName = "Сотовый"

AttrNote = "Сотовый телефон"

 

Set Dom = WScript.CreateObject("Msxml2.DOMDocument.4.0")

Set DomX1 = WScript.CreateObject("Msxml2.DOMDocument.4.0")

Set DomX2 = WScript.CreateObject("Msxml2.DOMDocument.4.0")

 

'Вытаскиваем в XML список всех дополнительных атрибутов абонентов

itUserAdvAttr = 17

conf_AttrLevelCaption = 2

Dom.LoadXML Srv.GetList(itUserAdvAttr, null, null, conf_AttrLevelCaption)

Set DocEl = Dom.DocumentElement

 

objPuth = "UserAttrItem[@GUID = '" & AttrGUID & "']"

Set currNode1 = DocEl.SelectSingleNode(objPuth)

'Проверка наличия заданного GUID атрибута

If currNode1 IS Nothing Then

  'Проверка наличия заданного имени атрибута

  objPuth = "UserAttrItem[@DisplayName = '" & AttrName & "']"

  Set currNode2 = DocEl.SelectSingleNode(objPuth)

  If currNode2 Is Nothing Then

    'Добавление элемента - если не найдено

     DomX1.LoadXML "<UserAttrList/>"

    Set Root = DomX1.DocumentElement

    With Root.AppendChild(DomX1.CreateElement("UserAttrItem"))

        .setAttribute "GUID", AttrGUID

        .setAttribute "DisplayName", AttrName

        .setAttribute "VisInList", -1

        .setAttribute "Note", AttrNote

        .setAttribute "ChangeLogging", -1

        .setAttribute "VisInMonitor", 0

    End With

    'Добавляем атрибут для клиента

     Srv.InsertList itUserAdvAttr, "", DomX1.xml

     WScript.Echo "Добавлен атрибут " & AttrName

  Else

    'Удаление существующего элемента с таким же именем

     DomX1.LoadXML "<UserAttrList/>"

    Set Root = DomX1.DocumentElement

     Root.AppendChild(DomX1.CreateElement("UserAttrItem")).setAttribute "GUID", currNode2.getAttribute("GUID")

     Srv.DeleteList itUserAdvAttr, DomX1.xml

     WScript.Echo "Неправильный GUID у атрибута " & AttrName & "! Атрибут удален!"

   

    'Добавление элемента  

     DomX1.LoadXML "<UserAttrList/>"

    Set Root = DomX1.DocumentElement

    With Root.AppendChild(DomX1.CreateElement("UserAttrItem"))

        .setAttribute "GUID", AttrGUID

        .setAttribute "DisplayName", AttrName

        .setAttribute "VisInList", -1

        .setAttribute "Note", AttrNote

        .setAttribute "ChangeLogging", -1

        .setAttribute "VisInMonitor", 0

    End With

    'Добавляем атрибут для клиента

     Srv.InsertList itUserAdvAttr, "", DomX1.xml

     WScript.Echo "  Добавлен атрибут " & AttrGUID & " " & AttrName

  End If

Else

  'Проверка соответствия имени найденного элемента

  If currNode1.getAttribute("DisplayName") <> AttrName Then

    'Изменение имени существующего элемента

     NameTCh = currNode1.getAttribute("DisplayName")

     WScript.Echo "Неправильное имя у атрибута " & AttrGUID & "!"

     conf_AttrLevelNormal = 0

     DomX1.LoadXML Srv.GetList(itUserAdvAttr, null, null, conf_AttrLevelNormal)

    Set DocEl = DomX1.DocumentElement

     objPuth = "UserAttrItem[@GUID = '" & AttrGUID & "']"

    Set currNode2 = DocEl.SelectSingleNode(objPuth)

     currNode2.setAttribute "DisplayName", AttrName

 

     DomX2.LoadXML "<UserAttrList/>"  

    Set DocEl = DomX2.DocumentElement

     DocEl.appendChild currNode2

     DomX2.Save "tattr2.xml"

    'Меняем имя

     Srv.UpdateList itUserAdvAttr, DomX2.xml

     WScript.Echo "  Изменено имя атрибута с " & NameTCh & " на " & AttrName

  Else

     WScript.Echo "Атрибут " & AttrGUID & " " & AttrName & " уже есть"

  End If

End If

 

 


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

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