来源:京东技术
导读
规则引擎是一种嵌入在应用程序中的组件,主要解决易变逻辑和业务耦合的问题,行业上开源的规则引擎,在互联网场景使用存在诸多障碍,如高并发略显不足、更多面向技术人员、无法规模化的让规则从应用程序代码中实现分离。
基于此,京东供应链研发部自研了一套,面向业务角色的海纳低代码规则引擎平台,产品定位是面向业务、研发多角色一体化的零低代码开发平台,其中规则引擎是其最核心的部分之一,本文以此为核心展开说明。
来源:京东技术
导读
规则引擎是一种嵌入在应用程序中的组件,主要解决易变逻辑和业务耦合的问题,行业上开源的规则引擎,在互联网场景使用存在诸多障碍,如高并发略显不足、更多面向技术人员、无法规模化的让规则从应用程序代码中实现分离。
基于此,京东供应链研发部自研了一套,面向业务角色的海纳低代码规则引擎平台,产品定位是面向业务、研发多角色一体化的零低代码开发平台,其中规则引擎是其最核心的部分之一,本文以此为核心展开说明。
然而,行业上开源的规则引擎,在互联网场景使用却存在诸多障碍。从技术上来看,面对特大流量的高并发略显不足;从交付上看,操作语言是以研发视角,无法让更多的非技术人员参与来实现交付链条的最大化降低;从实施上,也没有配套的标准化架构开放规范,无法规模化的让规则从应用程序代码中实现分离。
基于此,京东供应链研发部自研了一套,面向业务角色的海纳低代码规则引擎平台,产品定位是面向业务、研发多角色一体化的零低代码开发平台,这其中规则引擎是其最核心的部分之一。
这个平台,不仅可以高效的支持互联网高并发业务,它还具有一套标准化扩展开放的能力。基于此业务系统可以快速实现业务规则的规模化开放,短短4个月内,低成本开放了近100+个扩展点,抽取沉淀了近400+个业务规则,支持了14+个京东核心链路重大项目,产品经理/ISV也首次以无代码的方式,在安全清晰的工作边界内,自助式的完成京东核心链路的业务需求,平均交付周期0.5天内。
2.1 现状
2.2 挑战
2.3 方案
一个月后,产品雏形已初步完成,小彭拉上业务线对口的产品和业务来试用,算是毁誉参半,小彭没有泄气,收集了大家的问题和反馈,并开始快速迭代。又半个月过去,产品总算达到了可用、可交付的状态。经过一段时间的试点使用后,一些业务、产品开始主动来寻求合作和反馈。总算形成了正向反馈。
03 核心原理介绍
以上阐述了很多,那这个产品到底是如何完成的呢,其中的原理和亮点分别是什么? 提高交付效率、保证交付质量、扩大交付角色,是业界追求的最高目标,也是小彭及其小分队追求的最终目标。为保障产品功能可安全、可靠的交付给业务角色,小分队探索出了一个带可视化界面、研发和产品可共同参与开发的通用性规则平台,并在平台内设定了一系列的规范化约定,计划提供沙箱模式、录制与回放验证等机制来保证交付的质量,并提升联调与验证的效率。 而其核心原理,简而言之可以表述为:平台提供可视化设计器,业务角色在可视化界面沉浸式式编排业务规则,即可完成所有业务功能的新增、变更、修改与发布。与之相对应的,平台在功能后台自动生成规则引擎描述文件,待业务角色审核完成后自动化的同步给应用系统。应用系统通过SDK对扩展点进行拦截,并在扩展点执行生效的规则编排。 
图1.海纳低代码规则引擎工作示意图 对于适用于业务规则类的业务场景,小分队的成员很快就发现存在共性特点:“当满足部分特定业务条件时,执行特定业务动作的一组规则集合”。 小分队成员对此特点深入研究,发现市面上常见的规则引擎提供的技术规则内容太深奥、太专业,对于普通的业务人员理解难度太高,导致市面的规则引擎产品主要在研发内部使用。为解决这一难题,小分队在平台中除了提供纯技术规则注册外,还提供了业务规则注册与组合编排。使得平台的用户不光可以覆盖至研发角色,还可以覆盖至业务角色。业务交付需求时,只需关注其业务规则与业务编排,而其背后支撑的复杂技术规则可完全对业务角色透明。最终业务像画流程图一样在平台进行操作即可自助式完成需求交付。 伴随着需求交付个数的增长,系统中的业务规则和业务行为不断地扩充,后续的需求交付可复用之前沉淀确定的业务规则,包括如“自营”、“厂直”、“医药”等统一的业务含义,均可统一在后续需求进行复用,可进一步提升交付速度。 下面以一个实际的例子展示海纳规则引擎的主要特色功能。为了让读者有直观的感受可视化规则编排和执行过程,先展示规则编排结果:

