边缘计算场景联动手册

目录

  1. 概述
  2. 系统架构
  3. 流程定义
  4. 执行管理
  5. 校验机制
  6. 回退功能
  7. 边缘适配
  8. 状态监控
  9. 典型应用场景
  10. 配置指南
  11. 故障排查
  12. 附录

概述

边缘计算场景联动是一种基于边缘计算技术的流程自动化管理系统,它允许用户定义和执行包含多个步骤的业务流程。这种系统特别适用于需要严格顺序执行、状态校验和自动回退的场景,如充电流程管理、设备启动序列、安全检查流程等。

核心特性

  • 流程定义:支持创建包含多个步骤的串行执行流程
  • 顺序执行:确保步骤按预定顺序依次执行
  • 条件校验:每个步骤执行后进行成功条件校验
  • 自动回退:执行失败时自动启动逆向回退流程
  • 边缘优化:针对边缘环境优化执行效率和资源占用
  • 状态监控:提供实时流程状态监控和异常追踪

应用价值

  • 自动化:减少人工干预,提高操作效率
  • 可靠性:确保流程执行的一致性和正确性
  • 安全性:在异常情况下能够自动回退,避免系统处于不一致状态
  • 可追溯性:详细记录流程执行过程,便于问题分析和故障排查

系统架构

整体架构

边缘计算场景联动系统是边缘计算插件框架的重要组成部分,它与其他模块紧密集成,形成完整的边缘计算能力。

系统分层

场景联动系统遵循边缘计算插件框架的分层架构:

  1. 数据输入层:接收来自南向采集或北向订阅的数据流
  2. 数据调度层:管理流程的注册、启停和执行调度
  3. 流程执行层:执行场景联动流程的各个步骤
  4. 结果处理层:处理流程执行结果,触发相应动作
  5. 运维监控层:提供流程执行状态的监控和管理

与边缘计算框架的集成

场景联动系统与边缘计算框架的集成关系:

  • 数据源:复用边缘计算框架的数据源配置
  • 规则引擎:利用边缘计算框架的规则执行能力
  • 动作执行:使用边缘计算框架的输出动作能力
  • 状态管理:集成边缘计算框架的状态管理子系统
  • 监控系统:接入边缘计算框架的运维监控层

数据流

场景联动系统的数据流:

  1. 触发事件:通过API调用或系统事件触发流程启动
  2. 流程执行:按照定义的步骤顺序执行
  3. 数据处理:每个步骤执行相应的动作和校验
  4. 结果处理:处理执行结果,触发后续步骤或回退
  5. 状态更新:更新流程和步骤的状态
  6. 监控记录:记录执行过程和结果

流程定义

流程结构

一个完整的场景联动流程由以下部分组成:

  1. 流程基本信息
    • 流程ID:唯一标识符
    • 流程名称:流程的描述性名称
    • 流程版本:流程的版本号
    • 流程状态:启用/禁用
    • 优先级:流程执行的优先级
  2. 步骤定义
    • 步骤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"
            }
          ]
        }
      }
    }
  ]
}

执行管理

执行机制

场景联动流程的执行采用严格的顺序执行机制,与边缘计算框架的事件驱动模型集成:

  1. 流程启动:通过API调用或系统事件触发启动流程
  2. 步骤执行:按照定义的顺序依次执行每个步骤
  3. 条件检查:执行步骤前检查执行条件是否满足
  4. 执行动作:执行步骤定义的动作,支持设备控制、数据采集、计算操作等
  5. 结果校验:执行完成后进行成功条件校验
  6. 流程推进:校验通过后推进到下一步骤
  7. 流程完成:所有步骤执行完成后流程结束

执行状态

流程和步骤的执行状态包括:

  • 流程状态
    • PENDING:流程等待启动
    • RUNNING:流程正在执行
    • SUCCESS:流程执行成功
    • FAILED:流程执行失败
    • ROLLING_BACK:流程正在回退
    • ROLLED_BACK:流程已回退
  • 步骤状态
    • PENDING:步骤等待执行
    • RUNNING:步骤正在执行
    • SUCCESS:步骤执行成功
    • FAILED:步骤执行失败
    • SKIPPED:步骤被跳过
    • ROLLING_BACK:步骤正在回退
    • ROLLED_BACK:步骤已回退

执行控制

  • 手动启动:通过API调用手动启动流程
  • 自动触发:通过事件或定时任务自动触发流程
  • 暂停/恢复:支持流程的暂停和恢复
  • 终止:支持强制终止正在执行的流程
  • 优先级控制:根据流程优先级控制执行顺序
  • 热更新:支持运行时流程配置的热更新,不中断系统运行

