跳到主要内容

CEP (复合事件处理)

目录


概述

CEP(Complex Event Processing) 功能是一种规则引擎,可从实时事件流中发现有意义的模式并立即执行动作(存储·发布·报警)。当前在左侧菜单中以 Automation 组的 EQL 查询语句 形式呈现。

子菜单内部 URL用途
EQL 查询/query/index向实时流投递 EQL(Event Query Language) 临时查询并即时查看结果
语句/statement/index查询以资产为单位的领域规则(状态/聚合/事件/命令)

CEP 规则的结果也会自动连接到流程的资产触发器(flow_on_asset_event 等)。


界面构成 — Automation 组的 EQL 界面

界面主要用户一句话概述
查询运营分析人员即时执行一行 EQL,从实时流中查看结果
语句操作员查询注册在资产上的领域规则状态与执行统计

查询界面 (/query/index)

用于编写 EQL 临时查询,并通过 ▶ 按钮立即执行以在实时流中查看结果的界面。

顶部 — 查询保存·历史

🔍 쿼리 [💾 이 쿼리를 저장] [↩ 마지막 쿼리] [▼ 이력 ▼]
按钮动作
保存此查询saveQueryHistory() — 将当前 EQL 保存为收藏
最近查询loadLastQuery() — 载入最近一次执行的查询
历史下拉框loadQueryHistory() — 以下拉列表显示已保存的查询历史(最大 400px 滚动)

在顶部或左侧菜单 EQL 输入框中编写的查询会自动传递到本界面并可执行。

EQL 输入面板

黑色边框的大输入框(textarea[name=epl],高度 8 行)+ 右上角两个图标。

图标动作
▶(播放,白色)runQuery() — 执行 EQL
⚙(齿轮,灰色)resultConfig() — 结果显示选项对话框(display_count·expire_time·result_format·图表选项等)

执行结果面板

结果面板的标题栏显示以下内容。

项目显示
左侧⚪ “查询执行结果” +(若为已保存查询)[배치시간=..., EQL ID=...]
右侧开始 / ⏸ 停止 按钮(暂停实时结果接收)

结果图表 (query_result_chart, 160px)

  • 右上角显示输入计数(input_count_cur)与每分钟输入数(input_count_min
  • 结果数据开始进入后图表会被填充。为实时折线图形式
  • 数据到达前显示“正在等待接收图表数据...”(旋转图标)

结果表格 (query_result_table)

说明
#行号
输出时间EQL emit 结果的时刻
行数单次 emit 的行数
数据JSON 或表格形式的结果正文

若不停止执行,结果表格会持续累积。按下 停止 按钮或执行新查询即可停止累积。


触发器界面参考

独立的 触发器 菜单当前在集成侧边栏中处于停用状态。在仍运行既有 /trigger/index 界面或内部 API 的安装环境中,请仅将以下内容作为遗留参考。新的自动化应优先使用流程的触发器节点与 Automation > EQL 查询 / 语句 流程。

用于管理将 EQL 匹配结果发布到外部消息通道或保存到存储的自定义触发器。

顶部工具

⚡ 트리거 [➕ 트리거 추가] [↻]

列表表格

列表面板标题栏右侧有 部署所选触发器 / 解除 / 全部重新部署 三个按钮。

宽度说明
选择50px用于批量部署/解除的复选框
状态80px部署/解除徽标
触发器 ID110px系统自动分配的 ID
触发器名 | 说明自动操作员指定的元信息
MQ 流式传输70px是否使用 MQ 发布 (Y/N)
存储保存70px是否将结果写入存储 (Y/N)
总执行次数70px累计匹配次数
最后执行日期110px最近一次匹配时刻
错误70px累计错误计数
注册日期110px注册时刻
最后修改日期110px最后修改时刻
操作80px修改·删除按钮

页面底部显示提示框。

自定义触发器的使用 可添加在满足特定条件时执行动作的自定义触发器。此外还可通过 MQ 进行流式传输或保存到存储。

触发器添加/修改表单

通过顶部 添加触发器 按钮进入表单界面(/trigger/form)。

1) 基本信息 fieldset

输入path宽度备注
触发器 IDtrigger_id200px只读 — 系统自动分配
触发器名trigger_name450px便于人员识别的名称
说明trigger_desc600 × 100px (textarea)触发器用途

2) EQL fieldset

输入path说明
EQLepl8 行 textarea — 编写 EQL 查询(SELECT ... FROM ... WHERE ...
▶ 试运行(图标)runQuery() — 立即试运行所编写的 EQL。结果显示在下方的 查询结果 表(graph_query_result)中

查询结果表(试运行结果预览):

说明
输出时间EQL emit 结果的时刻
数据结果正文

3) 流式传输 fieldset

