ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

阴阳镜照进 ABAP,为什么同一条规则有时扣分,有时反而加分

阴阳镜照进 ABAP,为什么同一条规则有时扣分,有时反而加分

销售部门正在核对一批海外子公司的订单。总部希望把有异常的订单标红,尽快交给人工处理。规则看起来很简单,订单金额偏差超过阈值,就增加风险分。可开发做到一半,业务人员指出一个问题,促销补贴形成的金额偏差,在某些订单类型下是正常的;把它当成风险,反而会挡住本该放行的订单。同一个偏差值,落在不同的业务属性上,结果可能朝相反方向走。

这让我想到《天之痕》里的阴阳镜。阴阳镜发动「天雷」时,结果取决于轮盘给出的阴阳属性与敌人的阴阳属性。属性相反,敌人受到伤害;属性相同,敌人的生命反而恢复。它有趣的地方并非单纯随机,而是一次操作的效果由两边属性共同决定。搬到 ABAP 的业务语境里,我们可以把它理解为,一条信号本身并不决定处理结果,信号与业务对象的状态、规则版本和执行时点结合,才产生最终效果。

ABAP 没有一件名叫阴阳镜的内置法宝,也没有一个标准语句会自动把「攻击」翻转成「治疗」。不过,ABAP 的条件分派、面向对象封装、RAP 行为实现,再加上 SAP HANA 上的数据筛选,完全能够构造一个类似的机制。这个类比真正有用的地方,是提醒我们把「判断依据」与「产生的效果」分开设计。否则,一条看似可靠的风险规则,改了一个适用范围,就可能在另一类订单上帮倒忙。

回到销售订单。我们假定系统里有一项金额偏差信号,数值为 80。它可以来自合同价格与订单价格的差,也可以来自客户申报金额与系统计算金额的差。再设订单带有一项业务属性,普通销售或已批准的促销补贴。普通销售出现 80 的偏差,风险分增加 80;促销补贴出现同样的偏差,经核对处于批准额度内,风险分可以减少 80,最低降到零。偏差信号相当于阴阳镜发出的「天雷」,订单属性相当于目标属性,规则表决定两者相遇时是加分还是减分。

这里必须把游戏类比收住。游戏中的恢复生命是明确的正向效果

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进