交互流程描述方法:流程图符号规范、泳道图与状态机
交互流程描述是将设计意图转化为可执行、可评审结构的关键技能。本章聚焦三种核心描述方法:标准化流程图符号提供通用视觉语言,泳道图明确角色职责与交接,状态机刻画对象连续状态变化。掌握这三类方法能覆盖绝大多数交互场景的描述需求。
适用场景
| 方法 | 典型场景 | 说明 |
|---|---|---|
| 流程图(通用符号) | 线性/分支/循环流程 | 注册、登录、下单等确定性流程 |
| 泳道图 | 多角色协作流程 | 订单审批、客服转接、跨系统对接 |
| 状态机 | 有限状态变化 | 订单状态、用户账户状态、任务进度 |
前置条件
- 已确定描述范围和粒度(页面级 / 任务级 / 原子操作级)。
- 团队已对齐符号基本含义,避免自创符号。
- 具备绘图工具(Figma / Draw.io / Mermaid 等)或模板。
- 交互需求文档已有明确的功能列表和用户角色定义。
操作步骤
4.1 标准化流程图符号
- 选定起始与终止 – 使用圆角矩形(终端符)标记开始和结束。
- 绘制操作步骤 – 矩形(处理框)表示原子操作或页面。
- 判断与分支 – 菱形(决策符)表示条件判断,每个出口标注“是/否”或结果。
- 连接顺流 – 箭头线表示流转方向,避免交叉或远距离跨越。
- 合并与循环 – 使用圆形(连接符)跨页跳转;回环箭头表示循环或重试。
4.2 泳道图
- 定义角色泳道 – 每一列或行代表一个角色 / 系统。泳道标题明确角色名称。
- 绘制角色内的活动 – 在对应泳道内放置矩形处理框,每个活动只能属于一个角色。
- 标注角色间交接 – 箭头跨越泳道时附加消息或数据标签,注明协议(HTTP / 消息队列 / 文件等)。
- 突出关键路径 – 用高亮或粗细区分主流程和异常分支。
4.3 状态机描述
- 枚举所有状态 – 列出对象可能经历的有限状态(如待支付、已支付、已取消)。
- 定义状态转移 – 每一条转移需标注触发事件和动作(如“支付成功 → 已支付”)。
- 识别初始与终态 – 使用实心圆表示初始状态,双层圆表示结束状态。
- 检查状态完整性与互斥性 – 确保没有遗漏状态且同一时刻不冲突。
输入输出物
| 输入物 | 来源 | 输出物 | 去向 |
|---|---|---|---|
| 功能清单 | PRD / 产品需求文档 | 流程图 / 泳道图 / 状态图 | 评审会议、开发任务 |
| 用户角色定义 | 用户画像 / 场景分析 | 泳道图角色划分结果 | 交互设计稿 |
| 对象状态范围 | 业务流程文档 | 状态转移表 / 状态机图 | 单元测试用例 |
责任边界
- 交互设计师 – 选择正确的描述方法、绘制主流程、维护符号规范一致性。
- 产品经理 – 提供前置条件、确认角色划分与状态定义。
- 开发/测试 – 基于图表开展实现与用例编写,反馈描述歧义或遗漏。
- 评审主持人 – 组织逐节点评审,重点检查跨泳道交互和状态转移条件。
记录材料
| 材料名称 | 格式 | 内容要求 | 保存位置 | 责任方 |
|---|---|---|---|---|
| 流程图符号对照表 | .pdf / 内联表格 | 列出项目中使用的所有符号与含义 | 设计库 / 项目 wiki | 交互设计师 |
| 泳道图完整版本 | .svg / .drawio | 包含所有角色、活动、跨泳道交互 | 版本控制仓库 | 交互设计师 |
| 状态机定义表 | .csv / .md | 状态、触发事件、动作、前置条件 | 项目文档目录 | 交互设计师 |
| 评审签到与决议 | .xlsx / .docx | 参加人、已通过节点、待修改项列表 | 会议记录夹 | 产品经理 |
异常处理
| 异常现象 | 可能原因 | 处理措施 | 预防策略 |
|---|---|---|---|
| 流程图箭头交叉拥堵 | 未使用连接符 / 布局不合理 | 拆分子图,增加跨页连接符 | 提前规划绘图方向(从上到下或从左到右) |
| 泳道图中某活动归属争议 | 角色定义模糊或活动跨越多个角色 | 细分活动粒度或拆分为两步 | 评审前先与相关角色确认权责 |
| 状态机遗漏关键状态 | 需求分析未覆盖 | 基于业务流程补充缺失状态,新增转移线 | 枚举所有可能的外部事件和内部超时 |
| 评审时参与者对符号理解不一致 | 缺少符号规范基线 | 暂停评审,先对齐符号对照表 | 项目初期建立并发布符号规范文档 |
验收标准
- 符号使用完全对齐项目内定义的符号对照表,无自创或歧义符号。
- 泳道图中每个活动有且仅有一个所属角色,跨泳道箭头附带可读的交互描述。
- 状态机中初始状态、每个中间态与终态均已定义;转移线上注明触发事件与动作。
- 所有图表示例附带创建日期、版本号、作者姓名。
- 评审记录中无“符号不清楚”“角色不明”“状态遗漏”类遗留问题。
最佳实践提示: 先使用“流程图”快速勾勒主路径,再将其放入“泳道图”核对角色职责,最后用“状态机”校验对象生命周期。三种方法配合使用可从不同维度发现交互盲区。
常见陷阱: 状态机常被误用作“活动图”。状态机描述的是对象状态变化,而非“活动步骤”。例如“用户点击按钮”是活动,对应的事件是“单击按钮”,而不是“状态”。务必区分“状态”与“动作”。
模板示例:泳道图字段定义
以下为泳道图描述字段的推荐表格格式,用于在文档中直接定义每一跨泳道交互:
| 跨泳道交互编号 | 源泳道 | 目标泳道 | 交互内容 | 触发条件 | 返回消息 / 异常处理 |
|----------------|----------|----------|------------------------------|----------------|---------------------|
| LN-01 | 用户端 | 服务端 | POST /api/payment | 用户点击“支付” | 200:支付成功/400:余额不足 |
| LN-02 | 服务端 | 结算系统 | 消息队列: request.payment | 接收到LN-01请求 | 确认收到 + 错误重试策略 |
| LN-03 | 结算系统 | 服务端 | 消息队列: response.payment | 处理完成 | 同步状态机转移 |
将此类表格附在泳道图旁,可消除描述歧义,成为开发与测试的直接依据。状态机描述的字段可参考 状态 → 触发事件 → 前置条件 → 后置动作 → 下一个状态 列结构。