ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从《天之痕》的石龟护甲,看 ABAP 如何守住业务数据与事务边界

从《天之痕》的石龟护甲,看 ABAP 如何守住业务数据与事务边界 两个人同时打开一张采购订单,一个改数量,一个改价格,页面上都显示保存成功,数据库里却只留下其中一人的修改。这类问题很适合拿「石龟护甲」来理解。业务程序真正需要保护的,往往就是正在被修改的订单、库存、付款状态,以及这些数据之间不能被破坏的关系。ABAP 里有与这种防御思路相近的开发机制,但没有一条名叫「石龟护甲」的语句,也没有统一增加系统防御力的开关。我们需要把游戏里的护甲拆成几个具体目标,防止无权限修改、防止并发覆盖、防止非法状态写入、防止失败操作留下半成品,以及防止外部请求重复产生业务结果。游戏版本也需要划清边界。检索到的同名手游资料,把「石龟护甲」列为于小雪的防御强化被动技能,但这不能直接当作经典单机版的技能参数。这里不把持续回合、强化比例或施法对象写成已确认的单机设定,而是围绕「提高承受冲击的能力」这个共同意象展开。技术上的对应关系是我们的类比,不是 SAP 官方术语。如果只选一个最贴近护甲的 ABAP 机制,我会选业务对象的并发保护。再向外扩展,权限校验、业务验证、事务管理和幂等设计共同构成一套保护体系。它们保护的部位不同,不能互相替代。拿订单修改来说,身份认证只能证明当前请求来自哪个账号,不能证明这个账号有权修改这张订单。授权检查回答的是另一件事,当前用户能否执行某种活动,能否访问某个公司代码或采购组织的数据。传统 ABAP 可以通过AUTHORITY-CHECK显式检查权限。这里的关键不是写上这条语句就算完成保护,而是检查对象、字段值和业务动作必须匹配。修改权限不能拿显示权限代替,公司代码也不能检查一个与实际订单无关的固定值。下面是一个简化的授权入口。Z_PO_GUARD是需要事先创建和配置的
返回列表