Skip to content

事件 Event

事件是设备主动上报的一次业务发生——故障、告警、模式切换、生命周期变化……定义归属物模型,实例归属设备,上报后既留原始流水,又可触发告警。

事件回答的是"设备身上发生了什么",而不是"某个量现在是多少"。后者是位号值(周期采集的数值快照),前者是离散的、带语义的一次发生:一台门禁设备的"温度 = 25.3℃"是位号值,"门被强行打开"是一个事件。

事件分两层:定义(这类设备会上报哪些事件、每个事件带哪些参数)沉淀在物模型里,由 dc3_event / dc3_event_param 承载;实例(某台设备某时刻真的报了一次)由驱动上报、落到 dc3_event_history

关键字段

事件定义 EventBO(表 dc3_event):

字段类型含义
eventNameString事件名称(展示用)
eventCodeString事件标识符,上报与告警规则按它匹配(如 DOOR_FORCED
eventTypeFlagEventTypeFlagEnum事件类型,见下
eventLevelFlagEventLevelEnum事件级别,见下
profileIdLong归属的物模型
eventExtJSON扩展配置

事件参数 EventParamBO(表 dc3_event_param,声明事件携带哪些输出参数):

字段类型含义
paramName / paramCodeString参数名 / 标识符
paramTypeFlagPointTypeEnum参数数据类型
eventIdLong归属的事件定义

事件参数复用位号的类型系统

paramTypeFlag 用的是和位号一样的 PointTypeEnumSTRING / INT / FLOAT / BOOLEAN…),事件参数的取值范围与位号数据类型完全一致。

事件类型与级别

类型 eventTypeFlag说明
info信息事件
alert告警事件
fault故障事件
lifecycle生命周期事件
级别 eventLevelFlag0 LOW1 MEDIUM2 HIGH3 CRITICAL

与其它概念的关系

  • 事件定义挂在物模型下,与位号指令并列,共同描述"这类设备有什么能力"。
  • 事件实例设备通过驱动上报,带上 eventCode、级别和一组参数值。

上报链路与生命周期

一次上报(EventReportDTO)携带:recordId(UUID)、deviceIdeventIdeventCodeeventTypeFlageventLevelFlagparamValuesmessageoccurTime。数据中心先把它落成原始流水 dc3_event_history,再提交给告警规则引擎;命中规则才会在 dc3_entity_alarm 生成/更新一条运行态告警

EventHistory 不等于告警

dc3_event_history 是"设备说发生了什么"的原始流水,每次上报都记dc3_entity_alarm 是"告警引擎判定需要关注"的结果,只有命中规则才有。查"设备报过哪些事件"看前者,查"当前有哪些告警"看后者,别混为一谈。

示例

门禁设备的物模型里定义一个事件:eventCode = DOOR_FORCEDeventTypeFlag = alerteventLevelFlag = 3,带参数 openMethod(String)。现场设备被撬开时,驱动上报 EventReportDTO{ eventCode: "DOOR_FORCED", paramValues: { openMethod: "pry" }, occurTime: ... };数据中心记入 dc3_event_history,并因级别为 CRITICAL 命中告警规则,在 dc3_entity_alarm 生成告警。

上报 API

方法路径说明
POST/data/event_history/report上报事件
GET/data/event_history/get_by_record_id?recordId=recordId 查询事件记录详情
POST/data/event_history/list分页查询事件记录

延伸阅读

Released under the AGPL-3.0 License · 基于 AGPL-3.0 协议发布