企业级WMS策略体系设计思想:从规则到系统的架构实践
本文基于实际项目经验,总结了一套适用于仓储管理系统(WMS)的策略体系设计方法论。这套方法论不仅适用于WMS,也可以推广到其他需要复杂规则引擎的企业系统中。
前言
在企业级软件开发中,我们经常面临这样的挑战:业务规则复杂、变化频繁、不同场景需要不同的处理方式。传统的硬编码方式已经无法满足业务快速变化的需求。
本文将分享一套完整的策略体系设计思想,帮助开发者构建灵活、可扩展、可维护的规则引擎系统。
一、策略体系的核心价值
1.1 将业务经验配置化
企业运营中积累了大量业务经验,例如:
- 什么时间段可以收货?
- 哪些物料需要优先处理?
- 什么情况下需要审批?
这些经验如果写死在代码中,每次调整都需要开发人员介入。通过策略体系,我们可以将这些经验转化为可配置的规则。
1.2 将人工判断系统化
传统模式下,很多决策依赖人工判断:
- 是否允许预约?
- 是否需要检验?
- 是否可以入库?
策略体系可以将这些判断逻辑系统化,减少人为错误,提高处理效率。
1.3 将业务差异策略化
不同仓库、不同供应商、不同物料可能需要不同的处理规则:
- A仓库夏季收货时间是8:00-18:00,冬季是8:30-17:30
- 供应商A的物料需要全检,供应商B的物料可以免检
- 关键物料必须按批次隔离存放
策略体系可以灵活处理这些业务差异。
1.4 将异常场景流程化
异常场景的处理往往最复杂:
- 非窗口期预约怎么办?
- 逾期到货如何处理?
- 库容不足时是否允许入库?
策略体系可以定义异常处理流程,包括审批、拦截、提醒等多种方式。
1.5 为智能化决策打基础
当策略规则、命中记录、异常记录、审批结果逐渐沉淀后,可以进一步支持:
- 供应商评价分析
- 仓库负荷优化
- 排队策略优化
- 缺料风险预测
二、策略分类设计
2.1 企业级策略
定义:公司统一规则,影响整个系统或多个业务单元。
特点:
- 影响范围大
- 通常是公司级统一规则
- 不是针对某个单一对象
- 一旦启用,会影响多个业务流程
示例:
- 是否启用供应商预约机制
- 是否启用批次管理
- 是否启用异常审批
- 是否启用供应商履约统计
2.2 资源策略
定义:针对具体资源(如仓库、库区、设备)的规则。
特点:
- 针对特定资源
- 影响该资源相关的所有业务
- 可以独立配置
示例:
- 仓库收货时间策略
- 库区存储规则
- 设备使用规则
2.3 对象策略
定义:针对业务对象(如供应商、物料、客户)的规则。
特点:
- 针对特定业务对象
- 影响该对象的所有业务
- 可以按对象类型配置
示例:
- 供应商供货策略
- 物料存储策略
- 客户信用策略
2.4 流程策略
定义:针对业务流程(如预约、到货、检验)的规则。
特点:
- 针对特定业务流程
- 影响流程的各个环节
- 可以按流程节点配置
示例:
- 预约审批策略
- 到货检验策略
- 入库上架策略
三、策略模型设计
3.1 策略的基本要素
一条完整的策略通常包含以下要素:
1 | |
3.2 策略的执行链路
策略在系统中的执行链路可以抽象为:
1 | |
3.3 策略的优先级设计
当多个策略同时命中时,需要明确优先级:
1 | |
例如:
- 生产紧急缺料 > 普通库容限制
- 供应商整改审批 > 常规预约规则
- 关键物料优先 > 普通物料排队
四、策略设计原则
4.1 策略要可分类
每条规则必须先知道属于哪类策略,否则后续无法落表、配置、维护和扩展。
4.2 策略要有作用对象
如果没有明确对象,系统无法判断规则作用在哪里。
4.3 策略要有触发环节
同一条规则,在不同环节的处理方式可能不同。例如”逾期”:
- 创建预约时发现逾期
- 到货确认时发现逾期
- 点收时发现逾期
- 检验完成时发现逾期
不同环节的处理方式可能完全不同。
4.4 策略要有触发条件
触发条件必须尽量明确。
不推荐:
1 | |
推荐:
1 | |
4.5 策略要有执行结果
命中策略后,系统必须知道做什么。常见执行结果包括:
- 允许/禁止
- 提醒/预警
- 标记异常
- 自动分配/排队
- 进入审批
- 变更状态
- 通知人员
- 记录日志
- 纳入统计
4.6 策略要有异常处理方式
如果规则不满足,需要明确处理方式:
- 不允许提交
- 允许暂存但不允许生效
- 允许提交但必须审批
- 允许继续流转但标记异常
- 转人工处理
4.7 策略要有优先级
多个策略可能同时命中,必须明确哪个策略优先。
4.8 策略要可追溯
建议所有关键策略命中都要留痕:
- 命中了哪条策略
- 为什么命中
- 系统做了什么动作
- 谁审批
- 审批结果是什么
- 是否影响统计
五、策略落地实践
5.1 第一阶段:收集业务规则
先让业务侧按统一模板输出规则,不急于开发。优先收集:
- 核心业务规则
- 异常处理规则
- 审批流程规则
- 统计报表规则
5.2 第二阶段:进行策略归类
技术侧拿到业务规则后,先判断归属:
- 已有模型可配置
- 已有模型需扩展字段
- 需要新增策略表
- 需要新增流程节点
- 需要接入审批流程
- 需要新增统计报表
5.3 第三阶段:形成策略矩阵
建议整理成策略矩阵:
| 策略名称 | 分类 | 对象 | 环节 | 条件 | 动作 | 审批 | 优先级 |
|---|---|---|---|---|---|---|---|
| 非窗口期预约审批 | 预约 | 预约单 | 提交预约 | 不在收货时间 | 进入审批 | 是 | 中 |
| 优先排队策略 | 排队 | 车辆 | 排队 | 紧急物料 | 优先排队 | 否 | 高 |
| 批次隔离存储 | 存储 | 物料 | 上架 | 批次管理 | 隔离分配 | 否 | 高 |
5.4 第四阶段:沉淀为系统配置和流程
最终把策略分成几种落地方式:
配置类
- 例如:收货时间、二维码有效期、是否启用排队
规则类
- 例如:优先排队、逾期判断、库容不足判断
流程类
- 例如:异常审批、检验流程、差异处理
状态类
- 例如:预约单状态、排队任务状态、收货状态
统计类
- 例如:逾期率、排队时长、异常次数
六、策略输出规范
6.1 业务侧输出规范
业务侧输出策略时,建议按以下模板:
1 | |
6.2 技术侧承接规范
技术侧拿到业务规则后,需要判断:
- 能不能配置?
- 要不要开发?
- 影响哪个流程?
- 是否需要审批?
- 状态怎么变化?
- 是否需要统计?
七、总结
策略体系设计的核心思想是:
- 抽象:将业务规则抽象为可配置的策略
- 分类:按业务领域和影响范围对策略分类
- 标准化:统一策略的输入输出格式
- 流程化:将策略执行嵌入业务流程
- 可追溯:记录策略执行过程和结果
这套设计思想不仅适用于WMS系统,也可以推广到其他需要复杂规则引擎的企业系统中,如:
- 订单管理系统
- 供应链管理系统
- 金融风控系统
- 人力资源管理系统
关键是要理解业务规则的本质,将其转化为可配置、可执行、可追溯的策略体系。