输入path说明
是否 MQ 输出use_mq (复选框)是否将结果数据发布到外部消息通道
协议mq_protocol (选择器)MQTTKAFKA
目标地址mq_destination (450px)发布目标主题/通道 — 分隔符:KAFKA -,MQTT /。例:device-machine-topic-1device/machine/topic_1

4) 存储保存 fieldset

输入path说明
是否保存到存储use_storage (复选框)是否将结果数据写入存储

由于触发器结果保存表已固定,存储表名·列定义区域当前处于停用状态。

表单提交

按钮动作
列表(☰)返回触发器列表界面
保存(蓝色)校验输入后保存。仅保存尚未部署,需在列表界面点击 部署所选触发器 才会实际开始运行

全部重新部署

按钮位置动作
全部重新部署列表面板标题栏右侧 (🔁)批量重新部署所有已注册触发器。规则引擎重启后或系统巡检后使用

运维流程

  1. 添加触发器 → 输入 EQL·流式传输·存储选项 → 保存
  2. 在列表中勾选该触发器 → 点击 部署所选触发器 → 状态变为“部署”
  3. 运行中若需暂停,点击 解除 → 状态变为“解除”
  4. 巡检后通过 全部重新部署 批量恢复运行

语句界面 (/statement/index)

用于查询以资产为单位注册的领域规则(状态/聚合/事件/命令)状态与执行统计的界面。

顶部搜索·筛选

√ 스테이트먼트 [유형 ▼] [검색 ...] [조회] [↻]
控件选项说明
类型选择器 (search_type)(全部)·状态(CONTEXT)·聚合(AGGREGATION)·事件(EVENT)·命令(COMMAND)4 种规则类型筛选
搜索输入框 (txt)(250px)placeholder: “搜索 ...” — 规则名/应用资产 ID/说明关键字
查询(红色 + 🔍)search() — 按条件刷新列表
刷新(红色 + ↻)refresh() — 刷新界面

4 种规则类型

