边缘计算场景联动手册
目录
概述
边缘计算场景联动是一种基于边缘计算技术的流程自动化管理系统,它允许用户定义和执行包含多个步骤的业务流程。这种系统特别适用于需要严格顺序执行、状态校验和自动回退的场景,如充电流程管理、设备启动序列、安全检查流程等。
核心特性
- 流程定义:支持创建包含多个步骤的串行执行流程
- 顺序执行:确保步骤按预定顺序依次执行
- 条件校验:每个步骤执行后进行成功条件校验
- 自动回退:执行失败时自动启动逆向回退流程
- 边缘优化:针对边缘环境优化执行效率和资源占用
- 状态监控:提供实时流程状态监控和异常追踪
应用价值
- 自动化:减少人工干预,提高操作效率
- 可靠性:确保流程执行的一致性和正确性
- 安全性:在异常情况下能够自动回退,避免系统处于不一致状态
- 可追溯性:详细记录流程执行过程,便于问题分析和故障排查
系统架构
整体架构
边缘计算场景联动系统是边缘计算插件框架的重要组成部分,它与其他模块紧密集成,形成完整的边缘计算能力。
系统分层
场景联动系统遵循边缘计算插件框架的分层架构:
- 数据输入层:接收来自南向采集或北向订阅的数据流
- 数据调度层:管理流程的注册、启停和执行调度
- 流程执行层:执行场景联动流程的各个步骤
- 结果处理层:处理流程执行结果,触发相应动作
- 运维监控层:提供流程执行状态的监控和管理
与边缘计算框架的集成
场景联动系统与边缘计算框架的集成关系:
- 数据源:复用边缘计算框架的数据源配置
- 规则引擎:利用边缘计算框架的规则执行能力
- 动作执行:使用边缘计算框架的输出动作能力
- 状态管理:集成边缘计算框架的状态管理子系统
- 监控系统:接入边缘计算框架的运维监控层
数据流
场景联动系统的数据流:
- 触发事件:通过API调用或系统事件触发流程启动
- 流程执行:按照定义的步骤顺序执行
- 数据处理:每个步骤执行相应的动作和校验
- 结果处理:处理执行结果,触发后续步骤或回退
- 状态更新:更新流程和步骤的状态
- 监控记录:记录执行过程和结果
流程定义
流程结构
一个完整的场景联动流程由以下部分组成:
- 流程基本信息:
- 流程ID:唯一标识符
- 流程名称:流程的描述性名称
- 流程版本:流程的版本号
- 流程状态:启用/禁用
- 优先级:流程执行的优先级
- 步骤定义:
- 步骤ID:步骤的唯一标识符
- 步骤名称:步骤的描述性名称
- 步骤类型:执行动作的类型
- 触发条件:触发步骤执行的条件及表达式
- 执行参数:执行动作所需的参数
- 执行条件:步骤执行的前置条件
- 校验规则:步骤执行后的成功校验规则
- 回退操作:步骤失败时的回退操作
步骤类型
支持的步骤类型包括:
- 设备控制:控制设备的开关、调节等操作,支持批量控制多个设备
- 数据采集:采集设备的状态或数据
- 计算操作:执行计算或数据处理,支持表达式计算和位操作
- 延迟操作:等待指定的时间
- 条件判断:根据条件决定后续流程
- 外部调用:调用外部系统或服务
- 工作流动作:
- 序列执行(sequence):按顺序执行多个动作
- 延迟(delay):延迟指定时间执行
- 条件检查(check):根据条件决定是否继续执行
流程配置示例
充电流程示例
{
"id": "charging_process",
"name": "充电流程",
"version": "1.0",
"enabled": true,
"priority": 1,
"steps": [
{
"id": "step_a",
"name": "检查设备状态",
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "charger",
"point_id": "status",
"value": "check"
},
"condition": "true",
"validation": {
"type": "expression",
"rule": "status == 'ready'"
},
"rollback": {
"type": "no_op"
}
},
{
"id": "step_b",
"name": "启动充电",
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "charger",
"point_id": "start",
"value": "1"
},
"condition": "step_a.success",
"validation": {
"type": "expression",
"rule": "charging == 'started'"
},
"rollback": {
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "charger",
"point_id": "stop",
"value": "1"
}
}
},
{
"id": "step_c",
"name": "监控充电状态",
"type": "delay",
"params": {
"duration": "300s"
},
"condition": "step_b.success",
"validation": {
"type": "expression",
"rule": "battery_level >= 95"
},
"rollback": {
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "charger",
"point_id": "stop",
"value": "1"
}
}
},
{
"id": "step_d",
"name": "停止充电并通知",
"type": "sequence",
"params": {
"actions": [
{
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "charger",
"point_id": "stop",
"value": "1"
}
},
{
"type": "notification",
"params": {
"message": "充电完成",
"recipients": ["admin@example.com"]
}
}
]
},
"condition": "step_c.success",
"validation": {
"type": "expression",
"rule": "charging == 'stopped'"
},
"rollback": {
"type": "no_op"
}
}
]
}
批量控制示例
{
"id": "batch_control_process",
"name": "批量控制流程",
"version": "1.0",
"enabled": true,
"priority": 2,
"steps": [
{
"id": "step_a",
"name": "批量控制设备",
"type": "device_control",
"params": {
"targets": [
{
"channel_id": "ch1",
"device_id": "DeviceA",
"point_id": "p1",
"expression": "v.1"
},
{
"channel_id": "ch1",
"device_id": "DeviceB",
"point_id": "p1",
"expression": "v.4"
}
]
},
"condition": "true",
"validation": {
"type": "expression",
"rule": "all_devices_responded"
},
"rollback": {
"type": "device_control",
"params": {
"targets": [
{
"channel_id": "ch1",
"device_id": "DeviceA",
"point_id": "p1",
"value": "0"
},
{
"channel_id": "ch1",
"device_id": "DeviceB",
"point_id": "p1",
"value": "0"
}
]
}
}
}
]
}
执行管理
执行机制
场景联动流程的执行采用严格的顺序执行机制,与边缘计算框架的事件驱动模型集成:
- 流程启动:通过API调用或系统事件触发启动流程
- 步骤执行:按照定义的顺序依次执行每个步骤
- 条件检查:执行步骤前检查执行条件是否满足
- 执行动作:执行步骤定义的动作,支持设备控制、数据采集、计算操作等
- 结果校验:执行完成后进行成功条件校验
- 流程推进:校验通过后推进到下一步骤
- 流程完成:所有步骤执行完成后流程结束
执行状态
流程和步骤的执行状态包括:
- 流程状态:
- PENDING:流程等待启动
- RUNNING:流程正在执行
- SUCCESS:流程执行成功
- FAILED:流程执行失败
- ROLLING_BACK:流程正在回退
- ROLLED_BACK:流程已回退
- 步骤状态:
- PENDING:步骤等待执行
- RUNNING:步骤正在执行
- SUCCESS:步骤执行成功
- FAILED:步骤执行失败
- SKIPPED:步骤被跳过
- ROLLING_BACK:步骤正在回退
- ROLLED_BACK:步骤已回退
执行控制
- 手动启动:通过API调用手动启动流程
- 自动触发:通过事件或定时任务自动触发流程
- 暂停/恢复:支持流程的暂停和恢复
- 终止:支持强制终止正在执行的流程
- 优先级控制:根据流程优先级控制执行顺序
- 热更新:支持运行时流程配置的热更新,不中断系统运行
执行约束
- 单次流程执行时间可控,避免阻塞主数据通道
- 不允许直接操作外部系统,必须通过结果处理层
- 支持高频数据流下的稳定运行
校验机制
校验类型
支持多种校验类型:
- 表达式校验:使用表达式语言进行校验
- 支持数学运算:+、-、*、/、%、^、()
-
支持逻辑运算:&&、 、!、==、!=、>、<、>=、<= - 支持位操作:bitget、bitset、bitand、bitor
- 支持特殊语法:v.N(1-based索引的位访问)
- 示例:
battery_level >= 95 && charging_status == 'completed'
- 状态校验:检查设备或系统的状态
- 支持设备状态、服务状态、网络状态等
- 示例:检查设备是否处于正常运行状态
- 时间校验:检查执行时间是否在预期范围内
- 示例:步骤执行时间不超过30秒
- 数据校验:检查采集的数据是否符合要求
- 支持范围检查、格式检查、完整性检查
- 示例:采集的温度数据在正常范围内
- 自定义校验:使用自定义脚本进行校验
- 支持JavaScript、Python等脚本语言
- 示例:复杂的业务逻辑校验
校验配置
校验规则的配置包括:
- 校验类型:选择校验的类型
- 校验规则:定义具体的校验逻辑
- 重试机制:配置校验失败后的重试策略
- 超时设置:设置校验的超时时间
- 错误处理:定义校验失败后的处理方式
校验执行
校验的执行流程:
- 执行步骤:执行步骤定义的动作
- 等待结果:等待动作执行完成并获取结果
- 执行校验:根据配置的校验规则进行校验
- 处理结果:
- 校验通过:流程继续执行
- 校验失败:触发回退流程
表达式预处理
- 支持 v.N 语法转换为 bitget(v, N-1)
- 支持 v.bit.N 语法转换为 bitget(v, N-1)
回退功能
回退机制
当流程执行过程中出现以下情况时,系统会自动启动回退流程:
- 步骤执行失败
- 步骤校验未通过
- 流程被手动终止
- 系统异常
回退流程
回退流程的执行步骤:
- 检测失败:检测到步骤执行失败或校验未通过
- 启动回退:启动回退流程
- 执行回退:按照相反的顺序执行各步骤的回退操作
- 验证回退:验证回退操作是否成功
- 恢复状态:恢复到流程启动前的初始状态
回退策略
支持多种回退策略:
- 完全回退:回退所有已执行的步骤
- 部分回退:只回退指定的步骤
- 自定义回退:执行自定义的回退逻辑
- 无回退:不执行回退操作
回退操作类型
支持的回退操作类型:
- 设备控制:执行设备的控制操作
- 数据恢复:恢复被修改的数据
- 服务重启:重启相关服务
- 通知操作:发送通知或告警
- 无操作:不执行任何操作
异常处理
系统具备以下异常处理能力:
- 单步骤异常处理:
- 单步骤异常不影响其他步骤的回退
- 异常必须记录并可追溯
- 支持步骤自动降级或跳过(可配置)
- 回退操作异常处理:
- 回退操作失败时继续执行其他回退操作
- 回退失败必须记录并通知
- 支持回退操作的重试机制
- 系统异常处理:
- 系统重启后可恢复回退状态
- 支持断网情况下的本地回退
- 回退状态持久化存储
边缘适配
边缘环境特点
边缘计算环境具有以下特点:
- 资源有限:CPU、内存、存储等资源有限
- 网络不稳定:网络连接可能不稳定或带宽有限
- 环境恶劣:可能处于温度、湿度等环境条件恶劣的场所
- 离线运行:可能需要在离线或弱网环境下运行
边缘优化策略
针对边缘环境的优化策略:
- 资源优化:
- 轻量级执行引擎,单次流程执行时间控制在合理范围内
- 内存使用优化,减少内存占用
- 存储使用优化,合理管理存储资源
- CPU使用优化,避免资源争用
- 网络优化:
- 减少网络依赖,优先本地执行
- 本地缓存机制,支持断网续传
- 网络状态自适应,根据网络状况调整执行策略
- 数据压缩传输,减少带宽使用
- 可靠性优化:
- 本地执行优先,减少对云端依赖
- 故障自动恢复,确保流程可靠执行
- 状态持久化,系统重启后可恢复运行上下文
- 异常处理机制,确保系统稳定运行
- 性能优化:
- 执行计划优化,提高执行效率
- 并行处理,充分利用多核CPU
- 缓存策略,减少重复计算
- 资源调度,合理分配系统资源
边缘部署模式
支持多种边缘部署模式:
- 单机部署:在单个边缘设备上部署
- 分布式部署:在多个边缘设备上分布式部署
- 混合部署:边缘设备与云端协同部署
- 容器化部署:使用Docker等容器技术部署
与边缘计算框架的集成
场景联动系统与边缘计算框架的边缘适配保持一致:
- 数据源集成:复用边缘计算框架的数据源配置
- 规则引擎集成:利用边缘计算框架的规则执行能力
- 状态管理集成:使用边缘计算框架的状态管理子系统
- 监控系统集成:接入边缘计算框架的运维监控层
性能要求
- 单流程执行时间建议 < 100ms
- 支持高频数据流下稳定运行
- 资源占用可控,适应边缘设备资源限制
状态监控
监控内容
提供全面的状态监控功能,与边缘计算框架的运维监控层集成:
- 流程状态监控:
- 流程当前状态
- 流程执行进度
- 流程执行时间
- 流程执行历史
- 流程最近一次触发时间与结果
- 流程最近一次失败原因
- 步骤状态监控:
- 步骤当前状态
- 步骤执行结果
- 步骤执行时间
- 步骤校验结果
- 步骤回退操作执行情况
- 系统状态监控:
- 资源使用情况(CPU、内存、存储)
- 网络连接状态
- 服务运行状态
- 异常情况监控
- 系统健康状态
监控方式
支持多种监控方式:
- Web界面:通过Web界面查看监控信息,包括流程状态、执行历史、异常记录等
- API接口:通过API获取监控数据,支持第三方系统集成
- 日志系统:通过日志记录监控信息,支持日志过滤、搜索、导出
- 告警系统:通过告警系统通知异常情况,支持短信、邮件、企业微信、钉钉等
监控指标
关键监控指标包括:
- 执行成功率:流程和步骤的执行成功率
- 平均执行时间:流程和步骤的平均执行时间
- 回退率:流程回退的比率
- 资源使用率:CPU、内存、网络等资源的使用率
- 异常率:异常情况的发生比率
- 流程触发频率:流程被触发的频率
- 回退操作成功率:回退操作的成功率
历史数据
存储和管理历史数据:
- 执行记录:记录流程的执行历史,包括输入值、计算结果、输出动作结果
- 性能数据:记录系统的性能数据,如执行时间、资源使用情况
- 异常记录:记录系统的异常情况,包括错误类型、错误原因、发生时间
- 审计日志:记录系统的操作审计,如流程创建、修改、启停等操作
运维功能
提供完整的运维功能:
- 流程运行状态监控:实时查看流程的运行状态
- 流程测试功能:手动输入测试数据,预览流程执行结果
- 异常与错误日志查看:查看流程执行过程中的异常和错误
- 流程配置导入/导出:支持流程配置的导入和导出
- 系统健康状态检查:检查系统的健康状态和资源使用情况
典型应用场景
1. 充电流程管理
场景描述
电动汽车充电流程的自动化管理,包括设备检查、充电启动、充电监控和充电停止等步骤。
流程定义
- 步骤A:检查充电桩状态
- 执行条件:无
- 执行动作:检查充电桩是否处于就绪状态
- 校验规则:充电桩状态为就绪
- 回退操作:无
- 步骤B:启动充电
- 执行条件:步骤A成功
- 执行动作:发送启动充电命令
- 校验规则:充电状态为已启动
- 回退操作:发送停止充电命令
- 步骤C:监控充电状态
- 执行条件:步骤B成功
- 执行动作:等待充电完成
- 校验规则:电池电量达到95%
- 回退操作:发送停止充电命令
- 步骤D:停止充电并通知
- 执行条件:步骤C成功
- 执行动作:发送停止充电命令并通知用户
- 校验规则:充电状态为已停止
- 回退操作:无
应用价值
- 自动化:减少人工干预,提高充电效率
- 可靠性:确保充电流程的正确执行
- 安全性:在异常情况下自动停止充电
- 可追溯性:记录充电过程的详细信息
2. 设备启动序列
场景描述
工业设备的启动序列管理,包括设备预热、参数初始化、状态检查和正式运行等步骤。
流程定义
- 步骤A:设备预热
- 执行条件:无
- 执行动作:启动设备预热程序
- 校验规则:设备温度达到正常范围
- 回退操作:停止设备
- 步骤B:参数初始化
- 执行条件:步骤A成功
- 执行动作:初始化设备参数
- 校验规则:参数初始化成功
- 回退操作:恢复默认参数
- 步骤C:状态检查
- 执行条件:步骤B成功
- 执行动作:检查设备各部件状态
- 校验规则:所有部件状态正常
- 回退操作:停止设备
- 步骤D:正式运行
- 执行条件:步骤C成功
- 执行动作:启动设备正式运行
- 校验规则:设备运行状态正常
- 回退操作:停止设备
应用价值
- 标准化:确保设备启动流程的标准化
- 安全性:在启动过程中及时发现和处理异常
- 效率:提高设备启动的效率和可靠性
- 维护:为设备维护提供详细的启动记录
3. 安全检查流程
场景描述
工业场所的安全检查流程,包括环境检测、设备检查、人员检查和安全确认等步骤。
流程定义
- 步骤A:环境检测
- 执行条件:无
- 执行动作:检测环境参数(温度、湿度、气体浓度等)
- 校验规则:环境参数在安全范围内
- 回退操作:无
- 步骤B:设备检查
- 执行条件:步骤A成功
- 执行动作:检查设备安全状态
- 校验规则:设备状态安全
- 回退操作:无
- 步骤C:人员检查
- 执行条件:步骤B成功
- 执行动作:检查人员安全装备和状态
- 校验规则:人员状态安全
- 回退操作:无
- 步骤D:安全确认
- 执行条件:步骤C成功
- 执行动作:确认安全状态并记录
- 校验规则:所有检查项通过
- 回退操作:无
应用价值
- 安全性:确保场所和设备的安全状态
- 合规性:满足安全合规要求
- 可追溯性:记录安全检查的详细信息
- 效率:提高安全检查的效率和准确性
4. 环境监测与联动控制
场景描述
智能建筑的环境监测与联动控制,包括温度、湿度、光照等参数的监测和空调、照明等设备的联动控制。
流程定义
- 步骤A:环境数据采集
- 执行条件:无
- 执行动作:采集温度、湿度、光照等环境参数
- 校验规则:数据采集成功
- 回退操作:无
- 步骤B:数据分析与判断
- 执行条件:步骤A成功
- 执行动作:分析环境数据,判断是否需要调整
- 校验规则:分析完成
- 回退操作:无
- 步骤C:设备联动控制
- 执行条件:步骤B成功且需要调整
- 执行动作:控制空调、照明等设备
- 校验规则:设备控制成功
- 回退操作:恢复设备初始状态
- 步骤D:状态确认
- 执行条件:步骤C成功
- 执行动作:确认环境参数达到预期
- 校验规则:环境参数在合理范围内
- 回退操作:无
应用价值
- 节能:根据实际需要控制设备,减少能源消耗
- 舒适:保持环境参数在舒适范围内
- 自动化:减少人工干预,提高管理效率
- 数据驱动:基于实时数据进行决策
5. 设备故障检测与处理
场景描述
工业设备的故障检测与处理流程,包括设备状态监测、故障诊断、告警通知和故障处理等步骤。
流程定义
- 步骤A:设备状态监测
- 执行条件:无
- 执行动作:监测设备运行状态和关键参数
- 校验规则:数据采集成功
- 回退操作:无
- 步骤B:故障诊断
- 执行条件:步骤A成功
- 执行动作:分析设备状态数据,诊断是否存在故障
- 校验规则:诊断完成
- 回退操作:无
- 步骤C:告警通知
- 执行条件:步骤B成功且发现故障
- 执行动作:发送告警通知给相关人员
- 校验规则:告警发送成功
- 回退操作:无
- 步骤D:故障处理
- 执行条件:步骤C成功
- 执行动作:执行故障处理操作,如设备重启、参数调整等
- 校验规则:故障处理成功
- 回退操作:恢复设备初始状态
应用价值
- 及时发现:快速发现设备故障,减少停机时间
- 自动处理:自动执行故障处理操作,提高响应速度
- 减少损失:减少设备故障带来的生产损失
- 可追溯性:记录故障处理过程,为后续维护提供参考
配置指南
流程配置
1. 创建流程
- 访问管理界面:登录边缘网关管理界面
- 进入场景联动:导航到场景联动模块
- 点击创建流程:点击「创建流程」按钮
- 填写基本信息:输入流程ID、名称、版本、优先级等信息
- 添加步骤:点击「添加步骤」按钮,添加流程步骤
- 配置步骤:为每个步骤配置执行动作、条件和校验规则
- 保存流程:点击「保存」按钮保存流程
2. 编辑流程
- 选择流程:在流程列表中选择需要编辑的流程
- 点击编辑:点击「编辑」按钮
- 修改配置:修改流程的基本信息和步骤配置
- 保存修改:点击「保存」按钮保存修改
3. 启用/禁用流程
- 选择流程:在流程列表中选择需要操作的流程
- 点击启用/禁用:点击「启用」或「禁用」按钮
- 确认操作:确认操作结果
4. 导入/导出流程
- 导出流程:在流程列表中选择需要导出的流程,点击「导出」按钮
- 导入流程:点击「导入」按钮,选择流程配置文件进行导入
步骤配置
1. 设备控制步骤
- 类型:device_control
- 参数:
- 单点控制:
- channel_id:通道ID
- device_id:设备ID
- point_id:点位ID
- value:控制值
- expression:控制值表达式(可选)
- 批量控制:
- targets:目标设备列表
- channel_id:通道ID
- device_id:设备ID
- point_id:点位ID
- expression:控制值表达式
- targets:目标设备列表
- 单点控制:
2. 延迟步骤
- 类型:delay
- 参数:
- duration:延迟时间(如 “30s”、”5m”)
3. 条件判断步骤
- 类型:condition
- 参数:
- expression:条件表达式
- true_step:条件为真时执行的步骤
- false_step:条件为假时执行的步骤
4. 数据采集步骤
- 类型:data_collect
- 参数:
- channel_id:通道ID
- device_id:设备ID
- point_id:点位ID
- timeout:采集超时时间
5. 工作流动作步骤
- 序列执行:
- 类型:sequence
- 参数:
- actions:动作列表
- 延迟执行:
- 类型:delay
- 参数:
- duration:延迟时间
- 条件检查:
- 类型:check
- 参数:
- expression:条件表达式
- success_action:条件为真时执行的动作
- failure_action:条件为假时执行的动作
校验配置
1. 表达式校验
- 类型:expression
- 规则:表达式字符串
- 支持的语法:
- 数学运算:+、-、*、/、%、^、()
-
逻辑运算:&&、 、!、==、!=、>、<、>=、<= - 位操作:bitget、bitset、bitand、bitor
- 特殊语法:v.N(1-based索引的位访问)
- 示例:
battery_level >= 95 && charging_status == 'completed'
2. 状态校验
- 类型:status
- 规则:状态检查规则
- 示例:
device.status == 'normal'
3. 时间校验
- 类型:time
- 规则:时间检查规则
- 示例:
execution_time < 30s
与边缘计算框架的集成配置
场景联动系统与边缘计算框架共享以下配置:
- 数据源配置:复用边缘计算框架的数据源配置
- 输出通道配置:复用边缘计算框架的输出通道配置
- 告警通知配置:复用边缘计算框架的告警通知配置
- 状态管理配置:复用边缘计算框架的状态管理配置
故障排查
常见问题
1. 流程启动失败
问题描述:流程无法正常启动
可能原因:
- 流程未启用
- 流程配置错误
- 系统资源不足
- 依赖服务未运行
- 流程优先级设置不当
解决方案:
- 检查流程状态是否为启用
- 验证流程配置是否正确,特别是表达式语法
- 检查系统资源使用情况,确保有足够的CPU和内存
- 确保依赖服务正常运行
- 检查流程优先级设置是否合理
2. 步骤执行失败
问题描述:流程执行过程中某个步骤失败
可能原因:
- 设备连接失败
- 执行参数错误
- 执行条件不满足
- 设备响应超时
- 表达式计算错误
- 批量控制目标设备不可达
解决方案:
- 检查设备连接状态,确保设备在线
- 验证执行参数是否正确,特别是表达式语法
- 检查执行条件是否满足,可通过测试工具验证
- 调整设备响应超时设置
- 检查表达式计算是否正确,可使用表达式测试工具
- 检查批量控制目标设备是否都可达
3. 校验未通过
问题描述:步骤执行完成后校验未通过
可能原因:
- 校验规则设置错误
- 设备状态不符合预期
- 数据采集失败
- 执行结果与预期不符
- 位操作计算错误
解决方案:
- 检查校验规则是否正确,特别是表达式语法
- 验证设备状态是否正常,可通过实时数据查看
- 检查数据采集是否成功,查看采集日志
- 调整校验规则以符合实际情况
- 检查位操作计算是否正确,可使用位操作测试工具
4. 回退失败
问题描述:流程执行失败后回退操作失败
可能原因:
- 回退操作配置错误
- 设备连接失败
- 设备状态不支持回退
- 系统资源不足
- 回退操作超时
解决方案:
- 检查回退操作配置是否正确
- 检查设备连接状态,确保设备在线
- 验证设备是否支持回退操作
- 检查系统资源使用情况
- 调整回退操作超时设置
5. 系统异常
问题描述:场景联动系统出现异常
可能原因:
- 系统资源耗尽
- 网络连接中断
- 数据库异常
- 配置文件损坏
- 系统重启
解决方案:
- 检查系统资源使用情况,释放不必要的资源
- 检查网络连接状态,确保网络正常
- 检查数据库状态,确保数据库正常运行
- 验证配置文件是否完整,可通过导入/导出功能恢复
- 系统重启后,检查流程状态是否正确恢复
诊断工具
1. 流程日志
- 查看流程日志:在管理界面查看流程的执行日志
- 分析日志:分析日志中的错误信息和执行过程
- 导出日志:导出日志以便进一步分析
- 日志过滤:根据时间、流程ID、步骤ID等过滤日志
2. 系统监控
- 资源监控:监控系统的CPU、内存、磁盘使用情况
- 网络监控:监控网络连接和数据传输情况
- 服务监控:监控系统服务的运行状态
- 流程执行监控:监控流程的执行状态和性能指标
3. 测试工具
- 流程测试:使用测试工具测试流程的执行
- 步骤测试:单独测试流程中的各个步骤
- 模拟测试:使用模拟数据测试流程的执行
- 表达式测试:测试表达式的计算结果
- 位操作测试:测试位操作的计算结果
4. 运维工具
- 系统健康检查:检查系统的健康状态
- 配置验证:验证流程配置的正确性
- 状态恢复:恢复系统的运行状态
- 批量操作:批量管理多个流程
异常处理最佳实践
- 预防措施:
- 定期备份流程配置
- 定期检查系统资源使用情况
- 定期检查设备连接状态
- 定期测试流程执行
- 应急处理:
- 建立异常处理预案
- 明确异常处理流程和责任人
- 建立告警通知机制
- 定期演练异常处理流程
- 事后分析:
- 记录异常发生的时间、原因和处理过程
- 分析异常发生的根本原因
- 制定改进措施,防止类似异常再次发生
- 更新故障排查文档
附录
配置示例
完整流程配置示例
{
"id": "industrial_startup",
"name": "工业设备启动流程",
"version": "1.0",
"enabled": true,
"priority": 1,
"steps": [
{
"id": "preheat",
"name": "设备预热",
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "industrial_oven",
"point_id": "preheat",
"value": "1"
},
"condition": "true",
"validation": {
"type": "expression",
"rule": "temperature >= 200 && temperature <= 220"
},
"rollback": {
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "industrial_oven",
"point_id": "stop",
"value": "1"
}
}
},
{
"id": "initialize",
"name": "参数初始化",
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "industrial_oven",
"point_id": "initialize",
"value": "1"
},
"condition": "preheat.success",
"validation": {
"type": "expression",
"rule": "status == 'initialized'"
},
"rollback": {
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "industrial_oven",
"point_id": "reset",
"value": "1"
}
}
},
{
"id": "check",
"name": "状态检查",
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "industrial_oven",
"point_id": "check",
"value": "1"
},
"condition": "initialize.success",
"validation": {
"type": "expression",
"rule": "all_systems == 'ok'"
},
"rollback": {
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "industrial_oven",
"point_id": "stop",
"value": "1"
}
}
},
{
"id": "start",
"name": "正式运行",
"type": "sequence",
"params": {
"actions": [
{
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "industrial_oven",
"point_id": "start",
"value": "1"
}
},
{
"type": "notification",
"params": {
"message": "设备启动成功",
"recipients": ["admin@example.com"]
}
}
]
},
"condition": "check.success",
"validation": {
"type": "expression",
"rule": "running == 'true'"
},
"rollback": {
"type": "device_control",
"params": {
"channel_id": "ch1",
"device_id": "industrial_oven",
"point_id": "stop",
"value": "1"
}
}
}
]
}
表达式语法
支持的运算符
- 算术运算符:+、-、*、/、%、^、()
- 比较运算符:==、!=、>、<、>=、<=
-
逻辑运算符:&&、 、! -
位运算符:&、 、^、~、«、»
支持的函数
- 数学函数:abs、sqrt、sin、cos、tan、log、exp等
- 字符串函数:length、substring、contains、startsWith、endsWith等
- 时间函数:now、timestamp、format等
- 设备函数:getDeviceStatus、getPointValue等
- 位操作函数:bitget、bitset、bitand、bitor
表达式示例
temperature > 100 && humidity < 80getPointValue('ch1', 'dev1', 'temp') > 50length(device.name) > 0now() - timestamp > 30000bitget(value, 0) == 1// 检查第0位是否为1v.1 == 1// 检查第1位是否为1(1-based索引)
最佳实践
- 流程设计:
- 保持流程简洁明了,避免过于复杂的流程
- 合理划分步骤,每个步骤职责单一
- 为每个步骤设置明确的执行条件和校验规则
- 为关键步骤配置回退操作,确保系统稳定性
- 充分利用工作流动作,如序列执行、延迟和条件检查
- 性能优化:
- 减少步骤数量,优化执行顺序
- 使用批量控制功能,减少设备控制次数
- 合理设置超时时间,避免无限等待
- 优化表达式计算,避免复杂的计算逻辑
- 充分利用边缘计算框架的缓存机制
- 可靠性设计:
- 增加冗余步骤,提高系统可靠性
- 设置适当的重试机制,处理临时故障
- 配置合理的回退策略,确保系统在故障时能够恢复
- 定期备份流程配置,防止配置丢失
- 利用状态持久化,确保系统重启后能够恢复运行状态
- 安全设计:
- 限制流程的执行权限,防止未授权操作
- 加密敏感参数,保护敏感信息
- 记录详细的执行日志,便于审计和故障排查
- 定期审计流程执行情况,发现潜在安全问题
- 遵循最小权限原则,只授予必要的权限
- 边缘环境适配:
- 优化流程执行时间,适应边缘设备资源限制
- 减少网络依赖,优先本地执行
- 支持断网情况下的本地运行
- 合理管理内存和存储使用,避免资源耗尽
- 适应边缘环境的温度、湿度等恶劣条件
与边缘计算框架的集成最佳实践
- 数据源管理:
- 复用边缘计算框架的数据源配置
- 合理设置数据采集频率,平衡实时性和资源消耗
- 利用数据质量策略,过滤异常数据
- 规则引擎集成:
- 利用边缘计算框架的规则执行能力
- 合理设置规则优先级,确保关键流程优先执行
- 利用规则热更新能力,无需重启系统即可更新流程
- 状态管理:
- 利用边缘计算框架的状态管理子系统
- 合理设置状态持久化策略,确保状态可靠存储
- 利用状态恢复能力,确保系统重启后能够恢复运行状态
- 监控与运维:
- 接入边缘计算框架的运维监控层
- 利用监控指标,及时发现系统异常
- 利用日志系统,详细记录流程执行过程
- 利用告警系统,及时通知异常情况