B2B订单系统怎么做?流程引擎与权限模型拆解
一、B2B订单系统和B2C有什么不同
很多技术团队接过B2C的订单系统开发,再碰到B2B项目时,第一反应是“差不多,再加几个字段就行”。这个想法一冒出来,项目就已经埋下隐患了。
B2B订单的业务复杂度,和B2C完全不在一个量级。B2C的订单链路相对标准化:用户下单、付钱、发货、收货,流程基本固定。B2B订单却绕不开几样东西:审批流、多层级价格、信用额度、分批履约、对账结算周期。同一个客户的同一个订单,可能采购经理下完、财务总监还要再批一次。同一个商品,不同客户等级看到的价格不一样。同一笔订单的货,可能要分三批发到三个不同的收货地址。
这些需求如果在系统设计阶段没被处理好,代码写出来就是一层又一层的补丁。云策擎在交付过多个B2B项目后总结出,B2B订单系统有两个核心骨架必须先搭好:流程引擎和权限模型。这两样东西定了,整个系统才撑得住。
二、流程引擎:订单的“交通指挥系统”
B2B订单不是“下单即成交”。从采购申请、审批、确认、发货到对账结算,一张单子可能要在多个部门之间转好几圈。靠硬编码写死流转路径,一旦客户的审批规则变了,代码就得跟着改,系统越改越脆弱。
云策擎的架构选择是用流程引擎来管理订单生命周期。流程引擎的作用不是让订单“动起来”,而是把“谁能动、什么时候能动、动了之后触发什么”这三个问题从代码里抽出来,放进可配置的规则里。
订单的状态节点在B2B场景下比B2C多出不少。除了常见的待付款、已发货、已完成,还需要支持待审批、审批驳回、部分发货、待对账、已结算这些中间态。每一个状态节点由哪个角色操作、操作后流转到哪个下一节点,全部定义在流程模板里。
举个例子:一个客户的审批规则要求“金额超过五万需总监审批”。这个规则不是写死在代码里,而是作为条件分支配置在流程引擎中。金额小于五万,订单自动通过;金额大于等于五万,自动路由到总监审批节点。未来客户把阈值改成三万,只需要修改配置参数,一行代码都不用动。
审批节点本身还需要考虑超时机制。总监超过二十四小时未审批,是自动通过、自动驳回、还是升级到更高层级处理,这些分支规则也要提前定义在流程模板里。云策擎的做法是让流程引擎支持SLA计时器,每个审批节点独立设置超时后的默认动作。
流程引擎带来的最大收益不是“自动化”,而是“可修改”。B2B客户的业务流程差异太大,几乎不存在两家的审批规则完全一致。把流转规则做成可配置的模板,OMS才能适配不同客户而不用二次开发。
三、权限模型:比菜单控制更重要的事![]()
权限模型在很多B2C系统里相对简单——管理员能看所有、客服只能看订单、仓库只能看发货。但B2B的场景要复杂得多。同一个客户公司下,采购员和审批人的权限边界完全不同;同一个供应商公司下,业务员只能看自己名下的客户订单,不能看同事的。
云策擎在B2B订单系统的权限设计上,采用三层权限结构。
第一层,角色层。定义系统内有哪些角色:采购员、审批人、供应商业务员、系统管理员。每个角色的菜单权限范围不同,采购员不需要看到结算模块,供应商业务员不需要看到内部审批流。这是最基础的一层。
第二层,数据层。这是B2B权限的核心。同一个角色,不同用户看到的数据范围不同。供应商A的业务员只能查到属于供应商A的订单,供应商B的业务员不能看到供应商A的数据。同一个采购公司下,普通采购员只能看自己下的单,部门经理能看到部门内所有采购员的单子。这一层的实现方式是给每个用户标记所属组织节点,查询订单时自动拼接数据过滤条件。
第三层,操作层。同一张订单,不同角色能做的操作不同。采购员可以提交审批、撤回审批;审批人可以同意或驳回;供应商业务员可以确认订单、发起发货。操作层的权限粒度需要控制到按钮级别——一个用户打开订单详情页,页面上显示的按钮取决于他当前在这个订单上下文里拥有的操作权限。
这个三层权限模型落地之后,B2B订单系统的安全边界才算真正建立起来。数据不会跨组织泄露,操作不会越权执行。比起B2C系统“按角色分配菜单”的粗放做法,B2B系统的权限模型必须精细到“谁、看什么、能干什么”三个维度。
四、流程引擎和权限模型怎么协同
流程引擎和权限模型不是两套独立的东西。它们在B2B订单系统里是深度耦合的。
流程引擎定义“订单当前处于哪个节点”,权限模型定义“当前节点的操作者是谁”。当订单流转到“总监审批”节点时,系统自动查找拥有审批权限的角色,只向这些用户开放审批操作。审批节点的通过或驳回操作,又触发流程引擎计算下一跳转节点。节点的每一次变化,都同时更新操作权限的归属。
云策擎在实现上让流程引擎和权限模型共享一套用户组织关系表。流程节点配置时直接引用角色定义,权限分配时也基于同一套角色体系。这个设计避免了权限在流程引擎里定义一次、在权限模块里又定义一次的双重维护问题。
五、总结
B2B订单系统的复杂度,不在界面,不在报表,而在于两样东西:流程怎么流、权限怎么分。这两个骨架搭好了,上面的功能模块——询价、报价、信用额度、分批履约、对账结算——才有一个稳固的底子可以承接。云策擎的经验是,B2B订单项目启动时,先花足够时间把客户的审批规则和角色权限矩阵理清。这两张图画透了,代码怎么写是水到渠成的事。
