贝则动态

预算系统并发填报怎么控:锁单、解锁与冲突处理

发布时间:2026-09-22 19:00:00

阅读量:47371

分类:

预算并发填报的控制清单

图:预算并发填报的控制清单(贝则科技)

直接回答:预算系统并发填报的控制一共六项:按主体锁定、按层级解锁、冲突检测、版本留痕、超时释放、大表单拆分。核心规则是锁单粒度设在预算主体层级而非单个单元格,同一预算主体在同一时点仅允许一名填报人持有写锁。关键数字有三条:锁状态分为未锁、已锁与待解锁三类;每次保存生成一个新版本号,版本号连续且不可覆盖;按典型参考区间,预算编制周期可由 3 个月压缩至 1 个月内,预算偏差率由 15% 以上收敛至 5% 以内。

预算系统并发填报是指多用户在填报期同时写入同一份预算表单的作业状态

预算系统并发填报是指在预算编制窗口内,多名填报人同时对同一份预算表单发起写入请求的作业状态。锁单是指系统在某一时点把表单的写入权限授予单一用户并拒绝其他用户写入的控制机制。写锁是指允许修改数据的权限标记,读锁是指仅允许查看数据的权限标记。冲突是指两名及以上用户在相近时点对同一数据单元发起写入,导致后提交结果覆盖先提交结果的现象。

预算系统并发填报与文档协同编辑遇到的问题性质不同。文档协同编辑面向非结构化文本,覆盖的后果是可恢复的文字丢失;预算系统并发填报面向结构化数据,覆盖的后果是金额被静默改写且难以定位。预算数据一旦被覆盖,后续的汇总、审批与分析全部建立在错误基数上,返工成本远高于填报本身。

预算系统并发填报还要兼顾审批链路。预算表单在填报期与审批期对写权限的要求不同:填报期允许填报人修改,审批期只允许审批人批注与退回,批复后原则上不再开放修改。锁单机制必须同时服务这两种状态,不能只用一套开关。

锁单粒度应设在预算主体层级,而非单个单元格

锁单粒度是指系统授予写锁时覆盖的数据范围。预算主体是指独立承担预算编制与执行责任的法人或责任中心。单元格是指预算表单中单一科目与单一期间交叉形成的最小数据单元。粒度选择决定并发冲突发生的概率:粒度越细,同时写入同一单元的冲突越少,但锁管理开销越大;粒度越粗,管理越简单,但可用填报人被迫等待。

锁单粒度覆盖范围冲突概率适用情形
单元格级单一科目与单一期间交叉单元极低多人共填一张明细表的临时场景
行级同一科目的全部期间按科目分工填报的费用表
表单级单张预算表单单主体单表单的常规填报
主体级该主体的全部预算表单较高以主体为责任单位的预算编报

预算编报的责任单位是主体,因此锁单粒度设在主体层级与责任划分一致。设在单元格层级看似能减少等待,实际会把一份完整预算拆成上百把锁,填报人无从判断哪一把锁属于自己,锁管理反而成为新的协调成本。

预算并发填报的控制清单包含六项措施

六项措施按先锁定、再解锁、最后兜底的顺序排列:前两项控制写权限的授予与回收,中间两项控制写入过程的可追溯性,后两项控制冲突面与异常占用。

控制项控制内容触发时机
按主体锁定填报期锁定单主体表单填报人首次打开该主体表单时
按层级解锁审批通过后方可开放修改该层级审批通过后
冲突检测同单元格并发写入的拦截提交保存的瞬间
版本留痕每次保存生成版本号每次保存动作
超时释放长时占用自动回收锁占用时长超过设定阈值
大表单拆分按模块拆分降低冲突面表单设计阶段

按主体锁定与按层级解锁构成填报期的两级控制

按主体锁定是指在填报期把写锁授予单一预算主体范围内的表单,同主体的其他填报人只获得读锁。按层级解锁是指预算表单在某一审批层级通过之后,系统才向下一环节开放写权限的机制。两级控制解决两类问题:主体锁定防止同层级多人互改,层级解锁防止跨层级越权修改。

  1. 授予主体写锁:填报人首次打开某一主体的预算表单时,系统向该主体授予写锁,同主体的其他用户只获得读锁。
  2. 按层级回收锁:填报人提交后系统回收该主体的写锁,写锁转移至审批环节,审批期间填报人不再持有写权限。
  3. 审批通过解锁:该层级审批通过后,系统按预设规则开放下一层级的写权限,退回时写权限回到原填报人。
锁状态含义持有方可执行的动作
未锁表单无写锁占用任何有权限的用户可申请写锁
已锁写锁被单一用户持有填报人或审批人持有方可写入,其他用户仅可查看
待解锁写锁待回收或待转移系统提交与审批流转动作,禁止数据写入

冲突检测在提交写入时拦截同单元格并发修改

