Процедура обращения к объектной модели Application Server через REST API Historian

Процедура обращения к объектной модели Application Server через REST API Historian

Вопрос: Как получить структуру объектов Application Server из Historian с помощью REST API.
Решение: Данную структуру можно вывести с помощью запроса TagGroups. Подробное описание см. в  документе HistorianRetrieval.pdf на дистрибутиве System Platform

Например, структура


может быть получена от уровня к уровню начиная с верхнего компонента используя taggroups.
Запрос видаhttp://localhost:32569/Historian/v2/TagGroups вернет этот json :

 


// 20201116160606

// http://localhost:32569/Historian/v2/TagGroups

 

{

  "@odata.context": "http://localhost:32569/Historian/v2/$metadata#TagGroups",

  "value": [

    {

      "GroupID": "1000-1",

      "GroupName": "Public Groups",

      "Type": "1000004",

      "ParentID": "0",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1')/Groups"

    },

    {

      "GroupID": "1000-2",

      "GroupName": "All Analog Tags",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-2')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-2')/Groups"

    },

    {

      "GroupID": "1000-3",

      "GroupName": "All Discrete Tags",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-3')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-3')/Groups"

    },

    {

      "GroupID": "1000-4",

      "GroupName": "All String Tags",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-4')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-4')/Groups"

    },

    {

      "GroupID": "1000-5",

      "GroupName": "All Analog Summary Tags",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-5')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-5')/Groups"

    },

    {

      "GroupID": "1000-6",

      "GroupName": "All Event Tags",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-6')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-6')/Groups"

    },

    {

      "GroupID": "1000-7",

      "GroupName": "InTouch Nodes",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-7')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-7')/Groups"

    },

    {

      "GroupID": "1000-8",

      "GroupName": "System Status Tags",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-8')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-8')/Groups"

    },

    {

      "GroupID": "1000-19",

      "GroupName": "All State Summary Tags",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-19')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-19')/Groups"

    },

    {

      "GroupID": "1000-20",

      "GroupName": "Replication Sources",

      "Type": "1000000",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-20')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-20')/Groups"

    },

    {

      "GroupID": "1000-1021",

      "GroupName": "MXTest",

      "Type": "1999023",

      "ParentID": "1",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1021')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1021')/Groups"

    },

    {

      "GroupID": "2000-1",

      "GroupName": "Private Groups",

      "Type": "1000003",

      "ParentID": "0",

      "Scope": "Private",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('2000-1')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('2000-1')/Groups"

    }

  ]

}

 

 

В выделенной области вы можете видеть имя Galaxy.

Затем запросом

http://localhost:32569/Historian/v2/TagGroups('1000-1021')/Tags

вы получите все теги/атрибуты архивируемые на этой конкретной ветке, т.е. вы получите элементы 2го уровня


// 20201116162235

// http://localhost:32569/Historian/v2/TagGroups('1000-1021')/Groups

 

{

  "@odata.context": "http://localhost:32569/Historian/v2/$metadata#TagGroups",

  "value": [

    {

      "GroupID": "1000-1022",

      "GroupName": "Platform",

      "Type": "1999001",

      "ParentID": "1021",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1022')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1022')/Groups"

    },

    {

      "GroupID": "1000-1023",

      "GroupName": "Platform2",

      "Type": "1999001",

      "ParentID": "1021",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1023')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1023')/Groups"

    },

    {

      "GroupID": "1000-1024",

      "GroupName": "AppEngine1_Red",

      "Type": "1999003",

      "ParentID": "1021",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1024')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1024')/Groups"

    },

    {

      "GroupID": "1000-1025",

      "GroupName": "AreaRed",

      "Type": "1999013",

      "ParentID": "1021",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1025')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1025')/Groups"

    },

    {

      "GroupID": "1000-1026",

      "GroupName": "AppEngine2_Std",

      "Type": "1999003",

      "ParentID": "1021",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1026')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1026')/Groups"

    },

    {

      "GroupID": "1000-1027",

      "GroupName": "AreaStd",

      "Type": "1999013",

      "ParentID": "1021",

      "Scope": "Public",

      "Tags@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1027')/Tags",

      "Groups@odata.navigationLink": "http://localhost:32569/Historian/v2/TagGroups('1000-1027')/Groups"

    }

  ]

}

и так далее.


Таким образом, выводя уровень за уровнем, начиная с самого верха, вы сможете получить всю модель.
Примечание. Запрос выдает только те объекты в которых есть (или был) хотя бы один архивируемый атрибут. Иерархия будет совпадать с той которую вы можете видеть в Historian Client или Query приложениях в панели Tag Picker.