Adicionar uma transformação a um tipo

Este guia descreve como adicionar uma transformação a um determinado tipo no Manufacturing Data Engine (MDE).

Como escolher uma transformação

Há várias transformações disponíveis no MDE. O pacote de configuração padrão oferece duas transformações que podem ser associadas a qualquer um dos tipos disponíveis nesse pacote:

  • Transformação Mudar evento de grupo: essa transformação monitora qualquer campo em uma tag ou um grupo de tags e gera um evento sempre que os valores monitorados mudam em qualquer uma dessas tags. Essa transformação pode ser associada a um tipo de qualquer arquétipo.
  • Transformação de janelamento: essa transformação aplica uma função de janelamento a todas as tags de um tipo. Janelas se refere ao resumo de vários registros em um período em um único registro. A transformação de janela pode ser associada a qualquer tipo de qualquer arquétipo. Ele pode resumir os registros de tags de 1 minuto a 60 minutos. O resultado da transformação é uma mensagem bruta que contém os valores de resumo da expressão de valor durante o período selecionado.

O pacote de configuração padrão fornece as classes de mensagem, os analisadores e os tipos necessários para processar as mensagens brutas emitidas por essas duas transformações. Os dois tipos fornecidos para processar as mensagens brutas geradas por cada transformação são os seguintes:

  • group-event-change-records: tipo de destino para as mensagens de saída da transformação de mudança de evento de grupo.
  • window-transformation-records: tipo de destino para as mensagens de saída da transformação de janela.

Para ativar uma transformação, a transformação especificada deve ser selecionada na interface da web Tipo ou associada ao Tipo usando o endpoint de API Configuration.

Como listar transformações disponíveis

Para conferir a lista de transformações disponíveis em qualquer sistema MDE, siga estas etapas:

REST

Há um endpoint dedicado da API Configuration Manager para listar as transformações disponíveis:

GET /configuration/v1/transformations

Ele retorna o seguinte JSON com as transformações disponíveis e suas capacidades:

{
  "transformations": [
    {
      "name": "eventChange",
      "displayName": "MDE Event Change",
      "description": "Monitors the value of one or more tag that has a common group key. Fires an event whenever any of the contributing tags changes its value",
      "disabled": false,
      "sample": {
        "keyExpression": {
          "displayName": "Key Expression",
          "description": "A SpEL expression that extracts the group key from the MDE message.proto which groups one or more tags as one unit whose values will be monitored for a change. The key must evaluate to a string",
          "value": "#message['tagName']"
        },
        "valueExpression": {
          "displayName": "Value Expression",
          "description": "A SpEL expression that extracts the value from the MDE message.proto to be monitored for a change. The value must evaluate to a string",
          "value": "#message['data']['numeric'].toString()"
        }
      }
    },
    {
      "name": "window",
      "displayName": "MDE Numeric Value Windowing",
      "description": "Create a periodic stats event that provides values such as average, min, and max for an expression that extracts a numeric value from the tag messages",
      "disabled": false,
      "sample": {
        "durationMinutes": {
          "displayName": "Window Duration in Minutes",
          "description": "A positive integer that represents how long the window will summarize events before producing the summary tag, this is in the granularity of minutes and it cannot be higher than 2 hours",
          "value": "1"
        },
        "valueExpression": {
          "displayName": "Value Expression",
          "description": "A SpEL expression that extracts the value from the MDE message.proto to be used as the numeric value of the tags that will be summarized. The value must evaluate to a number, and it's internally out",
          "value": "#message['data']['numeric']"
        },
        "id": {
          "displayName": "Window Unique ID",
          "description": "A unique ID that represents this instance of the window transformation, this should be unique if you are adding multiple instances of the window transformation to the same type",
          "value": "1-min-window"
        }
      }
    }
  ]
}

Console

Na interface da Web, em Tipos, abra o menu Editar versão do tipo para um tipo específico e expanda a seção Transformar e conectar do painel.

Lista de transformações

Associar uma transformação a um tipo

Associar um tipo a uma transformação disponível transforma todas as tags desse tipo. O resultado da transformação é ingerido como novas tags no MDE dos Tipos transformados. Os nomes de tag transformados têm um novo nome derivado do nome de tag original e do nome da transformação.

Estas são as etapas para associar um tipo a uma transformação:

REST

Para associar uma transformação a um determinado tipo, chame o método PATCH neste endpoint da API Configuration Manager:

PATCH /configuration/v1/types/TYPE_NAME/versions/VERSION_NUMBER

O corpo da solicitação precisa conter a lista de transformações a serem anexadas ao tipo e o valor dos parâmetros de configuração:

{
    "transformations": [
        {
            "window": {
                "id": "WINDOW_TRANSFORMATION_IDE",
                "durationMinutes": WINDOW_TRANSFORMATION_MINUTES,
                "valueExpression": "VALUE_EXPRESSION_VALUE"
            }
        },
        {
            "eventChange": {
                "keyExpression": "KEY_EXPRESSION_VALUE",
                "valueExpression": "VALUE_EXPRESSION_VALUE"
            }
        }
    ]
}

Substitua os seguintes itens na chamada de exemplo anterior:

  • TYPE_NAME: o nome do tipo a ser modificado.
  • VERSION_NUMBER: a versão do tipo a ser modificada.

Substitua os seguintes itens no corpo para configurar uma transformação de janela:

  • WINDOW_TRANSFORMATION_ID: um identificador exclusivo da transformação que também será anexado aos nomes das tags originais depois de serem processados pela transformação.
  • WINDOW_TRANSFORMATION_MINUTES: a duração, em minutos, da janela a ser aplicada.
  • VALUE_EXPRESSION_VALUE: o elemento do proto de tag que será monitorado como campo de valor. Para uma tag numérica padrão, é #message['data']['numeric'].

Substitua os seguintes itens no Corpo para configurar uma transformação de mudança de evento:

  • KEY_EXPRESSION_VALUE: o elemento no proto de tag usado para agrupar tags que precisam ser monitoradas juntas. Para monitorar uma única tag, use #message['tagName']
  • VALUE_EXPRESSION_VALUE: o elemento no proto de tag usado para monitorar a mudança de valor. Precisa ser resolvido para um String. Em uma tag numérica padrão, é #message['data']['numeric'].toString().

Console

  1. Para associar uma transformação a um tipo, abra a seção da interface da Web Editar versão do tipo na guia Tipo.

  2. Expanda a seção Transformar e conectar:

    Lista de transformações

  3. Para adicionar uma transformação, selecione a transformação necessária na lista e clique em ADICIONAR:

    ADD de transformação

  4. Em seguida, informe os parâmetros obrigatórios e clique em SALVAR:

    Parâmetro de transformação

Para a Transformação Window, os parâmetros são:

  • WINDOW_TRANSFORMATION_ID: um identificador exclusivo da transformação que também será anexado aos nomes das tags originais depois de serem processados pela transformação.
  • WINDOW_TRANSFORMATION_MINUTES: a duração, em minutos, da janela a ser aplicada.
  • VALUE_EXPRESSION_VALUE: o elemento do proto de tag que será monitorado como campo de valor. Para uma tag numérica padrão, é #message['data']['numeric'].

Para a Transformação de mudança de evento, os parâmetros são:

  • KEY_EXPRESSION_VALUE: o elemento no proto de tag usado para agrupar tags que precisam ser monitoradas juntas. Para monitorar uma única tag, use #message['tagName']
  • VALUE_EXPRESSION_VALUE: o elemento no proto de tag usado para monitorar a mudança de valor. Precisa ser resolvido para um String. Em uma tag numérica padrão, é #message['data']['numeric'].toString().