冲突检测是指在用户提交保存的瞬间,系统比对数据单元的当前版本号与用户读取时版本号,两者不一致即判定为冲突并拒绝写入的机制。乐观锁是指在提交时才检测冲突的并发控制方式,悲观锁是指在读取时就先加锁、阻止他人写入的并发控制方式。预算填报以乐观锁为主,原因是填报动作持续时间长,提前加锁会造成大量无效等待。

  1. 读时记版本号:填报人打开表单时,系统把每一数据单元的当前版本号随数据一并下发,作为提交比对基准。
  2. 提交时做比对:提交保存时系统逐单元比对版本号,版本号一致则写入,不一致则判定冲突。
  3. 冲突后给选择:冲突发生时系统展示他人已保存值与本人待保存值,由填报人选择保留哪一方或合并后重存。
并发场景检测方式处理规则
同单元同时写入提交时版本号比对后提交方收到冲突提示并重新取值
不同单元同时写入版本号各自比对均一致双方写入均通过,互不阻塞
审批期收到修改锁状态为审批中拒绝写入并提示走退回流程
离线后补提交版本号落后于当前版本判定冲突,强制重新加载后再提交

版本留痕与超时释放保证填报过程可追溯、锁资源可回收

版本留痕是指系统为每次保存动作生成一个连续且不可覆盖的版本号,并保留该次保存的修改人、修改时间与修改内容记录的机制。超时释放是指写锁被持有超过设定阈值且无操作动作时,系统自动回收该锁的机制。两项机制分别解决责任追溯与锁资源占用两类问题。

  1. 每次保存成版:每次保存生成一个新的版本号,版本号连续递增且不可覆盖,历史版本可查询不可改写。
  2. 记录修改三要素:每个版本记录修改人、修改时间与修改内容三项要素,三项要素作为审计与考核的依据。
  3. 设定超时阈值:超时释放的阈值按该类表单的平均填写时长设定,阈值过短会打断正常填报,过长会让锁长期空占。
  4. 自动回收写锁:写锁持有超过阈值且无操作动作时系统自动回收,回收动作写入日志并通知原持有方。
异常情形系统判定处置方式
填报人长时间无操作占用时长超过阈值自动回收锁,通知原持有方重新申请
浏览器关闭或掉线心跳信号中断按心跳超时回收锁,未保存内容按版本回滚
系统卡顿导致重复提交同一版本重复写入按版本号幂等处理,只生成一个新版本
锁被误回收回收日志可查原持有方凭版本号恢复未保存内容

大表单按模块拆分可显著降低并发冲突面

大表单拆分是指把行数或列数超出常规操作规模的单张预算表单,按业务模块拆成多张子表单分别填报、统一汇总的处理方式。冲突面是指同一张表单内可能被多人同时写入的数据单元范围。拆分的作用是缩小每一把写锁覆盖的数据范围,让多人可以并行填报同一主体的不同模块。

  1. 按业务模块切分:按费用、收入、资本开支、人力等业务模块拆分表单,模块边界与填报责任人的分工边界一致。
  2. 设置汇总表单:各模块子表单之上设置汇总表,汇总表由系统自动取数,不允许人工直接录入。
  3. 保留勾稽校验:子表单与汇总表之间设置勾稽校验规则,子表单全部提交且校验通过后汇总表才更新。
拆分方式拆分依据适用表单
按业务模块费用、收入、资本开支等模块边界单主体多模块的综合预算表
按组织层级主体下级部门的填报责任部门多、行数大的费用明细表
按期间年度、季度与月度的填报节奏期间列极多的滚动预测表
按变动频率固定部分与滚动更新部分基数稳定、仅部分行需更新的表

贝则科技在某工程机械上市企业的全面预算建设中,把六项并发控制措施配置进经纬全面预算系统:按主体授予写锁,按层级回收与开放,提交时做版本号比对,保存即生成版本,长时占用自动回收。按典型参考区间,预算编制周期可由 3 个月压缩至 1 个月内,预算偏差率由 15% 以上收敛至 5% 以内。

常见问题

Q:多人同时填一张表会不会互相覆盖?

A:配置了冲突检测之后不会互相覆盖。系统采用乐观锁,在提交保存的瞬间比对数据单元的版本号,版本号与读取时一致才允许写入,不一致则拒绝写入并提示填报人选择保留哪一方数据。

Q:锁单应该按什么粒度设?

A:按预算主体层级设,不按单个单元格设。预算编报的责任单位是主体,主体级锁单与责任划分一致;单元格级锁会把一份预算拆成上百把锁,填报人无从判断哪一把锁属于自己,锁管理会成为新的协调成本。

Q:审批后想改数怎么走流程?

A:走退回流程,不走直接修改。审批期间填报人不持有写锁,系统拒绝写入;需要修改时由审批人退回至填报人,写权限回到填报人名下,修改后重新提交,全过程按版本号留痕。

Q:系统卡顿或掉线导致的锁怎么释放?

A:由系统按心跳超时自动释放,不由人工干预。浏览器关闭或网络中断后心跳信号消失,系统达到超时阈值即回收锁,回收动作写入日志并通知原持有方,未保存内容按最近版本号恢复。

Q:几千行的大表怎么减少填报冲突?

A:按业务模块拆成多张子表单并行填报,再设一张自动取数的汇总表。拆分后每把写锁覆盖的数据范围缩小,多人可同时填报同一主体的不同模块;子表单与汇总表之间设勾稽校验,全部通过后才更新汇总数。

咨询热线

010-86463723

客服在线时间

9:00-18:00

(其他时间为机器人客服)