编排式规则引擎LiteFlow在转转轻质检报告的实践

在去年,正式上线了对N品类质检能力。质检中心也有一套标准可以来拓展越来越多N品类,实现用户闭眼打包寄卖,在系统维度上可以认为转转官方验没有不能质检的品类。,在传统的报告中,通常采用固定的模板和结构,无法满足在N品类中的灵活诉求。而轻质检报告的目标是提供一种自由组合和解析的方式,可以按照不同的诉求,自由选择和配置去不同的质检报告呈现出来,同时也需要确保报告的逻辑和数据的准确性,避免信息的混乱或错误的解读,为此转转轻质检报告可能需要建立灵活的数据解析和处理引擎。,N品类在官方验卖场的质检报告如图所示:,质检报告质检报告,组件式规则引擎是一种将规则拆分为独立组件并通过组合和配置来实现业务逻辑的规则引擎。它把规则表示为可重用和可配置的组件,每个组件负责处理一个特定的规则或规则集合。这些规则组件可以通过组合、连接和配置来构建复杂的业务规则,以满足不同的需求和场景。,在公司的系统中充斥着复杂且丰富多样的业务逻辑,承载的也是公司各种各样的核心业务功能,每个复杂的业务都涉及到RPC的调用,不同步骤不同的业务规则的处理,数据的运算等。随着时间的推移和版本的地迭代维护的成本会越来越高。代码的抽象,复用情况也会越来越差,各个模块耦合度变高。逻辑的变动,会影响到其他模块,也会带来一定的测试成本。,先看个在电商行业中简单的例子:,假设平台希望根据不同的用户类型和购买行为来发放优惠券。以下是一个组件式规则引擎的简单编排例子:,条件:用户类型为新用户,动作:发放新用户专享优惠券,条件:购买金额超过一定阈值,动作:发放满减优惠券,条件:购买特定商品类别,动作:发放该商品类别相关的优惠券,条件:用户已经拥有一张优惠券,动作:根据叠加规则判断是否发放额外的优惠券,以上的A,B,C,D四个组件,按照顺序执行。,规则编排规则编排,在例子中,每个规则组件都是一个独立的组件,负责处理特定的规则。它们可以通过组合和配置来构建复杂的优惠券发放规则。,通过组件式规则引擎的编排,平台可以根据不同的条件和业务规则,灵活地发放不同类型的优惠券。同时,这种模块化的设计让规则的管理和维护更加方便,可以根据业务需求进行灵活的调整和扩展,比如实时的去增加一个E组件,或者去掉一个B组件,在或者C可依赖AB,AB并发执行等。,LiteFlow是一款组件式规则引擎,它通过将规则拆分为独立的组件,以灵活、可组合的方式进行规则编排和执行。以下是该规则引擎的核心概念和特点:,能够非常灵活的去定义组件的执行流程, 如下图所示A, B, C, D四个规则节点,可以通过不同的Chain-1, Chain-2去编排,而Chain的内部就是各样的WHEN THEN 等条件去编排各个节点而设立的执行规则。,上下文,总的来说,LiteFlow组件式规则引擎的核心概念是组件、编排、条件和动作。它具有灵活的规则组合和配置能力,支持数据上下文共享和传递,以及可扩展性。这些特点使得LiteFlow成为一个强大而灵活的规则引擎,适用于各种业务场景的规则编排和执行。,常用的规则引擎组件,例如:drools、easy-rules、liteFlow等。根据自己的业务场景选择合适的组件无疑是最好的。在转转寄卖中用户物品质检完成后卖法的判断(寄卖,回收…)选择了easy-rules,因为其业务逻辑中存在过多的if else 逻辑判断,它能够简练的把规则定义好按照规则执行。但在轻质检报告中选用liteflow 处理主要考虑几个方面:,首先在初始化阶段,会将质检报告生成的规则存储插件(Apollo)中,规则通过解析器加载到规则引擎,然后通过构建器构建工程中定义的各个组件(A,B,C等)节点和规则执行链进行加载,执行器获得执行链路以及执行条件和规则节点,最终按照业务请求的执行链,进行节点执行和上下文的数据交换。如下图所示:,规则的定义和执行规则的定义和执行,图片图片,报告规则划分报告规则划分,质检报告规则编排质检报告规则编排,这里只列举了两种报告的编排形式,在内部系统流程中还有其他场景的一些编排。,通过对一个质检组(外观检测)的icon和汇总描述文案进行配置化,通过两种存储在配置中心的规则,使得质检项的汇总提示信息进行自定义配置化处理。,报告细节处理报告细节处理,本文介绍了转转寄卖业务下轻质检报告采用LiteFlow编排式规则引擎的实践。在N品类质检能力上线以来,多次的质检报告变更做到无需上线配置生效的目标,一定程度上降低了开发成本。,关于作者:,赵路通,转转C2C&寄卖业务研发工程师

文章版权声明

 1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/29439.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年6月23日
下一篇 2023年7月15日