向类型添加转换

本指南介绍了如何在 Manufacturing Data Engine (MDE) 中向给定类型添加转换。

选择转换

MDE 中提供了多种转换。默认配置软件包 提供了两种转换,可与该默认配置软件包中提供的任何类型相关联:

  • 群组事件更改 转换:此 转换 会监控代码或一组代码中的任何字段,并在任何这些代码中监控的值发生更改时生成事件。此转换可以与任何 原型 的类型相关联。
  • 窗口化 转换:此 转换 会将 窗口化 函数应用于类型的所有代码。窗口化 是指在单个记录中汇总一段时间内的多个记录。窗口化转换 可以与任何原型的任何类型相关联。它可以汇总 1 分钟到 60 分钟的代码记录。转换 的结果是原始消息,其中包含所选时间段内值表达式的汇总值。

默认配置软件包提供了处理这两个转换发出的原始消息所需的消息类、解析器和类型。以下是用于处理每个 转换 生成的原始消息的两种类型:

  • group-event-change-records:群组事件更改转换的输出消息的目标类型。
  • window-transformation-records:窗口化转换的输出消息的目标类型。

如需激活 转换 ,应在类型网页界面中选择指定的 转换 ,或使用 Configuration API 端点将其与类型相关联。

列出可用的转换

如需探索任何 MDE 系统中可用转换的列表,请按以下步骤操作:

REST

有一个专用的 Configuration Manager API 端点用于列出可用的转换:

GET /configuration/v1/transformations

它会返回以下 JSON,其中包含可用的 转换 及其功能:

{
  "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"
        }
      }
    }
  ]
}

控制台

使用网页界面,在 “类型” 部分下,打开给定类型的 修改类型版本 菜单,然后展开面板的 转换和连接 部分。

转换列表

将转换与类型相关联

将任何现有类型与可用的 转换相关联,都会转换 该类型的所有代码。转换的结果会作为 转换后的类型 的 MDE 中的新代码被提取。转换后的代码名称有一个新名称,该名称派生自原始代码名称和转换的名称。

以下是将类型与 转换 相关联的步骤:

REST

如需将转换与给定类型相关联,请在 Configuration Manager API 的此端点中调用 PATCH 方法:

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

请求的 正文 应包含要 附加到类型的 转换 列表及其 配置参数 的值:

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

替换上一个示例调用中的以下项:

  • TYPE_NAME:要修改的类型的名称。
  • VERSION_NUMBER:要修改的类型的版本。

替换 正文 中的以下项以配置窗口转换:

  • WINDOW_TRANSFORMATION_ID:转换的唯一标识符,在经过转换处理后,该标识符也会附加到原始代码名称。
  • WINDOW_TRANSFORMATION_MINUTES:要应用的窗口的持续时间(以分钟为单位)
  • VALUE_EXPRESSION_VALUE:将作为值字段进行监控的代码原型元素。对于数值默认代码,为 #message['data']['numeric']

替换 正文 中的以下项以配置事件更改转换:

  • KEY_EXPRESSION_VALUE:代码原型中用于对应一起监控的代码进行分组的元素。如需监控单个代码 应为 #message['tagName']
  • VALUE_EXPRESSION_VALUE:代码原型中用于监控值更改的元素。需要解析为 String。在 数值默认代码中,为#message['data']['numeric'].toString()

控制台

  1. 如需将 转换 与类型相关联,请在 “类型” 标签页中打开 “修改类型版本” 网页界面部分。

  2. 展开 “转换和连接” 部分:

    转换列表

  3. 如需添加 转换 ,请从列表中选择所需的转换 ,然后点击 “添加”

    转换 ADD

  4. 然后继续提供所需的参数,并点击 “保存”

    转换参数

对于窗口转换 ,参数如下:

  • WINDOW_TRANSFORMATION_ID:转换的唯一标识符,在经过转换处理后,该标识符也会附加到原始代码名称。
  • WINDOW_TRANSFORMATION_MINUTES:要应用的窗口的持续时间(以分钟为单位)
  • VALUE_EXPRESSION_VALUE:将作为值字段进行监控的代码原型元素。对于数值默认代码,为 #message['data']['numeric']

对于事件更改转换 ,参数如下:

  • KEY_EXPRESSION_VALUE:代码原型中用于对应一起监控的代码进行分组的元素。如需监控单个代码 应为 #message['tagName']
  • VALUE_EXPRESSION_VALUE:代码原型中用于监控值更改的元素。需要解析为 String。在 数值默认代码中,为#message['data']['numeric'].toString()