WEPAPI EventFrame
WEPAPI EventFrame
Global
Especificação Técnica
Contents
• Objetivo do Documento
• Documentos de Referência
• Dicionário de Termos
• Detalhamento da Solução
• Pré-Requisitos
• Funções PI Web API
• Batch
• Exemplo Batch
• AssetDatabase GetByPath
• Exemplo Request
• Exemplo Response
• EventFrame GetEventFramesQuery
• Exemplo Request
• Exemplo Response
• EventFrame GetAttributes
• Exemplo Request
• Exemplo Response
• Stream GetValue
• Exemplo Request
• Exemplo Response
• Fluxos de Execução
• Fluxo: Requisição para consultar os valores dos atributos d…
• Fluxo: Resposta para requisição de descoberta do WebID d…
• Endpoints e Filas
• Endpoints
• Filas
• Anexos
• PI Web API Reference
• PI Web API Overview
Objetivo do Documento
Este documento tem como objetivo apresentar as informações e definições que permitam o
desenvolvimento de um processo de integração de envio de informações entre CMA Web Local e PIMS.
Documentos de Referência
A tabela abaixo apresenta os documentos utilizados como referência na elaboração do presente
documento.
Documentos de
# Descrição
referência
Dicionário de Termos
A tabela a seguir, contém a definição de termos técnicos citados nesse documento e foi criada com o
objetivo de tornar explícitos conceitos, siglas, abreviações e procedimentos utilizados nos servidores PIMS,
assim como permitir que os profissionais envolvidos, independentemente de sua formação, tenham a
mesma visão do assunto abordado.
Termo Descrição
PI
Sistema PIMS do Fabricante AVEVA.
System
Detalhamento da Solução
[Link] PIMS/_wiki/wikis/[Link]/14033/Especificação-Técnica-VALIDATED- 2/20
12/15/22, 3:34 PM Especificação Técnica [VALIDATED] - Overview
O CMA Web Local é responsável por disponibilizar as informações de alarmes gerados por eventos de
produção online pelo PI System, harmonizadas no formato de pontos alarmados devidamente reconhecidos
pelo sistema CMA Web, utilizando o módulo integrador SenseUp Enterprise Hub irá entregar esses dados
em uma WebAPI disponbilizada pelo sistema CMA Web.
Pré-Requisitos
• Credenciais/token de acesso ao webservice;
• Disponibilidade dos dados via webservice;
• As amostras de interesse do PIMS deverão existir no CMA Web Local;
• Os DE x PARA deverão estar configurados no PIMS para poder armazenar na base de dados.
Batch
A PI Web API oferece suporte ao lote de várias solicitações REST lógicas em uma única solicitação HTTP.
Realiza a execução de um lote de solicitações no serviço. A entrada é um dicionário com IDs como chaves e
objetos de solicitação como valores. Cada objeto de solicitação especifica o método HTTP e o recurso e,
opcionalmente, o conteúdo e uma lista de IDs pai. A lista de IDs pai especifica quais outras solicitações
devem ser concluídas antes que uma determinada solicitação seja executada.
Essa função é utilizada para que em uma requisição seja possível consultar vários TAGs ou escrever em
vários TAGs.
Exemplo Batch
{
"Tag1": {
"Method": "GET",
"Resource": "[Link]
"Headers": { "Cache-Control": "no-cache" }
},
"Tag2": {
"Method": "GET",
"Resource": "[Link]
"Headers": { "Cache-Control": "no-cache" }
}
}
AssetDatabase GetByPath
Esse método retorna o WebID do Database de interesse com base no caminho hierárquico associado a ele.
Por meio do campo "selectedfiels" é possível selecionar quais os campos a serem retornados, como o WebI.
Exemplo Request
{
"Database": {
"Method": "GET",
"Resource": "[Link]
"Headers": {
"Cache-Control": "no-cache"
}
}
}
Exemplo Response
{
"Database": {
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"WebId": "F1RDK-Sm-oaCPUKxAtVatNqDtQU3bFnDHvmUqUCQCQjWgkVgUElBRi1RQS1WSVRPUklBXEFQTElDQcOHw5VFU
}
}
}
EventFrame GetEventFramesQuery
Por meio deste método é possível pesquisar EventFrames de acordo com os parâmetros de interesse. Para o
caso do CMA Web Local, será utilizado como filtro os atributos Localidade, CMA e Valor.
Exemplo Request
{
"EventFrames": {
"Method": "GET",
"Resource": "[Link]
"Parameters": [
"$.[Link]"
],
"ParentIds": [
"Database"
]
}
}
Exemplo Response
{
"EventFrames": {
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Items": [
{
"WebId": "F1FmK-Sm-oaCPUKxAtVatNqDtQPISi0pLP7BGlkABQVoLTfAUElBRi1RQS1WSVRPUklBXEFQTElDQ
"StartTime": "2022-05-09T12:23:11.0490112Z",
"EndTime": "2022-05-09T13:26:31.0590057Z",
"Links": {
"Attributes": "[Link]
}
},
{
"WebId": "F1FmK-Sm-oaCPUKxAtVatNqDtQHpYZ-5bP7BGlkABQVoLTfAUElBRi1RQS1WSVRPUklBXEFQTElDQ
"StartTime": "2022-05-09T12:53:06.0350036Z",
"EndTime": "2022-05-09T15:09:01.0640106Z",
"Links": {
"Attributes": "[Link]
}
},
{
"WebId": "F1FmK-Sm-oaCPUKxAtVatNqDtQ6YhurZvP7BGlkABQVoLTfAUElBRi1RQS1WSVRPUklBXEFQTElDQ
"StartTime": "2022-05-09T13:26:36.0590057Z",
"EndTime": "2022-05-09T15:08:56.0640106Z",
"Links": {
"Attributes": "[Link]
}
},
{
"WebId": "F1FmK-Sm-oaCPUKxAtVatNqDtQOAy_-qnP7BGlkABQVoLTfAUElBRi1RQS1WSVRPUklBXEFQTElDQ
"StartTime": "2022-05-09T15:09:01.0640106Z",
"EndTime": "9999-12-31T23:59:59Z",
"Links": {
"Attributes": "[Link]
}
}
]
}
}
}
EventFrame GetAttributes
Por meio do Batch, é utilizado os parâmetros do request de EventFrame para buscar os atributos de cada
evento. Assim, é passado na chamada o link para os atributos e, por meio deste, é obtido os campos de
Name e WebID de cada atributo dos eventos.
Exemplo Request
{
"Attributes": {
"Method": "GET",
"RequestTemplate": {
"Resource": "{0}?selectedFields=[Link];[Link]"
},
"Parameters": [
"$.[Link][*].[Link]"
],
"ParentIds": [
"EventFrames"
]
}
}
Exemplo Response
{
"Attributes": {
"Status": 207,
"Headers": {},
"Content": {
"Total": 4,
"Items": [
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Items": [
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQPISi0pLP7BGlkABQVoLTfArJzKpcFtBVE0oUR5
"Name": "CMA"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQPISi0pLP7BGlkABQVoLTfA6J0z2zLXI1YoFpSM
"Name": "Descrição do TAG"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQPISi0pLP7BGlkABQVoLTfAmau-9BcLhFwuF_q3
"Name": "Localidade"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQPISi0pLP7BGlkABQVoLTfAtJllEq9d11cFrJp6
"Name": "Nome do Tag"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQPISi0pLP7BGlkABQVoLTfAI3DI06JvuFo2QIP1
"Name": "Unidade de Engenharia"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQPISi0pLP7BGlkABQVoLTfAMunf_UFEuFYoVvn1
"Name": "Valor"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQPISi0pLP7BGlkABQVoLTfA1AyKKKk5Il8F2kjb
"Name": "Valor Referência do TAG"
}
]
}
},
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Items": [
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQHpYZ-5bP7BGlkABQVoLTfAjo5xjMVtBVE0oUR5
"Name": "CMA"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQHpYZ-5bP7BGlkABQVoLTfAyo-I8jbXI1YoFpSM
"Name": "Descrição do TAG"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQHpYZ-5bP7BGlkABQVoLTfAu7kF3RMLhFwuF_q3
"Name": "Localidade"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQHpYZ-5bP7BGlkABQVoLTfAloveO6td11cFrJp6
"Name": "Nome do Tag"
},
{
"WebId": "F1AbFK-Sm-oaCPUKxAtVatNqDtQHpYZ-5bP7BGlkABQVoLTfAAWJz-qZvuFo2QIP1
"Name": "Unidade de Engenharia"
},
{
Stream GetValue
Por meio do Batch, é utilizado como parâmetro o WebID dos atributos encontrados no request anterior para
buscar os valores de cada atributo. Assim, é utilizado esse parâmetro junto com a função values.
Exemplo Request
{
"Values": {
"Method": "GET",
"RequestTemplate": {
"Resource": "[Link]
},
"Parameters": [
"$.[Link][*].[Link][*].WebId"
],
"ParentIds": [
"Attributes"
]
}
}
Exemplo Response
{
"Values": {
"Status": 207,
"Headers": {},
"Content": {
"Total": 28,
"Items": [
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Timestamp": "1970-01-01T00:00:00Z",
"Value": "Yes",
"UnitsAbbreviation": "",
"Good": true,
"Questionable": false,
"Substituted": false,
"Annotated": false
}
},
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Timestamp": "1970-01-01T00:00:00Z",
"Value": "",
"UnitsAbbreviation": "",
"Good": true,
"Questionable": false,
"Substituted": false,
"Annotated": false
}
},
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Timestamp": "1970-01-01T00:00:00Z",
"Value": "PEVT",
"UnitsAbbreviation": "",
"Good": true,
"Questionable": false,
"Substituted": false,
"Annotated": false
}
},
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Timestamp": "1970-01-01T00:00:00Z",
"Value": "PEVT_6Q7M1_YIT_STS1",
"UnitsAbbreviation": "",
"Good": true,
"Questionable": false,
"Substituted": false,
"Annotated": false
}
},
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
Fluxos de Execução
Obs.: É válido pontuar que os exemplos apresentados são apenas para mostrar como as requisições são
realizadas por parte da aplicação. Para a validação de dados em produção deve-se seguir o processo
indicado na pagína de Troubleshooting.
Fluxo: Requisição para consultar os valores dos atributos dos EventFrames de interesse
Requisição do tipo POST; o corpo é um JSON com chamadas encadeadas e utilizando parâmetros para
obter os resultados necessários.
{
"Database": {
"Method": "GET",
"Resource": "[Link]
"Headers": {
"Cache-Control": "no-cache"
}
},
"EventFrames": {
"Method": "GET",
"Resource": "[Link]
"Parameters": [
"$.[Link]"
],
"ParentIds": [
"Database"
]
},
"Attributes": {
"Method": "GET",
"RequestTemplate": {
"Resource": "{0}?selectedFields=[Link];[Link]"
},
"Parameters": [
"$.[Link][*].[Link]"
],
"ParentIds": [
"EventFrames"
]
},
"Values": {
"Method": "GET",
"RequestTemplate": {
"Resource": "[Link]
},
"Parameters": [
"$.[Link][*].[Link][*].WebId"
],
"ParentIds": [
"Attributes"
]
}
}
{
"Database": {
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"WebId": "F1RDK-Sm-oaCPUKxAtVatNqDtQU3bFnDHvmUqUCQCQjWgkVgUElBRi1RQS1WSVRPUklBXEFQTElDQcOHw5VFU
}
},
"EventFrames": {
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Items": [
{
"WebId": "F1FmK-Sm-oaCPUKxAtVatNqDtQjYMB4cLP7BGlkABQVoLTfAUElBRi1RQS1WSVRPUklBXEFQTElDQ
"StartTime": "2022-05-09T18:07:11.0520019Z",
"EndTime": "9999-12-31T23:59:59Z",
"Links": {
"Attributes": "[Link]
}
}
]
}
},
"Values": {
"Status": 207,
"Headers": {},
"Content": {
"Total": 7,
"Items": [
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Timestamp": "1970-01-01T00:00:00Z",
"Value": "Yes",
"UnitsAbbreviation": "",
"Good": true,
"Questionable": false,
"Substituted": false,
"Annotated": false
}
},
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Timestamp": "1970-01-01T00:00:00Z",
"Value": "",
"UnitsAbbreviation": "",
"Good": true,
"Questionable": false,
"Substituted": false,
"Annotated": false
}
},
{
"Status": 200,
"Headers": {
"Content-Type": "application/json; charset=utf-8"
},
"Content": {
"Timestamp": "1970-01-01T00:00:00Z",
"Value": "PEVT",
Endpoints e Filas
Endpoints
PRD: [Link]
DEV: [Link]
Filas
Middleware: App Process Integration TCS – GL
Anexos