↓ 跳过正文

关于微观流程设计

作者
Hexin
在确定的逻辑与不确定的现实之间,做一名耐心的构建者。

“微观流程设计”通常指把一个宏观流程(如一个业务流程,系统功能或用户操作链路)拆解到可执行、可落地的最小步骤,并对每一步的输入、输出、责任、规划、异常进行精细化设计。

一、什么是微观流程设计
#

**概括:**把“事情怎么做”设计到“下一步不用再猜”的程度

关注点:

  • 每一步谁来做
  • 何时做
  • 输入是什么
  • 输出是什么
  • 失败怎么办
  • 是否可自动化/可复用

常用于:

  • 业务流程(审批、下单、结算)
  • 软件功能设计(按钮点击后的完整链路)
  • 系统交互设计(前后端/模块间)
  • 自动化、低代码、RPA场景

二、微观流程设计的6个核心要素
#

1.触发条件(Trigger)
#

  • 用户点击?
  • 定时任务?
  • 消息到达?
  • 状态变化?

明确流程为什么开始

2.输入(Input)
#

  • 必填数据
  • 可选数据
  • 默认值来源
  • 数据校验规则

不明确输入,流程一定会失控

3.处理步骤(Steps)
#

将“处理”拆成原子动作:

  • 判断
  • 计算
  • 调用
  • 存储
  • 通知

每一步最好满足:一句话能说明 + 不能再拆

4.输出(Output)
#

  • 返回给谁?
  • 同步/异步?
  • 数据结构?
  • 是否影响下一流程?

5.异常与分支(Exception & Branch)
#

必须明确:

  • 校验失败怎么办
  • 超时怎么办
  • 部分成功怎么办
  • 是否允许重试/回滚

微观流程设计里,异常比正常流程更重要

6.状态与边界(State)
#

  • 流程状态(Init/Processing/Done/Failed)
  • 幂等性
  • 是否可重复执行
  • 是否可中断/恢复

三、常用设计方法
#

方法1:逐步拆解法
#

先从一句话开始:”用户点击保存按钮“

不断追问:

  • 然后呢?
  • 需要什么数据?
  • 谁负责?
  • 失败怎么办?

直到拆解为类似以下:

1. 校验输入参数
2. 判断是否重复提交
3. 写入数据库
4. 提交事务
5. 返回结果

方法2:输入-处理-输出(IPO)表
#

对于每一个步骤,写清:

步骤———————输入————————处理———————-输出

校验——————表单数据——————–格式校验—————–校验结果

保存—————–校验通过数据——————写DB———————-ID

方法3:时序/流程图(适合复杂场景)

  • 泳道图(谁做)
  • 时序图(谁先谁后)
  • 状态机(状态变化)

四、一个软件场景的微观流程示例
#

功能:WPF中点击”开始处理“按钮

宏观流程:用户点击-> 处理数据 -> 显示结果

微观流程

1. UI层禁用按钮,显示 Loading
2. 校验当前状态是否允许处理
3. 收集界面参数
4. 调用业务服务
5. 服务校验参数合法性
6. 执行业务逻辑
7. 捕获异常并分类
8. 返回结果对象
9. UI 线程更新界面
10. 恢复按钮状态

五、误区
#

  1. 只画流程图,不写规则
  2. 步骤粒度忽大忽小
  3. 忽略异常路径
  4. 把”实现细节“和”流程“混在一起
  5. 微观流程写成了”伪代码“,却没明确责任边界

判断流程是否”够微观“

使用问题自检:这个步骤,交给另一个人/模块,他还会不会问我”然后呢?“ 如果会,说明还不够微观。