政务审批系统的状态机与权限设计:以证件借用归还流程为例

发布时间:2026/11/3 10:06:57
政务审批系统的状态机与权限设计:以证件借用归还流程为例

政务审批系统看起来是表单和流程,真正难的是状态、权限和审计。本文以证件借用归还流程为例,讨论如何把线下规则拆成可执行的状态机、审批路由和日志模型。

一、先定义状态,不要先画页面

证件借用归还流程至少包含这些状态:草稿、待单位审核、待审批、已批准、已借出、待归还、已归还、已逾期、已关闭、已作废。

每个状态要明确三件事:谁能进入、谁能操作、什么条件下流转。比如已借出状态只能由证件管理员确认归还,逾期状态可以由定时任务触发,但不能由申请人手动跳过。

状态机建议单独建模,不要把状态判断散落在页面按钮和接口里。这样后续增加撤回、退回、变更、续借等分支时,不会把流程改乱。

二、审批路由:按组织关系而不是写死人员

审批人不应写死在代码里。系统可以根据申请人所属部门、岗位、职级和隶属关系,匹配单位审核人和审批人。

  • 组织架构变化时,审批路由能随之调整;
  • 同一岗位多人时,支持指定经办人或按规则分派;
  • 审批人缺席时,有委托或转办机制;
  • 越级审批、重复审批、跳过前置节点要能被拦截。

路由规则最好配置化,并保留版本。否则每次组织调整都要改代码,维护成本会很高。

三、权限模型:功能权限、数据权限、字段权限分开

政务审批系统常见的权限问题,是把功能权限当成全部。实际上至少要分三层:

  • 功能权限:能不能发起、审核、审批、归还、导出;
  • 数据权限:能看本部门、本单位还是全量数据;
  • 字段权限:证件号码、联系方式等敏感字段是否可见、是否脱敏。

权限判断要放在服务端,不能只靠前端隐藏按钮。导出和打印要单独授权,并记录操作日志。

四、审计日志:记录状态变化而不是只记录登录

审计日志至少应覆盖:申请提交、审核意见、审批结果、证件借出、归还确认、逾期提醒、状态变更、导出打印。

一条有价值的日志,应该能回答谁在什么时间、对哪条申请、做了什么操作、操作前后的状态是什么。日志要能按人员、时间、申请编号和操作类型检索,关键记录不可随意删除。

五、异常处理:逾期、撤回、退回、变更

正常流程只是基础,异常分支才决定系统是否好用。设计时要提前考虑:

  • 申请人撤回后,已产生的审批记录如何处理;
  • 审批人退回后,是回到申请人还是回到上一节点;
  • 借用期限变更后,归还提醒如何重算;
  • 逾期后是自动关闭、自动升级提醒,还是转人工处理;
  • 证件遗失、换发、注销等状态如何与借用流程关联。

这些分支不要等到上线后再补,否则很容易出现状态不一致和历史数据无法追溯的问题。

六、接口与数据一致性

如果系统需要和组织架构、统一身份、消息通知或证照台账对接,要明确接口的幂等、重试、超时和补偿机制。

状态流转建议使用事务或事件机制,避免出现审批已通过但台账未更新、归还已确认但状态未关闭的情况。关键接口要有日志和告警,便于排查。

七、落地建议

  • 先用状态图把业务讲清楚,再进入页面和接口设计。
  • 把审批路由、权限和提醒规则做成配置,减少后续改代码。
  • 用真实历史数据做一次状态迁移演练,检查异常分支。
  • 上线前验证权限越权、重复提交、撤回退回、逾期提醒和日志检索。

政务审批系统的核心不是把纸质表单电子化,而是把规则、权限和责任边界写进状态和日志。状态设计清楚了,页面和接口才不会反复返工。