执行约束

  • 单次流程执行时间可控,避免阻塞主数据通道
  • 不允许直接操作外部系统,必须通过结果处理层
  • 支持高频数据流下的稳定运行

校验机制

校验类型

支持多种校验类型:

  1. 表达式校验:使用表达式语言进行校验
    • 支持数学运算:+、-、*、/、%、^、()
    • 支持逻辑运算:&&、   、!、==、!=、>、<、>=、<=
    • 支持位操作:bitget、bitset、bitand、bitor
    • 支持特殊语法:v.N(1-based索引的位访问)
    • 示例:battery_level >= 95 && charging_status == 'completed'
  2. 状态校验:检查设备或系统的状态
    • 支持设备状态、服务状态、网络状态等
    • 示例:检查设备是否处于正常运行状态
  3. 时间校验:检查执行时间是否在预期范围内
    • 示例:步骤执行时间不超过30秒
  4. 数据校验:检查采集的数据是否符合要求
    • 支持范围检查、格式检查、完整性检查
    • 示例:采集的温度数据在正常范围内
  5. 自定义校验:使用自定义脚本进行校验
    • 支持JavaScript、Python等脚本语言
    • 示例:复杂的业务逻辑校验

校验配置

校验规则的配置包括:

  • 校验类型:选择校验的类型
  • 校验规则:定义具体的校验逻辑
  • 重试机制:配置校验失败后的重试策略
  • 超时设置:设置校验的超时时间
  • 错误处理:定义校验失败后的处理方式

校验执行

校验的执行流程:

  1. 执行步骤:执行步骤定义的动作
  2. 等待结果:等待动作执行完成并获取结果
  3. 执行校验:根据配置的校验规则进行校验
  4. 处理结果
    • 校验通过:流程继续执行
    • 校验失败:触发回退流程

表达式预处理

  • 支持 v.N 语法转换为 bitget(v, N-1)
  • 支持 v.bit.N 语法转换为 bitget(v, N-1)

回退功能

回退机制

当流程执行过程中出现以下情况时,系统会自动启动回退流程:

  • 步骤执行失败
  • 步骤校验未通过
  • 流程被手动终止
  • 系统异常

回退流程

回退流程的执行步骤:

  1. 检测失败:检测到步骤执行失败或校验未通过
  2. 启动回退:启动回退流程
  3. 执行回退:按照相反的顺序执行各步骤的回退操作
  4. 验证回退:验证回退操作是否成功
  5. 恢复状态:恢复到流程启动前的初始状态

回退策略

支持多种回退策略:

  1. 完全回退:回退所有已执行的步骤
  2. 部分回退:只回退指定的步骤
  3. 自定义回退:执行自定义的回退逻辑
  4. 无回退:不执行回退操作

回退操作类型

支持的回退操作类型:

  • 设备控制:执行设备的控制操作
  • 数据恢复:恢复被修改的数据
  • 服务重启:重启相关服务
  • 通知操作:发送通知或告警
  • 无操作:不执行任何操作

异常处理

系统具备以下异常处理能力:

  1. 单步骤异常处理
    • 单步骤异常不影响其他步骤的回退
    • 异常必须记录并可追溯
    • 支持步骤自动降级或跳过(可配置)
  2. 回退操作异常处理
    • 回退操作失败时继续执行其他回退操作
    • 回退失败必须记录并通知
    • 支持回退操作的重试机制
  3. 系统异常处理
    • 系统重启后可恢复回退状态
    • 支持断网情况下的本地回退
    • 回退状态持久化存储

边缘适配

边缘环境特点

边缘计算环境具有以下特点:

  • 资源有限:CPU、内存、存储等资源有限
  • 网络不稳定:网络连接可能不稳定或带宽有限
  • 环境恶劣:可能处于温度、湿度等环境条件恶劣的场所
  • 离线运行:可能需要在离线或弱网环境下运行

边缘优化策略

