
为什么审批流程总在开发完成后才暴露问题
很多企业在做软件定制开发时,需求文档里只写了“提交审批”“领导审批通过”这样简单的描述,实际业务中却存在部门负责人、分管领导、财务、总经理等多个审批角色,不同金额、不同业务类型的审批路径也不一样。开发人员按照简化后的需求实现,上线后业务部门发现流程走不通,只能临时改代码或者线下补签,系统反而成了负担。
审批流程不是简单的线性节点,它涉及角色权限、条件分支、会签或签、驳回后重新提交等多个维度。如果在需求阶段没有把这些规则明确下来,开发阶段就只能靠猜测,测试阶段也很难覆盖全部场景,最终上线后问题集中爆发。
先把审批角色和权限边界说清楚
理清审批流程的第一步,是把参与审批的角色全部列出来,并明确每个角色在流程中的权限。角色不是按人名来定,而是按岗位职责来定。例如“部门经理”“财务审核”“总经理”都是角色,同一个人可能同时担任多个角色,但权限要分开定义。
在需求梳理时,可以做一个简单的表格,列出每个角色能看到的字段、能执行的操作(同意、驳回、转交、加签)、以及操作后流程的走向。特别要注意驳回后的处理方式:是驳回到发起人重新提交,还是驳回到上一节点修改,还是直接终止流程。这些细节如果不写清楚,开发人员往往会选择最简单的实现方式,后续调整成本很高。
用条件分支描述审批路径
多角色审批流程中,最常见的需求是根据业务条件走不同的审批路径。例如:金额小于5000元的报销单,部门经理审批即可;金额在5000到20000元之间,需要财务审核;超过20000元,还需要总经理审批。这类规则在需求阶段必须用明确的条件表达式描述出来,不能只写“根据金额走不同流程”。
条件分支可能涉及多个字段的组合,比如金额、费用类型、部门、项目等。建议在需求文档中用决策表或流程图的方式,把所有可能的分支列出来,并标注每个分支的审批节点和顺序。开发人员可以据此设计流程引擎,测试人员也能针对每个分支编写测试用例。
例外情况要提前约定处理方式
审批流程中总会出现例外情况,比如审批人不在岗、审批超时、发起人撤回、审批人驳回后发起人不再提交等。这些情况如果不在需求阶段约定好,系统上线后就会陷入“不知道该怎么办”的尴尬。
对于审批人不在岗,可以约定代理审批规则,比如设置代理人或自动转交上级。对于审批超时,可以约定自动提醒、自动通过或自动驳回。对于撤回和驳回后的再次提交,要明确是否需要重新走完整流程,还是从驳回节点继续。这些规则需要在需求文档中逐条列出,并让业务部门确认。
把审批流程画出来,而不是只写文字
文字描述容易产生歧义,流程图能直观展示审批节点和分支。在需求阶段,建议用流程图工具把每个审批流程画出来,标注每个节点的角色、操作、条件分支和异常处理。流程图可以随着需求讨论不断修改,最终作为开发依据和测试依据。
流程图不需要画得非常复杂,但必须覆盖所有正常流程和异常流程。对于会签和或签,要在图中明确区分:会签是所有人都要同意才能通过,或签是任意一人同意即可通过。这些细节直接影响流程引擎的实现方式。
审批流程理清楚之后,后续的开发、测试、上线都会顺畅很多。企业做软件定制开发,前期多花一些时间在流程梳理上,远比上线后反复修改要划算。