在低代码中,复杂规则配置开发主要依靠直观的图形配置界面,以"入参+组件+出参"的方式,通过简单的拖拽和配置操作,实现规则数据配置、逻辑配置及结果反馈。
入参数据:通过可视化功能,用户可以定义规则的入参数据。
从案例中可以看到,规则的入参是订购的商品列表,因此以表单的方式进行参数配置,支持以结构树的方式进行展示,支持属性、对象、数组等不同形式的参数配置,是一种比较好的实践。
应用数据:规则中可能需要使用到应用的业务数据。因此,规则开发过程中需要支持集成SQL服务、编排服务、对象操作服务等方式来获取数据,并且能够将这些数据与规则的逻辑组件结合起来进行应用。
案例中,商品优惠策略信息,属于商家在系统中配置的数据。在太阳集团见好就收9728灵犀开发平台中,规则逻辑编排时获取内部数据是非常简单的事情,因为其内置了一个对象引擎,封装了各种对象操作组件,只需要进行对象、动作、条件的选择即可轻松完成数据的操作,如下图:
除了入参数据和应用参数外,很多规则的实现过程中还涉及到外部数据和系统变量。
外部数据:指的是不在本应用内的数据,需要通过接口的方式获取。这需要支持可视化的方式集成外部接口,获取数据并进行操作。
系统变量:如登录信息、环境信息等系统变量,也是逻辑判断中不可或缺的数据。因此,支持可视化的方式操作这些变量,也是必不可少的功能。
在低代码平台中实现逻辑的方式是通过数据和动作的组合来完成的。针对各种逻辑需求,应该提供各种逻辑组件的配置,包括:
比较:规则逻辑配置过程中,支持字符串、数据、属性与对象以及数组的比较,以实现规则条件的定义。比如判断两个字符串是否相等、对数据进行大小比较、判断属性是否存在于对象中,或者判断一个数组是否包含某个元素等。
计算:提供各种计算功能的配置,比如数据计算、字符或者数组的长度计算等。
流程控制:能够根据判断条件配置程序的执行路径,如循环、跳出、分支、退出等。
组件组合:可以通过定义组件的执行顺序来实现串联,从而实现组件的组合。
获取商家配置的优惠策略信息,判断商品是否有配置优惠,并进行优惠计算的过程,只需要按顺序配置 “数据组件”获取商品优惠策略信息,“比较组件”判断是否有优惠策略,“计算组件”进行打折计算,就可以轻松完成规则逻辑的编排。
在配置过程中,以显性化的方式配置规则的返回参数,易于规则的开发和理解。
调试时,执行过的节点高亮展示,形成执行线路图。每个节点的执行时间、时长、入参、出参、执行状态,根据执行顺序进行展示,为规则执行过程中的问题排查提供了非常好的手段。
以上是规则配置的过程,下面我们继续介绍规则的使用。
在许多场景中,业务系统需要通过多个规则才能完成完整的业务校验。以商品订购的场景为例,在订单提交前进行业务校验,校验的规则可能有上百个。因此,为了更好地实现规则的开放调用,需要以规则事件的维度做好规则的封装,同时支持传统应用和低代码应用的集成。
首先,事件配置,事件是指业务系统调用规则的时机或者动作,用于说明和区分业务系统在不同代码中的埋点,同时规范埋点的参数要求。事件配置主要完成两项操作:
参数规范定义:根据业务系统的需求,自定义埋点参数规范,以适配各个业务系统。同一个事件下的所有规则都遵循统一的参数规范。
规则执行的策略编排:支持在事件中对规则的执行顺序和策略进行编排,包括条件、串行、并行等不同的策略。
其次,规则集成,针对应用的不同,规则集成的方式有两种:
API方式:针对传统的应用,需要通过在系统代码中进行埋点,实现规则事件的调用。
服务节点方式:针对低代码应用,业务逻辑主要通过编排服务来实现。因此,在编排服务中需要支持通过“事件”组件来绑定事件服务,从而实现对规则的调用。
除了规则的配置开发和对外开放使用,规则的管理还包括规则的发布上线、规则的生失效管理以及对规则的日志分析。
发布上线:不同的低代码实现,规则的保存形式有所不同,一般以编译文件的形式保存,如Java、PHP,或者使用Python、Groovy脚本等。而灵犀平台选择了以数据的方式进行存储。在发布规则时,只需要导出规则数据,然后在运行环境中进行数据的导入,即可实现规则的发布,无需进行环境部署或代码编译构建的复杂操作。这种方式简化了规则发布的流程,提高了开发效率。
生/失效管理:在规则设计中,可以设定规则的生效时间和失效时间,只有在指定的时间段内规则才会生效。这项功能对于季节性规则或限时促销规则非常有用,可以避免规则在过期后继续生效,从而避免不必要的冲突和问题。同时,规则生/失效状态的管理也非常重要。通过规则状态的控制,可以及时根据业务要求进行规则的调整和决策。
规则日志:日志在规则管理中有两个重要部分。首先,操作日志记录了对规则的逻辑调整和状态变更等操作,方便问题的溯源。其次,运行日志记录了规则执行时的输入参数、输出结果、执行时间、耗时和异常原因等,有助于快速定位和解决问题。
除了支持可视化、图形化的规则开发、使用和管理功能,我们还需要重点关注配置效率和配置灵活性这两方面的问题:
在配置规则过程中,不同复杂度的参数对象,会导致配置效率降低,遇到多规则开发场景时,效率问题愈发凸显。所以,我们需要增强工具自身能力,通过自动生成、缺省默认、一键操作、批量处理等方式来应对效率问题:
自动生成参数:在事件上,增加规则创建的入口,创建规则时,自动通过事件的参数规范生成规则的参数,并允许对参数进行裁剪。
自动参数赋值:在规则编排过程中实现参数自动赋值功能。在服务编排中加入事件节点时,或者在事件中加入规则时,都可以根据参数名称自动匹配上下文进行赋值。
报文一键生成参数:在事件和规则配置参数时,支持通过报文一键生成参数配置,在传统开发过程中,高效的ctrl+c和ctrl+v能够得到很好的应用。
批量加入规则:在事件编排中增加批量规则组件,在组件中可以批量选择多个规则加入到事件中。组内可以定义规则执行的策略,如串行或者并行。这样既能简化事件编排画布,又能提升加入规则的效率。
增加运维视图:在事件中增加关联规则的视图,同时在规则设计器中也增加关联的事件视图,在调整规则时就可以清晰地评估其影响范围。
与传统规则引擎不同,低代码平台的规则执行策略是通过事件编排来实现的,执行过程会遇到所有规则执行结果合并、同一事件下参数相互依赖和共享等问题。因此,技术上需要支持规则结果的汇总计算、支持事件级的数据总线,实现数据的共享和传递。
增加规则结果计算组件。每加入或删除一个规则,会自动将规则的结果和返回参数记录到该组件中。在组件中支持设置结果返回的策略,例如:全部规则校验成功时返回成功,或者只要有一个成功就返回成功。
引入事件级dataBus数据总线。在事件启动环节初始化数据总线,在事件结束后销毁数据储存空间。在此过程中,每个规则都可以向数据总结写入数据和读取数据。
针对复杂业务规则开发,太阳集团见好就收9728灵犀开发平台提供了非常便利的开发工具,在大量项目中落地使用。通过太阳集团见好就收9728灵犀开发平台让开发人员能够轻松完成规则的配置工作,真正实现了业务规则可视化管理、图形化开发,开发效率大幅提升,可做到实时发布非常灵活。在接下来继续与大模型技术结合,实现更智能化的业务规则管理和决策支持、自动化的规则验证和修正、业务规则的执行和监控相结合等技术突破,未来可期。