动作与通知的区别
方法是节点上可调用的函数:客户端在调用时提交输入参数,服务器执行后返回输出参数与状态码;节点上有可执行标志与用户可执行标志,用来表示当前是否允许调用。事件则是通知机制:客户端订阅某个对象的事件流,提交过滤条件说明关心哪些事件类型的哪些字段,服务器在事件发生时推送;事件没有应答,属于谁也不能被确认的单向通知。两者用途不同:方法用于改变状态,事件用于观察状态,报警与条件都是事件的子类型。
基本信息
| 方法调用 | 调用服务,输入参数、输出参数、返回状态码 |
|---|---|
| 可执行标志 | 可执行表示允许调用,用户可执行表示当前用户被授权 |
| 事件订阅 | 在开启事件通知的对象上建立监控项,附加过滤条件 |
| 过滤条件 | 类型筛选与字段选择,服务器侧完成过滤 |
| 基础事件字段 | 事件标识、类型、来源节点、时间、严重程度、消息 |
| 报警扩展 | 条件与报警在事件之上增加确认、复位等状态机 |
典型使用场景
- 远程动作:复位计数器、切换模式、触发标定,用方法而不是直接写变量
- 权限分级:普通操作员只能调用一部分方法,工程人员才可调用高风险方法
- 报警订阅:按报警类型过滤,只收关心的严重程度以上事件
- 操作审计:把事件流写入日志,形成可追溯的操作与状态记录
- 减少无效推送:字段选择只取需要的几项,避免每条事件都带全套信息
- 报警确认:通过方法或专用服务确认与复位,确认前的报警会持续存在
方法与事件对照
| 维度 | 方法 | 事件 |
|---|---|---|
| 方向 | 客户端发起,服务器响应 | 服务器主动推送 |
| 确认 | 有返回状态码 | 无应答,靠订阅保活与序号 |
| 过滤 | 不需要 | 类型筛选与字段选择在服务器侧完成 |
| 失败表现 | 返回错误状态码 | 根本不推送,需靠订阅状态与日志判断 |
| 典型风险 | 误调用造成设备动作 | 过滤条件写错导致漏报 |
| 权限控制 | 可执行标志与用户权限双重判定 | 受订阅权限与该对象事件通知开关限制 |
订阅与调用的关键点
订阅与调用的关键点
# 订阅事件:在开启事件通知的对象上建立监控项
# 过滤条件一:事件类型(只看某类报警,避免全量事件)
# 过滤条件二:需要的字段(事件标识、来源、时间、消息)
# 刷新服务:重连后取回当前未清除的报警状态
# 调用方法:先读可执行与用户可执行标志
# 提交输入参数 → 检查返回状态码 → 必要时读回被影响的值确认结果事件订阅通常挂在服务器节点上以接收全服务器事件,也可挂在具体对象上只看该设备的事件;选择范围过大时用类型筛选收窄。
方法调用可能直接引起设备动作,例如启动、复位或写入配方;客户端必须把调用结果与安全联锁一起判断,不能只看请求是否发出。