ERP业务知识–10-状态机设计

状态机——单据生命周期的管理方式

前面我们提到了很多”状态”:草稿、待审核、已审核、执行中、关闭……这些状态不是随意定义的,它们构成了一个状态机。理解状态机,是理解 ERP 业务逻辑的关键。

一、什么是状态机

状态机(State Machine) 是描述一个对象在其生命周期内所有可能状态,以及状态之间转换规则的模型。 以采购订单为例:
草稿 → 待审核 → 已审核 → 执行中 → 全部到货 → 关闭
每个状态代表单据的”当前身份”,每种转换代表一个”业务动作”。

二、AperBio ERP 各单据的状态机

2.1 生产订单状态机

创建(10) ──审核──▶ 已审核(20) ──开工──▶ 执行中(30)
    │                                        │
    ├──取消──────────────────────────────────▶ 取消(00)
    └──强制关闭─────────────────────────────▶ 关闭(90)

2.2 生产计划单/采购计划单状态机

草稿(10) ──送审──▶ 待审核(15) ──审核──▶ 已审核(20) ──关闭──▶ 关闭(90)
    │                        │
    ├──取消─────────────────┘
    └──驳回─────────────────┘

2.3 请购单状态机

草稿(10) ──送审──▶ 待审核(15) ──审核──▶ 待采购(20) ──生成PO──▶ 已采购(30) ──全部入库──▶ 关闭(90)
    │                        │
    ├──取消─────────────────┘
    └──驳回─────────────────┘

2.4 采购订单状态机

草稿(10) ──审核──▶ 已审核(20) ──执行──▶ 执行中(30) ──全部到货──▶ 全部到货(80) ──关闭──▶ 关闭(90)
    │                        │
    ├──取消─────────────────┘
    └──强制关闭─────────────▶ 关闭(90)

2.5 到货单状态机

草稿(10) ──审核──▶ 已审核(20) ──待送检(30) ──发起送检──▶ 已送检(40) ──关闭──▶ 关闭(90)
    │                        │
    ├──取消─────────────────┘
    └──拒收────────────────▶ 到货拒收单(16)

2.6 送检单状态机

草稿(10) ──审核──▶ 待检验(20) ──开始检验──▶ 检验中(30) ──完成检验──▶ 已检验(40) ──关闭──▶ 关闭(90)

2.7 检验单状态机

草稿(10) ──提交──▶ 待审核(15) ──审核──▶ 已审核(20) ──驱动下游──▶ 关闭(90)

2.8 入库单状态机

草稿(10) ──审核──▶ 已审核(20) ──记账──▶ 已记账(30) ──关闭──▶ 关闭(90)
    │
    └──退库冲销

2.9 不合格品单状态机

草稿(10) ──审核──▶ 已审核(20) ──处理──▶ 已处理(30) ──关闭──▶ 关闭(90)

2.10 退货单状态机

草稿(10) ──审核──▶ 已审核(20) ──已退货(30) ──关闭──▶ 关闭(90)

2.11 出库单状态机

草稿(10) ──审核──▶ 已审核(20) ──已出库(30) ──关闭──▶ 关闭(90)

三、状态机的设计原则

  1. 终结态不可逆:一旦进入关闭/取消状态,不可再执行任何操作
  2. 状态跳跃禁止:不允许从非当前状态直接跳转到目标状态
  3. 权限绑定:某些状态转换需要特定角色权限
  4. 后置动作:状态转换后自动执行的业务逻辑(如更新台账)

四、小结

状态机是 ERP 单据管理的核心模型。它确保了:
  • 业务流程的方向性(不能回退)
  • 操作的可控性(不同状态做不同事)
  • 数据的完整性(状态转换有完整记录)
下一篇:追溯链——从入库单反查到生产订单。
这是「ERP 业务知识系列」第 10 篇,系列共 15 篇。

发表评论