
近期多家制造企业的ITBP(业务伙伴)在内部论坛提到,用九九联盟处理SAP单据审批的轻量串接时,经常卡在“逻辑看起来都对,但流程跑到一半就静默挂起”。这背后往往不是配置项缺失,而是对任务编排里“触发-执行-回调”三段式设计理解不足。下面以一个真实场景拆开看,一个ERP顾问是怎么从硬编码桥接转向可视化审批流的。
某中型装备企业的采购流程比较原始:SAP里生成采购申请后,要人工导出报表,邮件发送给部门主管、财务和仓库三方会签,最后再由专人回填审批状态到SAP。ERP顾问接手改造时,目标是让“SAP单据生成”这一事件自动开启会签流程,并且整个审批轨迹在九九联盟里可回溯、可插断重跑。初看是个典型的Publish-Subscribe模式,但实际拆解下来,关键难点在于SAP侧的BAPI调用与联盟内任务节点的状态同步。
顾问没有直接用九九联盟的Webhook去裸调SAP,而是先定义了三类原子任务:"Create_PR"(生成采购申请)、"Release_PR"(审批通过后释放)、以及"Reject_PR"(驳回处理)。每个原子任务都配置了统一的回调模板,回调地址指向九九联盟的内部状态机接口。这样做的好处是,一旦SAP侧因网络抖动返回超时,任务不会直接标记为“失败”,而是进入"WAIT_RETRY"状态,让流程引擎按策略重试,而不是让下游节点傻等。有一处细节容易被忽略:BAPI返回的报文里,状态码字段不是标准HTTP码,而是SAP内部的业务状态,顾问在原子任务的“输出映射”里写了简单转换规则,把E类型消息映射为业务异常,让联盟的事件流能识别。
三方会签部分,过去靠邮件催办,财务慢了就会堵死整个流。在九九联盟里,顾问将“部门主管”“财务审核”“仓储备料”设为三个并行分支,各自关联Release_PR原子任务的只读校验版本。并行网关的合并策略设为“全票通过且无超时”,同时给每个分支绑定了2小时超时提醒——不是直接中断,而是通过联盟的“时间边界事件”向审批人的IM渠道推送二次提醒。这里有一个经验性调整:因为财务审核经常需要补充附件,分支内部又嵌套了一个“补材料”子流程,子流程挂起时,主流程的并行网关不会算它超时,只有子流程内自循环超时才会升级。这个设计让会签不再因为补材料而整体断流。
所有分支通过后,联盟的主流程走到“回调汇聚”节点。这个节点不是直接调SAP的Release_PR,而是先写入一张中间态的“审批结果表”,由另外的定时任务每分钟扫表并批量写回SAP。这样做的目的是避免高并发回调时触发SAP端的接口限流。同时,回写失败的记录会生成“人工对账任务”,推到对应采购员的待办列表,而不是默默丢进日志。顾问事后复盘,整个流程从拆解到上线只花了三个工作日,关键在于把SAP的BAPI间接触变为有生命周期管理的任务节点,而不是一次性脚本。对同样面临老旧ERP与协同工具打通问题的团队来说,与其纠结全套集成中台,不如从九九联盟的原子任务编排入手,把审批流切成可观察的异步链路,反而更落地。