代码名称含义
CONTEXT状态用 EQL 定义资产当前状态(运行/停止/异常)
AGGREGATION聚合在一定窗口内进行平均值/最大值等聚合
EVENT事件发生特定模式(超阈值等)时发布领域事件
COMMAND命令规则匹配时向资产发布命令(flow_on_asset_command

列表表格

宽度说明
状态80px启用/停用徽标
应用的资产 ID150px规则所赋予的资产标识符
类型80px4 种类型之一(参考上表)
语句名自动规则名称
说明300px规则备注
总执行次数80px规则匹配的累计次数
最后执行日期120px最近一次匹配时刻
错误60px累计错误计数
注册日期120px规则注册时刻
详情50px点击进入规则详情界面(/statement/view

详情查看

点击列表中的 详情 按钮会进入独立界面(/statement/view/{asset_id}/{statement_name}),可查看以下内容(参考下方语句详情界面)。

  • 规则的 EQL 正文
  • 执行结果历史
  • 执行趋势/聚合
  • 分析性能趋势
  • 状态历史

语句详情界面

通过详情按钮进入的分析视图(statement/view.jsp,715 行)。将一条规则的全部运行信息汇集在一个界面中。

顶部 — 标识头

√ 스테이트먼트 | {statement_name} [ {asset_id} ] [← 목록] [↻]
按钮动作
列表(←)返回 /statement/index
刷新重新加载界面

面板 1 — 语句信息(5 列表格)

宽度说明
状态250px启用/停用 + 最后执行时刻
语句名自动规则名称
应用的资产200px资产域徽标 — 点击可跳转至资产树
类型200px状态(CONTEXT)·聚合(AGGREGATION)·事件(EVENT)·命令(COMMAND)
注册日期160px规则注册时刻

EQL 正文 fieldset

原样显示规则的 EQL 查询正文。可从文本区域复制并粘贴到查询界面进行试运行。

输入·输出 fieldset

区域显示
输入序列用作规则输入的标签·事件类型列表
输出序列规则发布的领域事件类型
重置错误计数仅将累计错误计数重置为 0(resetErrorCount(asset_id, statement_name)

面板 2 — 执行结果历史(4 列表格)

宽度说明
执行时间160px规则执行时刻
结果60px成功(绿色)/ 错误(红色)
结果值 / 错误消息自动成功则为结果正文,错误则为错误消息
复制50px📋 — 将结果值/错误消息复制到剪贴板

面板 3 — 执行趋势图表

项目说明
标题📊 “执行趋势”
按钮今天(switchTrendDay(0)) / 昨天(switchTrendDay(-1)) 切换
图表24 小时按时段的成功/错误累计柱状图(系列:成功·错误)

面板 4 — 执行聚合

项目说明
标题📊 “执行聚合”
按钮今天(switchAggDay(0)) / 昨天(switchAggDay(-1)) 切换
fieldset 1分钟级聚合(按时段计数·平均处理量等)
fieldset 2优先级或结果分布

面板 5 — 分析性能趋势

项目说明
标题🖥 “分析性能趋势”
按钮今天(switchCpuDay(0)) / 昨天(switchCpuDay(-1)) 切换
图表规则处理所消耗的 CPU/处理时间时序 — 用于识别重负载规则

面板 6 — 状态历史表

说明
变更时间规则状态变更时刻(启用·解除·重新部署等)
状态变更后的状态

用于追踪规则生命周期(何时启用·解除·修改)。

应用模式

分析流程界面流程
错误规则诊断执行结果历史 → 错误消息 → 复制 → 审查 EQL 正文 → 在查询界面试运行
识别重负载规则分析性能趋势 → CPU 占用高的时段 → 简化 EQL 正文
规则匹配分布分析执行趋势 + 聚合 → 按时段的匹配模式
运行规则整理状态历史 → 追踪启用/解除时点

应用场景

场景界面步骤
即时确认当前产线运行状态查询在 EQL 输入框输入 SELECT * FROM AssetData.win:time(1 sec) WHERE asset_id='LINE-A' → ▶
新报警规则试运行·部署触发器添加 → 编写 EQL → ▶ 试运行 → 确认结果 → 保存 → 部署
向外部 SCADA 中继资产事件触发器将 EQL 匹配消息发布到 MQTT 主题 scada/line-a/events
按资产单位巡检规则语句类型=EVENT + 搜索资产 ID → 启用规则列表 + 执行次数
怀疑规则暴增语句从总执行次数大的规则开始确认 → 在详情中审查 EQL/输入
通过自动化接收规则结果流程flow_on_asset_event 触发器直接接收领域规则的结果

常见问题

Q. EQL 和 SQL 一样吗? A. 语法相似,但 EQL 是增加了 时间窗口 概念的事件处理语言。例:Point.win:time(5 sec) 仅处理最近 5 秒的数据,Point.win:length(100) 仅处理最近 100 条。

Q. 在查询界面执行的查询会被保存吗? A. 仅点击 ▶ 执行为临时操作,需点击 保存此查询 按钮才会保存到收藏。若为一次性分析则无需保存。

Q. 触发器只保存了但不运行。 A. 保存仅表示已注册定义。需在列表中勾选该触发器并点击 部署所选触发器,才会实际注册到规则引擎并开始匹配。

Q. 触发器的目标地址该如何设定? A. 分隔符因 协议 而异。

  • KAFKA:连字符(-)分隔 — 例:device-machine-topic-1
  • MQTT:斜杠(/)分隔 — 例:device/machine/topic_1

Q. 在语句界面搜索没有结果。 A. 请确认类型选择器是否选择了“类型”(全部)。此外,仅输入资产 ID 的一部分也可进行部分匹配搜索。

Q. 总执行次数异常巨大。 A. 很可能是规则的输入窗口过窄或匹配条件过于宽泛。请通过 详情 按钮审查 EQL,或使用流程的触发器模式(*_pattern)对消息进行预先过滤。

Q. 触发器的 EQL 试运行结果为空。 A. 可能是试运行时刻没有数据流入,或 EQL 的窗口过长导致首次匹配较晚。请让试运行持续 1 分钟左右后再查看,或将窗口调短(win:time(1 sec))后再试。

Q. 如何临时停止触发器? A. 在列表中勾选该触发器并点击 解除。若要恢复运行,点击 部署所选触发器

Q. 规则会自动赋予资产吗? A. 注册资产时,根据运行环境配置,有时会自动赋予默认领域规则。请在语句界面确认当前已应用的规则,如需增删请联系系统管理员或在各资产的设置界面进行。

Q. 我想自动处理 EQL 结果。 A. 可通过流程的资产触发器(flow_on_asset_event/flow_on_asset_alarm 等)自动接收领域规则的结果,并连接到后续动作(发布工单·邮件·调用外部 API)。


相关界面

  • 数据点 — 作为 EQL 输入的时序标签数据
  • 报警 — 触发器所产生报警的运行界面
  • 流程 — 通过资产触发器自动处理规则结果
  • 工厂管理 — 在资产树中赋予规则
  • 状态代码定义 — 规则所评估的状态代码 (NORMAL/WARN/ERROR)
  • 诊断 — 规则处理过程中的错误日志