针对边缘环境的优化策略:

  1. 资源优化
    • 轻量级执行引擎,单次流程执行时间控制在合理范围内
    • 内存使用优化,减少内存占用
    • 存储使用优化,合理管理存储资源
    • CPU使用优化,避免资源争用
  2. 网络优化
    • 减少网络依赖,优先本地执行
    • 本地缓存机制,支持断网续传
    • 网络状态自适应,根据网络状况调整执行策略
    • 数据压缩传输,减少带宽使用
  3. 可靠性优化
    • 本地执行优先,减少对云端依赖
    • 故障自动恢复,确保流程可靠执行
    • 状态持久化,系统重启后可恢复运行上下文
    • 异常处理机制,确保系统稳定运行
  4. 性能优化
    • 执行计划优化,提高执行效率
    • 并行处理,充分利用多核CPU
    • 缓存策略,减少重复计算
    • 资源调度,合理分配系统资源

边缘部署模式

支持多种边缘部署模式:

  1. 单机部署:在单个边缘设备上部署
  2. 分布式部署:在多个边缘设备上分布式部署
  3. 混合部署:边缘设备与云端协同部署
  4. 容器化部署:使用Docker等容器技术部署

与边缘计算框架的集成

场景联动系统与边缘计算框架的边缘适配保持一致:

  • 数据源集成:复用边缘计算框架的数据源配置
  • 规则引擎集成:利用边缘计算框架的规则执行能力
  • 状态管理集成:使用边缘计算框架的状态管理子系统
  • 监控系统集成:接入边缘计算框架的运维监控层

性能要求

  • 单流程执行时间建议 < 100ms
  • 支持高频数据流下稳定运行
  • 资源占用可控,适应边缘设备资源限制

状态监控

监控内容

提供全面的状态监控功能,与边缘计算框架的运维监控层集成:

  1. 流程状态监控
    • 流程当前状态
    • 流程执行进度
    • 流程执行时间
    • 流程执行历史
    • 流程最近一次触发时间与结果
    • 流程最近一次失败原因
  2. 步骤状态监控
    • 步骤当前状态
    • 步骤执行结果
    • 步骤执行时间
    • 步骤校验结果
    • 步骤回退操作执行情况
  3. 系统状态监控
    • 资源使用情况(CPU、内存、存储)
    • 网络连接状态
    • 服务运行状态
    • 异常情况监控
    • 系统健康状态

监控方式

支持多种监控方式:

  1. Web界面:通过Web界面查看监控信息,包括流程状态、执行历史、异常记录等
  2. API接口:通过API获取监控数据,支持第三方系统集成
  3. 日志系统:通过日志记录监控信息,支持日志过滤、搜索、导出
  4. 告警系统:通过告警系统通知异常情况,支持短信、邮件、企业微信、钉钉等

监控指标

关键监控指标包括:

  • 执行成功率:流程和步骤的执行成功率
  • 平均执行时间:流程和步骤的平均执行时间
  • 回退率:流程回退的比率
  • 资源使用率:CPU、内存、网络等资源的使用率
  • 异常率:异常情况的发生比率
  • 流程触发频率:流程被触发的频率
  • 回退操作成功率:回退操作的成功率

历史数据

存储和管理历史数据:

  • 执行记录:记录流程的执行历史,包括输入值、计算结果、输出动作结果
  • 性能数据:记录系统的性能数据,如执行时间、资源使用情况
  • 异常记录:记录系统的异常情况,包括错误类型、错误原因、发生时间
  • 审计日志:记录系统的操作审计,如流程创建、修改、启停等操作

运维功能

提供完整的运维功能:

  1. 流程运行状态监控:实时查看流程的运行状态
  2. 流程测试功能:手动输入测试数据,预览流程执行结果
  3. 异常与错误日志查看:查看流程执行过程中的异常和错误
  4. 流程配置导入/导出:支持流程配置的导入和导出
  5. 系统健康状态检查:检查系统的健康状态和资源使用情况

典型应用场景

1. 充电流程管理

场景描述

电动汽车充电流程的自动化管理,包括设备检查、充电启动、充电监控和充电停止等步骤。

流程定义

  1. 步骤A:检查充电桩状态
    • 执行条件:无
    • 执行动作:检查充电桩是否处于就绪状态
    • 校验规则:充电桩状态为就绪
    • 回退操作:无
  2. 步骤B:启动充电
    • 执行条件:步骤A成功
    • 执行动作:发送启动充电命令
    • 校验规则:充电状态为已启动
    • 回退操作:发送停止充电命令
  3. 步骤C:监控充电状态
    • 执行条件:步骤B成功
    • 执行动作:等待充电完成
    • 校验规则:电池电量达到95%
    • 回退操作:发送停止充电命令
  4. 步骤D:停止充电并通知
    • 执行条件:步骤C成功
    • 执行动作:发送停止充电命令并通知用户
    • 校验规则:充电状态为已停止
    • 回退操作:无

