2. 流程建模符号与规范约定
适用场景
本章定义的符号与规范适用于以下场景:
- IoT 设备与云端交互流程的图形化建模,包括数据上报、命令下发、OTA 升级、设备注册与鉴权等核心流程。
- 跨团队(嵌入式、云端平台、SaaS 应用)协作时,使用统一建模语言对齐流程逻辑。
- 流程文档化与自动化测试用例生成,需从流程图直接推导验收条件。
- 评审与变更管理环节,确保所有参与者对符号语义理解一致。
前置条件
- 已完成 第1章 流程建模环境搭建,安装并配置好流程建模工具(如 Draw.io、Camunda Modeler 或 PlantUML)。
- 团队成员已约定使用本章定义的 BPMN 简易子集与状态机图元素,避免使用未授权的扩展符号。
- 已明确建模目标:当前流程应覆盖从设备侧触发到云端响应确认的完整闭环。
操作步骤
- 选取符号集合 – 根据流程类型选择对应符号体系:
- 数据上报 / 命令下发 → 使用 BPMN 简易子集
- 设备状态管理(如激活、离线、OTA) → 使用状态机图元素
- 决策分支、超时重试 → 结合标准流程图符号
- 绘制流程骨架 – 使用开始事件/初始状态作为起点,结束事件/最终状态作为终点,中间插入任务/状态节点。
- 添加网关或判断 – 在需要分支合并处使用 BPMN 排他网关或标准流程图菱形判断。
- 标注连接线 – 带箭头的实线表示顺序流,虚线表示消息流或事件触发,并在线上标注触发条件(如“超时 30s”或“响应码 200”)。
- 校验符号一致性 – 使用下方表格检查所有符号是否符合规范约定,修正非标准用法。
输入与输出物
| 类别 | 输入物 | 输出物 |
|---|---|---|
| 标准流程图 | 流程需求文档(含业务规则) | 标准流程图(.png / .svg / .bpmn) |
| BPMN 简易子集 | 参与角色列表、事件触发条件 | BPMN 协作图(含泳道) |
| 状态机图 | 设备生命周期状态定义、迁移事件表 | 状态机图(含初始/最终状态) |
| 符号规范自查表 | 建模工具符号库配置 | 完成自查签字的规范检查单 |
责任边界
- 流程建模师:负责选择正确的符号体系,保证图中所有节点与线型符合本章约定。
- 业务分析师:确认流程语义(如判断条件、事件类型)是否准确反映真实业务逻辑。
- 开发代表(嵌入式/云端):验证建模结果能否直接对应到代码实现或配置定义。
- QA 工程师:从流程图中提取测试路径,审核分支覆盖是否完整。
记录材料
| 材料名称 | 格式 | 存储位置 | 保管人 |
|---|---|---|---|
| 符号规范说明文档 | .md / .pdf | 项目文档库 /docs/spec/ | 流程建模师 |
| 符号自查检查单 | .xlsx / .csv | 项目文档库 /docs/checklist/ | QA 工程师 |
| 历史版本流程图 | .svg | Git 仓库 /diagrams/ 目录 | 全团队 |
异常处理
常见符号误用与纠正
- 误将 BPMN 排他网关画成标准流程图菱形 – 两者语义相似,但 BPMN 排他网关默认不包含业务逻辑判断文本,需在网关上标注条件表达式。
- 状态机图中迁移线上缺少事件标签 – 必须标注触发事件(如 MQTT DISCONNECT、attribute_change),否则迁移不可达。
- 使用 BPMN 消息流代替关联线连接状态机图元素 – 状态机图内仅使用实线迁移箭头,不使用虚线消息流。
- 起点/终点符号重复 – 每个流程或状态机图只允许一个初始状态/开始事件和一个最终状态/结束事件,多起点必须合并。
工具级异常处理 – 若建模工具不支持 BPMN 简易子集所有元素(如忽略事件定义),应使用注释框说明,并在图外附加文字规范。
验收标准
- 流程图中的所有节点均可在下方 规范约定对照表 中找到对应符号,无自定义或模糊图形。
- 每个分支/判断节点均有明确的条件标签,且条件覆盖所有业务可能。
- 状态机图中每个迁移线都标注了触发事件或超时条件,且迁移方向单向正确。
- 输出文件命名遵循
项目名_流程名_版本号.svg,并存放在指定 Git 目录。 - 符号自查检查单所有项为 通过,并由至少两人签字确认。
规范约定对照表 – 以下表格列出了本章强制使用的符号及其语义,建模过程中应随时对照。
| 符号体系 | 图形 | 名称 | 描述 |
|---|---|---|---|
| 标准流程图 | 圆角矩形 | 开始 / 结束 | 流程起点或终点,仅能出现一次 |
| 矩形 | 处理 / 任务 | 执行的具体操作,如“解析消息”“更新影子属性” | |
| 菱形 | 判断 | 决策点,有两条及以上输出线,线上标条件 | |
| BPMN 简易子集 | 圆 | 开始事件 | 流程触发(消息、时间、条件) |
| 圆角矩形(带加号) | 任务 | 需人机执行的工作,可细化子流程 | |
| 菱形(内部 ×) | 排他网关 | 仅选择一个分支执行 | |
| 粗圆(双线) | 结束事件 | 流程终止 | |
| 状态机图 | 圆角矩形 | 状态 | 设备所处的稳定阶段,如“在线”“OTA 下载中” |
| 实线箭头 + 事件标签 | 迁移 | 从一个状态到另一个状态,附触发条件 | |
| 实心圆 → 空心圆 | 初始状态 / 最终状态 | 生命周期起点与终点 |
什么时候选择哪种符号? – 以下对比可辅助决策。
| 流程特征 | 推荐符号体系 | 原因 |
|---|---|---|
| 设备注册、数据上报等线性顺序流程 | 标准流程图 / BPMN 简易子集 | 易于表达顺序步骤,判断分支清晰 |
| 涉及多个参与者(设备、云端、用户) | BPMN 简易子集 + 泳道 | 泳道能直观区分责任主体 |
| 设备生命周期状态切换(如在线→离线→固件升级) | 状态机图 | 适合表达状态稳定、迁移条件明确的长周期行为 |
| 同时包含业务分支和设备状态变化 | 混合(主流程用 BPMN,内部调用状态机) | 通过“子流程”元素或状态引用框链接两种图 |