Skip to content

Event Management - 最佳实践

本文档提供了在 Event Management 中查询和创建事件或事件类型的最佳实践。

一般说明

  • 页面应尽可能小(默认页面大小为 20)。
  • 如果不需要有关事件的实时数据,可将轮询周期设置为尽可能高的值。
  • 如果应用使用重试策略,应在收到网关超时提示后等待一段时间。
  • 对于以下严重度,默认应用如 Operations Insight 或 MindSphere Web Components 显示相应图标。对于其他严重度只显示数字。
严重度 图标 描述
20 错误 错误
30 警告 警告
40 信息 信息

自定义事件的可过滤属性

Enum

如果自定义事件类型字段只能存储少量值,请考虑使用 ENUM 作为该字段的类型。

{
  "name": "volatileEventType",
  "ttl": 1,
  "fields": [
    {
      "name": "risk",
      "filterable": true,
      "required": true,
      "updatable": true,
      "type": "ENUM",
      "values" : ["LOW", "MEDIUM", "HIGH"]
    }
  ]
}

UUID 与 String

如果自定义事件类型字段仅存储 UUID 值,请考虑使用 UUID 而不是 STRING 作为该字段的类型。

{
  "name": "volatileEventType2",
  "ttl": 1,
  "fields": [
    {
      "name": "code",
      "filterable": true,
      "required": true,
      "updatable": false,
      "type": "UUID"
    }
  ]
}

过滤

HTTP GET /events API通过filter 参数过滤自定义事件读取。请参考列出自定义事件示例.

按时间戳过滤

按时间戳过滤时,时间间隔应尽可能短。不应超过 1 个月。如果没有为过滤器指定 timestamp,则仅检索从上周开始的事件。

```json tab="Not recommended" { "timestamp": { "between": "[1970-01-01T07:25:07.166Z,2018-11-05T10:25:07.166Z)" } }

```json tab="Better approach"
{
 "timestamp": {
 "between": "[2018-11-01T07:25:07.166Z,2018-11-05T10:25:07.166Z)"
 }
}

按 Type ID 过滤

为过滤器提供 typeId 以在事件中搜索特定事件类型。

```json tab="Not recommended" { "timestamp": { "after":"2018-11-01T07:25:07.166Z" } }

```json tab="Better approach"
{
 "typeId":"3868feab-9ae6-44a8-9d9e-d20da848afb8",
 "timestamp": {
 "after":"2018-11-01T07:25:07.166Z"
 }
}

按其它字段过滤

如果可能,按自定义字段而非标准字段过滤。

```json tab="Not recommended" { "timestamp":{ "between":"[2018-10-01T00:00:00.001Z,2018-10-05T14:53:07.534Z)" }, "entityId":"e7a12da7b60c4402a0a14dce547206ed", "acknowledged":false, "typeId":"com.siemens.mindsphere.eventmgmt.event.type.MindSphereStandardEvent" }

```json tab="Better approach"
{ 
 "timestamp":{ 
 "between":"[2018-10-01T00:00:00.001Z,2018-10-05T14:53:07.534Z)"
 },
 "entityId":"e7a12da7b60c4402a0a14dce547206ed",
 "acknowledged":false,
 "typeId":"3f690adf-edc8-447f-b1c8-4758aa7924ba",
 "risk":"LOW"
}

向下钻取

有时执行向下钻取(即分多步进行过滤)会更快。例如,下面的过滤表达式可用来过滤出自定义事件类型 typeId。但其它过滤参数则适用于定义为父事件类型的字段。这会增加过滤的开销。
在这种情况下,建议先用父类型替换 typeId。然后,可以按照自定义事件类型的字段进一步执行过滤。

```json tab="Not recommended" { "timestamp":{ "between":"[2018-10-01T00:00:00.001Z,2018-10-05T14:53:07.534Z)" }, "entityId":"e7a12da7b60c4402a0a14dce547206ed", "acknowledged":false, "typeId":"b7f9a843-a530-4159-989e-20645e2b647d" }

```json tab="Better approach"
{ 
 "timestamp":{ 
 "between":"[2018-10-01T00:00:00.001Z,2018-10-05T14:53:07.534Z)"
 },
 "entityId":"e7a12da7b60c4402a0a14dce547206ed",
 "acknowledged":false,
 "typeId":"com.siemens.mindsphere.eventmgmt.event.type.MindSphereStandardEvent"
}

排序

为提高性能,可按过滤表达式中的字段排序。

```json tab="Not recommended" { "typeId":"com.siemens.mindsphere.eventmgmt.event.type.MindSphereStandardEvent" }

```json tab="Better approach"
{ 
 "timestamp":{ 
 "between":"[2018-10-01T00:00:00.001Z,2018-11-01T14:53:07.534Z)"
 },
 "typeId":"com.siemens.mindsphere.eventmgmt.event.type.MindSphereStandardEvent"
}

sort:timestamp,desc

Last update: March 22, 2023