图2.可视化规则编排结果 从规则流程图可以看到主要的元素就是菱形和矩形。菱形表示条件,类似于代码中的if;而矩形则是动作,就是具体做的一个动作,比如更新数据库、远程接口调用等任何想做的事。 那么规则流程是如何被编排出来,编排出来后又是如何运行的呢? 
图3.可视化规则编排主要过程 注册扩展点: 扩展点是规则要执行的切入点,在平台注册扩展点后,可围绕该扩展点进行业务规则流程编排。 业务模型注册: 业务模型是业务数据的载体,确保引擎正确识别并访问模型以进行逻辑运算。 技术规则注册: 
图4.注册页面展示 主要面向研发人员,主要包括方法的签名信息,和系统中的代码方法对应,提供最基础的规则。 平台还内置了丰富的技术规则,如下图所示,对于一般业务而言,预制的规则可以满足80%及以上的场景。对于其余个性化场景,平台也提供了可扩展的能力。 
图5. 预制规则展示 业务规则注册: 
图6.业务规则注册 业务规则是对技术规则或业务规则的组合,形成具有业务语义的规则,最终用于业务规则流程编排。为了实现复杂业务条件,提供了and/or/not/group等多种组合形式,方便业务灵活配置。 
图7.组合形式展示 业务规则编排: 
图8.业务规则编排 对业务规则进行组合,以流程图的方式展现业务流程,最终形成规则流程描述文件。 规则引擎执行: SDK将规则流程描述文件解析成规则引擎能执行的脚本,规则引擎通过执行脚本完成业务规则的运行。 小结: 对业务角色而言,海纳平台提供可视化规则编排能力,业务规则主要是由具有业务语义化的条件规则和动作规则组成,因此产品业务人员可以轻松地自助完成业务规则编排。随着规则丰富度持续提升,业务人员也可以对已有规则进行组合或通过自定义规则方式实现新业务规则创建,实现全面自助。 对于研发角色而言,应用系统只需引入SDK并定义要执行规则扩展点即可完成集成工作。后续需求业务实现自助化交付后,整个交付的过程从原来的10天,可缩短至最快0.5天,达成了提效的目的。

下面以一个实际的例子展示海纳规则引擎的主要特色功能。为了让读者有直观的感受可视化规则编排和执行过程,先展示规则编排结果:







对于研发角色而言,应用系统只需引入SDK并定义要执行规则扩展点即可完成集成工作。后续需求业务实现自助化交付后,整个交付的过程从原来的10天,可缩短至最快0.5天,达成了提效的目的。
04 亮点
1、轻量化 海纳规则引擎以对业务系统无侵入,只需引入规则引擎SDK,添加注解即可完成接入,对于存量系统具有友好的支持。一般而言,1天即可快速完成集成工作。 2、高性能 海纳平台是去中心化的设计,平台只负责流程编排,编排后的结果以流程描述文件的方式同步给业务系统,应用系统通过SDK解析并执行,采取本地化执行方式,没有性能瓶颈,并通过了京东订单履约核心系统11.11大促验证。平台提供的能力支持峰值一天处理超亿级订单平稳运行,单个规则运行的耗时在纳秒级别内完成。 3、研发和业务实现分离 海纳规则引擎将研发角色和业务角色分离,在技术领域和业务领域间建立规则适配,屏蔽技术细节,让业务角色更关注业务规则,提高业务角色的使用体验。 4、可视化 面向业务语义的流程编排,流程的编排可以向画流程图一样方便,实现所见即所得的业务体验。 5、技术资产沉淀 通过在平台上注册业务规则和业务行为,可实现技术资产沉淀,随着业务规则的扩充,可支持更为丰富的业务流程。
05 总结
时间又回到了当下,产品小李找到了小彭,同步了近期业务提过来的几个需求,均已经在海纳规则引擎低代码平台自助化实现了,单个需求差不多5到10分钟即可完成配置,全程在平台上沉浸式操作即可。但最终上线需要小彭帮忙审批一下。仔细检查了业务规则条件,确认业务逻辑符合预期后,小彭快速移动鼠标,轻轻点击了“发布生效”,新配置的规则就如同打一个响指一样,秒级的速度就更新至线上生产环境,并全面运行了。送走小李后,小彭看着线上平稳的监控曲线出神,这个手段确实挺有效,省去了需求评审、业务功能开发、业务功能内部测试的时间,业务角色可以快速自助化交付。那么其余60%的需求如何提效呢?是否有其他的解决方案呢?小彭又陷入了沉思。
在项目需求日趋增加,而人力资源逐步成为瓶颈的时候,采用多种方式来达成提效的效果,是摆在所有人面前的一个难题。希望本文章可以以一个视角和解决方案,以抛砖引玉的方式,引起读者更多的共鸣和思考。
04 亮点
1、轻量化 海纳规则引擎以对业务系统无侵入,只需引入规则引擎SDK,添加注解即可完成接入,对于存量系统具有友好的支持。一般而言,1天即可快速完成集成工作。 2、高性能 海纳平台是去中心化的设计,平台只负责流程编排,编排后的结果以流程描述文件的方式同步给业务系统,应用系统通过SDK解析并执行,采取本地化执行方式,没有性能瓶颈,并通过了京东订单履约核心系统11.11大促验证。平台提供的能力支持峰值一天处理超亿级订单平稳运行,单个规则运行的耗时在纳秒级别内完成。 3、研发和业务实现分离 海纳规则引擎将研发角色和业务角色分离,在技术领域和业务领域间建立规则适配,屏蔽技术细节,让业务角色更关注业务规则,提高业务角色的使用体验。 4、可视化 面向业务语义的流程编排,流程的编排可以向画流程图一样方便,实现所见即所得的业务体验。 5、技术资产沉淀 通过在平台上注册业务规则和业务行为,可实现技术资产沉淀,随着业务规则的扩充,可支持更为丰富的业务流程。
05 总结
时间又回到了当下,产品小李找到了小彭,同步了近期业务提过来的几个需求,均已经在海纳规则引擎低代码平台自助化实现了,单个需求差不多5到10分钟即可完成配置,全程在平台上沉浸式操作即可。但最终上线需要小彭帮忙审批一下。仔细检查了业务规则条件,确认业务逻辑符合预期后,小彭快速移动鼠标,轻轻点击了“发布生效”,新配置的规则就如同打一个响指一样,秒级的速度就更新至线上生产环境,并全面运行了。送走小李后,小彭看着线上平稳的监控曲线出神,这个手段确实挺有效,省去了需求评审、业务功能开发、业务功能内部测试的时间,业务角色可以快速自助化交付。那么其余60%的需求如何提效呢?是否有其他的解决方案呢?小彭又陷入了沉思。
在项目需求日趋增加,而人力资源逐步成为瓶颈的时候,采用多种方式来达成提效的效果,是摆在所有人面前的一个难题。希望本文章可以以一个视角和解决方案,以抛砖引玉的方式,引起读者更多的共鸣和思考。
通过在平台上注册业务规则和业务行为,可实现技术资产沉淀,随着业务规则的扩充,可支持更为丰富的业务流程。
05 总结
时间又回到了当下,产品小李找到了小彭,同步了近期业务提过来的几个需求,均已经在海纳规则引擎低代码平台自助化实现了,单个需求差不多5到10分钟即可完成配置,全程在平台上沉浸式操作即可。但最终上线需要小彭帮忙审批一下。仔细检查了业务规则条件,确认业务逻辑符合预期后,小彭快速移动鼠标,轻轻点击了“发布生效”,新配置的规则就如同打一个响指一样,秒级的速度就更新至线上生产环境,并全面运行了。送走小李后,小彭看着线上平稳的监控曲线出神,这个手段确实挺有效,省去了需求评审、业务功能开发、业务功能内部测试的时间,业务角色可以快速自助化交付。那么其余60%的需求如何提效呢?是否有其他的解决方案呢?小彭又陷入了沉思。
在项目需求日趋增加,而人力资源逐步成为瓶颈的时候,采用多种方式来达成提效的效果,是摆在所有人面前的一个难题。希望本文章可以以一个视角和解决方案,以抛砖引玉的方式,引起读者更多的共鸣和思考。