应用价值

  • 自动化:减少人工干预,提高充电效率
  • 可靠性:确保充电流程的正确执行
  • 安全性:在异常情况下自动停止充电
  • 可追溯性:记录充电过程的详细信息

2. 设备启动序列

场景描述

工业设备的启动序列管理,包括设备预热、参数初始化、状态检查和正式运行等步骤。

流程定义

  1. 步骤A:设备预热
    • 执行条件:无
    • 执行动作:启动设备预热程序
    • 校验规则:设备温度达到正常范围
    • 回退操作:停止设备
  2. 步骤B:参数初始化
    • 执行条件:步骤A成功
    • 执行动作:初始化设备参数
    • 校验规则:参数初始化成功
    • 回退操作:恢复默认参数
  3. 步骤C:状态检查
    • 执行条件:步骤B成功
    • 执行动作:检查设备各部件状态
    • 校验规则:所有部件状态正常
    • 回退操作:停止设备
  4. 步骤D:正式运行
    • 执行条件:步骤C成功
    • 执行动作:启动设备正式运行
    • 校验规则:设备运行状态正常
    • 回退操作:停止设备

应用价值

  • 标准化:确保设备启动流程的标准化
  • 安全性:在启动过程中及时发现和处理异常
  • 效率:提高设备启动的效率和可靠性
  • 维护:为设备维护提供详细的启动记录

3. 安全检查流程

场景描述

工业场所的安全检查流程,包括环境检测、设备检查、人员检查和安全确认等步骤。

流程定义

  1. 步骤A:环境检测
    • 执行条件:无
    • 执行动作:检测环境参数(温度、湿度、气体浓度等)
    • 校验规则:环境参数在安全范围内
    • 回退操作:无
  2. 步骤B:设备检查
    • 执行条件:步骤A成功
    • 执行动作:检查设备安全状态
    • 校验规则:设备状态安全
    • 回退操作:无
  3. 步骤C:人员检查
    • 执行条件:步骤B成功
    • 执行动作:检查人员安全装备和状态
    • 校验规则:人员状态安全
    • 回退操作:无
  4. 步骤D:安全确认
    • 执行条件:步骤C成功
    • 执行动作:确认安全状态并记录
    • 校验规则:所有检查项通过
    • 回退操作:无

应用价值

  • 安全性:确保场所和设备的安全状态
  • 合规性:满足安全合规要求
  • 可追溯性:记录安全检查的详细信息
  • 效率:提高安全检查的效率和准确性

4. 环境监测与联动控制

场景描述

智能建筑的环境监测与联动控制,包括温度、湿度、光照等参数的监测和空调、照明等设备的联动控制。

流程定义

  1. 步骤A:环境数据采集
    • 执行条件:无
    • 执行动作:采集温度、湿度、光照等环境参数
    • 校验规则:数据采集成功
    • 回退操作:无
  2. 步骤B:数据分析与判断
    • 执行条件:步骤A成功
    • 执行动作:分析环境数据,判断是否需要调整
    • 校验规则:分析完成
    • 回退操作:无
  3. 步骤C:设备联动控制
    • 执行条件:步骤B成功且需要调整
    • 执行动作:控制空调、照明等设备
    • 校验规则:设备控制成功
    • 回退操作:恢复设备初始状态
  4. 步骤D:状态确认
    • 执行条件:步骤C成功
    • 执行动作:确认环境参数达到预期
    • 校验规则:环境参数在合理范围内
    • 回退操作:无

应用价值

  • 节能:根据实际需要控制设备,减少能源消耗
  • 舒适:保持环境参数在舒适范围内
  • 自动化:减少人工干预,提高管理效率
  • 数据驱动:基于实时数据进行决策

5. 设备故障检测与处理

场景描述

工业设备的故障检测与处理流程,包括设备状态监测、故障诊断、告警通知和故障处理等步骤。

流程定义

  1. 步骤A:设备状态监测
    • 执行条件:无
    • 执行动作:监测设备运行状态和关键参数
    • 校验规则:数据采集成功
    • 回退操作:无
  2. 步骤B:故障诊断
    • 执行条件:步骤A成功
    • 执行动作:分析设备状态数据,诊断是否存在故障
    • 校验规则:诊断完成
    • 回退操作:无
  3. 步骤C:告警通知
    • 执行条件:步骤B成功且发现故障
    • 执行动作:发送告警通知给相关人员
    • 校验规则:告警发送成功
    • 回退操作:无
  4. 步骤D:故障处理
    • 执行条件:步骤C成功
    • 执行动作:执行故障处理操作,如设备重启、参数调整等
    • 校验规则:故障处理成功
    • 回退操作:恢复设备初始状态

