文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-11-30 12:02

关注

在传统的报告中,通常采用固定的模板和结构,无法满足在N品类中的灵活诉求。而轻质检报告的目标是提供一种自由组合和解析的方式,可以按照不同的诉求,自由选择和配置去不同的质检报告呈现出来,同时也需要确保报告的逻辑和数据的准确性,避免信息的混乱或错误的解读,为此转转轻质检报告可能需要建立灵活的数据解析和处理引擎。

N品类在官方验卖场的质检报告如图所示:

质检报告

1.2 组件式规则引擎及其应用潜力

组件式规则引擎是一种将规则拆分为独立组件并通过组合和配置来实现业务逻辑的规则引擎。它把规则表示为可重用和可配置的组件,每个组件负责处理一个特定的规则或规则集合。这些规则组件可以通过组合、连接和配置来构建复杂的业务规则,以满足不同的需求和场景。

在公司的系统中充斥着复杂且丰富多样的业务逻辑,承载的也是公司各种各样的核心业务功能,每个复杂的业务都涉及到RPC的调用,不同步骤不同的业务规则的处理,数据的运算等。随着时间的推移和版本的地迭代维护的成本会越来越高。代码的抽象,复用情况也会越来越差,各个模块耦合度变高。逻辑的变动,会影响到其他模块,也会带来一定的测试成本。

先看个在电商行业中简单的例子:

假设平台希望根据不同的用户类型和购买行为来发放优惠券。以下是一个组件式规则引擎的简单编排例子:

  1. 规则组件(A): 用户类型规则组件

条件:用户类型为新用户

动作:发放新用户专享优惠券

  1. 规则组件(B): 购买金额规则组件

条件:购买金额超过一定阈值

动作:发放满减优惠券

  1. 规则组件(C): 商品类别规则组件

条件:购买特定商品类别

动作:发放该商品类别相关的优惠券

  1. 规则组件(D): 优惠券叠加规则组件

条件:用户已经拥有一张优惠券

动作:根据叠加规则判断是否发放额外的优惠券

以上的A,B,C,D四个组件,按照顺序执行。

规则编排

在例子中,每个规则组件都是一个独立的组件,负责处理特定的规则。它们可以通过组合和配置来构建复杂的优惠券发放规则。

通过组件式规则引擎的编排,平台可以根据不同的条件和业务规则,灵活地发放不同类型的优惠券。同时,这种模块化的设计让规则的管理和维护更加方便,可以根据业务需求进行灵活的调整和扩展,比如实时的去增加一个E组件,或者去掉一个B组件,在或者C可依赖AB,AB并发执行等。

2 组件式规则引擎概述

2.1 LiteFlow的核心概念和特点

LiteFlow是一款组件式规则引擎,它通过将规则拆分为独立的组件,以灵活、可组合的方式进行规则编排和执行。以下是该规则引擎的核心概念和特点:

@Slf4j
@LiteflowComponent(FlowNodeVar.DYNAMIC_APPOINT)
public class DynamicAppointCmp extends NodeComponent {
  // 条件
  isAccess();
  // 动作
  process();
}
THEN (A,B,C,D)  // 串行执行四个节点。
WHEN (A,B,C,D)  // 并行执行四个节点。
SWITCH(A).to(B, C, D) // 利用A的结果去选择执行B,C,D任一节点。
THEN(IF(X, A),B) // 如果X=TRUE执行A, 否则执行B
....

能够非常灵活的去定义组件的执行流程, 如下图所示A, B, C, D四个规则节点,可以通过不同的Chain-1, Chain-2去编排,而Chain的内部就是各样的WHEN THEN 等条件去编排各个节点而设立的执行规则。

上下文

总的来说,LiteFlow组件式规则引擎的核心概念是组件、编排、条件和动作。它具有灵活的规则组合和配置能力,支持数据上下文共享和传递,以及可扩展性。这些特点使得LiteFlow成为一个强大而灵活的规则引擎,适用于各种业务场景的规则编排和执行。

2.2 为什么选择该引擎处理轻质检报告

常用的规则引擎组件,例如:drools、easy-rules、liteFlow等。根据自己的业务场景选择合适的组件无疑是最好的。在转转寄卖中用户物品质检完成后卖法的判断(寄卖,回收...)选择了easy-rules,因为其业务逻辑中存在过多的if else 逻辑判断,它能够简练的把规则定义好按照规则执行。但在轻质检报告中选用liteflow 处理主要考虑几个方面:

3 轻质检报告处理流程设计

3.1 规则和链路处理的简述

首先在初始化阶段,会将质检报告生成的规则存储插件(Apollo)中,规则通过解析器加载到规则引擎,然后通过构建器构建工程中定义的各个组件(A,B,C等)节点和规则执行链进行加载,执行器获得执行链路以及执行条件和规则节点,最终按照业务请求的执行链,进行节点执行和上下文的数据交换。如下图所示:

规则的定义和执行

3.2 在轻质检报告中配置和集成LiteFlow

图片

报告规则划分

质检报告规则编排

这里只列举了两种报告的编排形式,在内部系统流程中还有其他场景的一些编排。

3.3 进一步提高轻质检报告配置能力

通过对一个质检组(外观检测)的icon和汇总描述文案进行配置化,通过两种存储在配置中心的规则,使得质检项的汇总提示信息进行自定义配置化处理。

报告细节处理

4 总结

本文介绍了转转寄卖业务下轻质检报告采用LiteFlow编排式规则引擎的实践。在N品类质检能力上线以来,多次的质检报告变更做到无需上线配置生效的目标,一定程度上降低了开发成本。

关于作者:

赵路通,转转C2C&寄卖业务研发工程师

来源:转转技术内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