创建源消息类

本指南介绍了如何为 Manufacturing Data Engine (MDE) 创建源消息类

源消息类建模

应定义源消息类,以捕获一组具有共同结构的源消息。

您设计的源消息类越具体,在 Whistle 脚本中需要编写的条件语句就越少,从而可以处理不同源消息之间的架构差异。不过,创建更具体的源消息类需要更多解析器。

因此,对源消息类进行建模时,一方面要确保源消息类具有统一的消息架构,另一方面要考虑需要管理的解析器数量,在这两者之间找到适当的平衡点。

源消息类创建

本部分概述了使用 API 调用或控制台界面创建源消息类的过程。

REST

POST /configuration/v1/message-classes

{
  "name": "MESSAGE_CLASS_NAME",
  "MESSAGE_CLASS_NAME": "PRIORITY",
  "expression": "SPEL_EXPRESSION"
}

替换以下内容:

  • MESSAGE_CLASS_NAME:要创建的消息类的名称。
  • PRIORITY:消息类的优先级。消息类的优先级是 0 到 65535 之间的整数(含 0 和 65535)。数字越小,优先级越高。
  • SPEL_EXPRESSION:用于定义消息类的 SpEL 表达式。例如 #root.event['value'] instanceof T(Number)

控制台

  1. 打开界面中的 'MESSAGE CLASSES' 部分,以创建源消息类。界面中的相应部分会显示所有可用的消息类的列表:

    消息类 - 列出消息

    对于每个消息类,列表中都会显示以下参数:

    • Message Class Name:消息类的名称。必须是唯一的。
    • Message Class Expression:与 Message Class 关联的实际 SpEL 表达式。
    • 优先级:消息类的优先级(数字越小,优先级越高)。
    • 已启用:消息类的状态。 已停用的消息类不会纳入提取范围。
    • 操作:一个上下文按钮,用于访问所选消息类的查看/修改功能和启用 / 停用功能。
  2. 如需添加新的消息类,请点击顶部的“添加新消息类”按钮。系统会显示一个新侧边菜单,其中包含要提供的所有必需的消息类参数:

    消息类 - 创建新消息类

    • 消息类名称:定义消息类的唯一字符串。
    • 消息类表达式:指用于定义消息类的 SpEL 表达式。
    • 优先级:定义与消息类相关联的优先级。消息类的优先级是 0 到 65535(含)之间的整数。 数字越小,优先级越高。如果某条消息验证了 2 个消息类的表达式,则只会触发优先级值较低的消息类。
  3. 如需创建新的消息类,请在“消息类表达式”字段中填写有效的 SpEL 表达式,并设置优先级

  4. 点击“创建”按钮以保存更改。如果成功创建新的消息类,系统会显示一条确认消息。

测试源消息类表达式

您可以在创建源消息类之前,先对源消息类表达式进行实验和测试。

REST

POST /configuration/v1/message-classes:test

{
  "expression": "SPEL_EXPRESSION",
  "testMessage": "TEST_MESSAGE"
}

替换以下内容:

  • SPEL_EXPRESSION:用于定义消息类的 SpEL 表达式。
  • TEST_MESSAGE:测试源消息对象。

返回对象会告知您所提供的表达式在语法上是否正确,以及对于所提供的消息,该表达式的评估结果是 true 还是 false

控制台

界面提供了使用测试消息测试新消息类的 SpEL 表达式的选项。

  1. “测试消息”框中填写示例 JSON 消息。
  2. 点击运行测试以运行验证。测试结果为“匹配”或“不匹配”,并简要说明匹配条件。

消息类 - 测试消息类

针对所有有效消息类评估测试消息

您可以评估消息,以确定对于一组有效源消息类,测试消息将属于哪个源消息类。

REST

POST /configuration/v1/message-classes:evaluate

{
  "testMessage": "TEST_MESSAGE"
}

替换以下内容:

  • TEST_MESSAGE 替换为测试源消息对象。

返回对象会告知您所提供的消息匹配了哪个源消息类(如果有)。