应用价值

  • 及时发现:快速发现设备故障,减少停机时间
  • 自动处理:自动执行故障处理操作,提高响应速度
  • 减少损失:减少设备故障带来的生产损失
  • 可追溯性:记录故障处理过程,为后续维护提供参考

配置指南

流程配置

1. 创建流程

  1. 访问管理界面:登录边缘网关管理界面
  2. 进入场景联动:导航到场景联动模块
  3. 点击创建流程:点击「创建流程」按钮
  4. 填写基本信息:输入流程ID、名称、版本、优先级等信息
  5. 添加步骤:点击「添加步骤」按钮,添加流程步骤
  6. 配置步骤:为每个步骤配置执行动作、条件和校验规则
  7. 保存流程:点击「保存」按钮保存流程

2. 编辑流程

  1. 选择流程:在流程列表中选择需要编辑的流程
  2. 点击编辑:点击「编辑」按钮
  3. 修改配置:修改流程的基本信息和步骤配置
  4. 保存修改:点击「保存」按钮保存修改

3. 启用/禁用流程

  1. 选择流程:在流程列表中选择需要操作的流程
  2. 点击启用/禁用:点击「启用」或「禁用」按钮
  3. 确认操作:确认操作结果

4. 导入/导出流程

  1. 导出流程:在流程列表中选择需要导出的流程,点击「导出」按钮
  2. 导入流程:点击「导入」按钮,选择流程配置文件进行导入

步骤配置

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:控制值表达式

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. 数据源配置:复用边缘计算框架的数据源配置
  2. 输出通道配置:复用边缘计算框架的输出通道配置
  3. 告警通知配置:复用边缘计算框架的告警通知配置
  4. 状态管理配置:复用边缘计算框架的状态管理配置

故障排查

常见问题

1. 流程启动失败

问题描述:流程无法正常启动

可能原因

  • 流程未启用
  • 流程配置错误
  • 系统资源不足
  • 依赖服务未运行
  • 流程优先级设置不当

解决方案

  • 检查流程状态是否为启用
  • 验证流程配置是否正确,特别是表达式语法
  • 检查系统资源使用情况,确保有足够的CPU和内存
  • 确保依赖服务正常运行
  • 检查流程优先级设置是否合理

2. 步骤执行失败

问题描述:流程执行过程中某个步骤失败

可能原因

  • 设备连接失败
  • 执行参数错误
  • 执行条件不满足
  • 设备响应超时
  • 表达式计算错误
  • 批量控制目标设备不可达

解决方案

  • 检查设备连接状态,确保设备在线
  • 验证执行参数是否正确,特别是表达式语法
  • 检查执行条件是否满足,可通过测试工具验证
  • 调整设备响应超时设置
  • 检查表达式计算是否正确,可使用表达式测试工具
  • 检查批量控制目标设备是否都可达

3. 校验未通过

问题描述:步骤执行完成后校验未通过

可能原因

  • 校验规则设置错误
  • 设备状态不符合预期
  • 数据采集失败
  • 执行结果与预期不符
  • 位操作计算错误

解决方案

  • 检查校验规则是否正确,特别是表达式语法
  • 验证设备状态是否正常,可通过实时数据查看
  • 检查数据采集是否成功,查看采集日志
  • 调整校验规则以符合实际情况
  • 检查位操作计算是否正确,可使用位操作测试工具

4. 回退失败

问题描述:流程执行失败后回退操作失败

可能原因

  • 回退操作配置错误
  • 设备连接失败
  • 设备状态不支持回退
  • 系统资源不足
  • 回退操作超时

解决方案

  • 检查回退操作配置是否正确
  • 检查设备连接状态,确保设备在线
  • 验证设备是否支持回退操作
  • 检查系统资源使用情况
  • 调整回退操作超时设置

5. 系统异常

问题描述:场景联动系统出现异常

可能原因

  • 系统资源耗尽
  • 网络连接中断
  • 数据库异常
  • 配置文件损坏
  • 系统重启

解决方案

  • 检查系统资源使用情况,释放不必要的资源
  • 检查网络连接状态,确保网络正常
  • 检查数据库状态,确保数据库正常运行
  • 验证配置文件是否完整,可通过导入/导出功能恢复
  • 系统重启后,检查流程状态是否正确恢复

