2026/10/21 20:44:13

ABAP 里有没有舍利子,谈谈永久提高业务容量的设计

ABAP 里有没有舍利子,谈谈永久提高业务容量的设计 《仙剑奇侠传 1》里的舍利子,效果是使角色的最大真气值增加 3 点。这个细节决定了类比的方向。舍利子并非在真气耗尽时补上一小口,而是让角色此后能够容纳更多真气。道具用掉了,增长留在角色身上。相关道具资料将其记为最大真气值增加 3 点,和恢复当前真气的药品属于两类效果。ABAP 没有一个名叫舍利子的内置语句、函数模块或系统对象。不过,业务系统完全可以实现同一种机制,让某个业务主体消耗一次性权益,永久提高一项可用容量。这个主体可以是客户、门店、项目或者企业自建应用中的账户。关键不在于给某个整数加上 3,而在于把增加后的上限保存下来,并确保同一份道具不能用两次、并发请求不会覆盖彼此、后续业务始终按新上限检查。拿企业应用中常见的审批额度来说,我们可能为每个项目保存一项自定义业务规则,规定同时最多可以有多少份待处理申请。项目原先的上限是 20 份,已占用 18 份。一次经授权的额度提升把上限改为 23 份,已占用数量仍然是 18 份,可用余量因此从 2 份变成 5 份。这个变化很接近舍利子。若只是把已占用数量从 18 份改成 15 份,相当于释放或清理现有申请,并没有提高上限。若把上限在程序运行时暂时设为 23,下一次请求又读回 20,也算不上永久提升。这个例子里的审批额度是我们自建业务对象的规则,不能理解成可以随意改写 SAP 标准审批能力或产品许可额度。业务容量、数据库资源和合同配额是三回事。增加一个业务字段的数值,不会给应用服务器增加工作进程,不会给 SAP HANA 增加内存,也不会改变 SAP BTP 服务实例的配额。游戏角色能够储存更多真气,对应到企业软件里,合理的对象是受到业务规则控制、由我们负责维护的容量。真正落地时,我会把状态拆开保存。capacity_limit