诊断工具

1. 流程日志

  • 查看流程日志:在管理界面查看流程的执行日志
  • 分析日志:分析日志中的错误信息和执行过程
  • 导出日志:导出日志以便进一步分析
  • 日志过滤:根据时间、流程ID、步骤ID等过滤日志

2. 系统监控

  • 资源监控:监控系统的CPU、内存、磁盘使用情况
  • 网络监控:监控网络连接和数据传输情况
  • 服务监控:监控系统服务的运行状态
  • 流程执行监控:监控流程的执行状态和性能指标

3. 测试工具

  • 流程测试:使用测试工具测试流程的执行
  • 步骤测试:单独测试流程中的各个步骤
  • 模拟测试:使用模拟数据测试流程的执行
  • 表达式测试:测试表达式的计算结果
  • 位操作测试:测试位操作的计算结果

4. 运维工具

  • 系统健康检查:检查系统的健康状态
  • 配置验证:验证流程配置的正确性
  • 状态恢复:恢复系统的运行状态
  • 批量操作:批量管理多个流程

异常处理最佳实践

  1. 预防措施
    • 定期备份流程配置
    • 定期检查系统资源使用情况
    • 定期检查设备连接状态
    • 定期测试流程执行
  2. 应急处理
    • 建立异常处理预案
    • 明确异常处理流程和责任人
    • 建立告警通知机制
    • 定期演练异常处理流程
  3. 事后分析
    • 记录异常发生的时间、原因和处理过程
    • 分析异常发生的根本原因
    • 制定改进措施,防止类似异常再次发生
    • 更新故障排查文档

附录

配置示例

完整流程配置示例

{
  "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 < 80
  • getPointValue('ch1', 'dev1', 'temp') > 50
  • length(device.name) > 0
  • now() - timestamp > 30000
  • bitget(value, 0) == 1 // 检查第0位是否为1
  • v.1 == 1 // 检查第1位是否为1(1-based索引)

最佳实践

  1. 流程设计
    • 保持流程简洁明了,避免过于复杂的流程
    • 合理划分步骤,每个步骤职责单一
    • 为每个步骤设置明确的执行条件和校验规则
    • 为关键步骤配置回退操作,确保系统稳定性
    • 充分利用工作流动作,如序列执行、延迟和条件检查
  2. 性能优化
    • 减少步骤数量,优化执行顺序
    • 使用批量控制功能,减少设备控制次数
    • 合理设置超时时间,避免无限等待
    • 优化表达式计算,避免复杂的计算逻辑
    • 充分利用边缘计算框架的缓存机制
  3. 可靠性设计
    • 增加冗余步骤,提高系统可靠性
    • 设置适当的重试机制,处理临时故障
    • 配置合理的回退策略,确保系统在故障时能够恢复
    • 定期备份流程配置,防止配置丢失
    • 利用状态持久化,确保系统重启后能够恢复运行状态
  4. 安全设计
    • 限制流程的执行权限,防止未授权操作
    • 加密敏感参数,保护敏感信息
    • 记录详细的执行日志,便于审计和故障排查
    • 定期审计流程执行情况,发现潜在安全问题
    • 遵循最小权限原则,只授予必要的权限
  5. 边缘环境适配
    • 优化流程执行时间,适应边缘设备资源限制
    • 减少网络依赖,优先本地执行
    • 支持断网情况下的本地运行
    • 合理管理内存和存储使用,避免资源耗尽
    • 适应边缘环境的温度、湿度等恶劣条件

与边缘计算框架的集成最佳实践

  1. 数据源管理
    • 复用边缘计算框架的数据源配置
    • 合理设置数据采集频率,平衡实时性和资源消耗
    • 利用数据质量策略,过滤异常数据
  2. 规则引擎集成
    • 利用边缘计算框架的规则执行能力
    • 合理设置规则优先级,确保关键流程优先执行
    • 利用规则热更新能力,无需重启系统即可更新流程
  3. 状态管理
    • 利用边缘计算框架的状态管理子系统
    • 合理设置状态持久化策略,确保状态可靠存储
    • 利用状态恢复能力,确保系统重启后能够恢复运行状态
  4. 监控与运维
    • 接入边缘计算框架的运维监控层
    • 利用监控指标,及时发现系统异常
    • 利用日志系统,详细记录流程执行过程
    • 利用告警系统,及时通知异常情况