转转回收业务策略中心的实践

1 背景

回收业务发展日益壮大,我们在邮寄、上门、门店三大履约模式下的业务逻辑日益复杂。同样都是在做回收这一个业务,即便履约方式不同,也有很多业务概念是一致的。为了避免各个业务闷头造轮子,同时又能拉齐三端的业务标准,故成立了业务中台。其中的一部分便是策略中心,希望即能够统一管理各个业务的策略流程,也能够满足不同的个性化策略配置。

2 策略中心

回收业务长期以来存在保价补贴策略,对于订单的成交率和NPS都有提升。所以不同的履约业务都陆续接入了订单保价能力。而回收订单是否能够满足保价策略,需要经历一系列的校验,这些校验通常由通常由一个个相互独立的功能节点组成。

保价补贴校验简易流程

我们的目标是,希望能够借助策略中心,下沉补贴策略逻辑,并能跨多个业务线复用,可热插拔,降低开发成本
并从收拢补贴策略开始,最终实现一个在回收业务体系下,标准能力即通用又能满足业务个性化的业务流程的配置平台

策略中心架构

3 系统设计

为了方便我们管理策略流程,选择了LiteFlow这款技术框架。

3.1 LiteFlow

LiteFlow是一款拥有编排式特性的规则引擎,我们可以将各个模块定义为一个独立的组件,这样我们可以任意编排我们的流程,组件与组件之间是解耦的。

  • 组件:组件即为我们流程中的Node节点。v2.12.0版本更新后有三种组件:普通组件、选择组件、布尔组件。
  • 流程:通过EL规则对组件节点编排后的流程。

LiteFlow架构

LiteFlow其它的优点:

  • 完善的官方文档:官方文档精致简洁。
  • 热插拔:随时随地更改我们配置的el表达式,动态调整业务流程,也支持平滑热刷新。
  • 数据源配置灵活:支持大多数常用的一些数据配置源比如Apollo、MySQL等。
  • 活跃的社区:作者每天都会在群里回答开发者遇到的问题,较为活跃。

3.2 策略执行流程

借助LiteFlow,我们可以针对不同的业务场景制定不同的补贴策略,例如在和外部合作商合作进行回收的场景,我们不想校验用户历史订单的补贴次数,以此来提高补贴率,那我们只需要针对这条的业务线单独配置一条不包含此校验的流程即可。

策略执行流程

3.3 画布

为了能够更方便的管理我们的策略流程,我们希望通过后台来操作变更策略流程,但是LiteFlow不支持可视化编排,所以单独开发设计了一套画布功能来满足我们的诉求。

后台画布

3.4 节点

在不同的策略流程中,不同的节点的业务配置也有可能不相同。例如:我们的保价时效一般是七天,但部分业务流程希望能延长此时效,所以针对不同的策略流程我们需要能够单独对某个节点进行特殊的业务配置,为此我们实现了对节点的编辑能力,来方便调整业务策略。

编辑节点属性

当我们需要变更配置时,只需找到对应的策略链路,点击对应的节点即可变更对应的节点策略配置。

变更流程节点配置

4 未来规划

  • 数据字典:接下来即将开始设计数据字典的部分,希望能够帮助我们更方便的定义策略的出入参。
  • 安全性:因为涉及核心策略,一旦改错可能会造成不必要的损失,所以需要从监控、版本链、审批流几个方面开始加强对于策略的管理。
  • 可视化配置后台:对于节点配置,目前都是针对特殊节点单独开发的,新增节点配置无法做到零开发。而公司现在支持两套可视化配置后台easyui和candy,所以需要探索一个合适的方式将现有的架构能力接入进来。

关于作者

多斯,转转C2B业务研发工程师

转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。
关注公众号「转转技术」(综合性)、「大转转FE」(专注于FE)、「转转QA」(专注于QA),更多干货实践,欢迎交流分享~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/682841.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

王学岗鸿蒙开发(北向)——————(二)TS基本语法详解

1,Ts(TypeScript)语法相当于JAVAScript类型,鸿蒙arkTs是基于TS语言的,当然artTs也融合了其它的语言。 2,本篇文章是基于n9版本。注意,有些语法是已经不能用的。 3, 4,变量:用来存储数据,数字字母组成,数字不…

Java线程本地变量ThreadLocal

ThreadLocal ThreadLocal有什么用 通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢? JDK中的ThreadLocal类正是为了解决这样的问题,ThreadLocal类主要解决的就是让每…

关于yolov8识别滑块关键点

1,images,annotations创建 IMAGES:放图片材料的 ANNTATIONS:放labelImg标记的xml文件 2,labels,txt怎么来的 labels :可以手动创建,里面还配置了train,val,test文件夹。可手动(以下代码中没有写…

【办公类-04-02】华为助手导出照片读取拍摄时间分类导出,视频不行)

背景需求 今天我用QQ相册导出照片,但是始终在转圈,手机上无法跳出“连结“”的提示,换了台式和笔记本都无法传输。(明明5月14日还可以导出的) 最后我只能用华为传输助手,把照片快速提取出来了。 使用原来…

Java--什么是方法

1.Java方法是语句的集合,它们在一起执行一个功能 1.方法是解决一类问题的步骤的有序组合 2.方法包含于类和对象中 3.方法在程序中被创建,在其他地方被引用 2.设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合&…

苹果宣布将对App Store条款进行一系列更新和改变

据了解,App Store将为开发者提供多项举措。包括开发者可以向用户介绍他们在iOS App之外的购买选项;增加开发者针对订阅、App内购买与付费App可提供的价格点数量;设立一项新基金,以协助符合资质的美国开发者等。 具体七项举措如下&…

2024050401-重学 Java 设计模式《实战代理模式》

重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」 一、前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不到前进…

simulink如何配置自动代码生成

simulink如何配置我们的自动代码生成 仿真时间设置我们仿真我们这个模型的一个时间,目前默认它是10秒。如果把它改成“INF”,它就是会一直仿真。 求解器选择,因为我们使用的是嵌入式代码,因此我们一般嵌入式是一个数字量。所以选…

俞敏洪一句“乱七八糟”,让东方甄选跌了40亿

“虽然直播的特点就是能说会道,但是网上那种买买买的嚎叫,我是完全看不起的”,俞敏洪在2023亚布力论坛上颇为自豪地说。 在他看来,“直播带货”本质上也是教育的一种,对产品进行知识性讲解才是最核心的一环。而知识传…

【网络编程开发】4.socket套接字及TCP的实现框架 5.TCP多进程并发

4.socket套接字及TCP的实现框架 Socket套接字 Socket套接字是网络编程中用于实现不同计算机之间通信的一个基本构建块。 在现代计算机网络中,Socket套接字扮演着至关重要的角色。它们为应用程序提供了一种方式,通过这种方式,程序能够通过网…

人工智能芯片封装技术及应用趋势分析

简介人工智能(AI)、物联网(IoT)和大数据的融合正在开创全新的智能时代,以智能解决方案改变各行各业。人工智能芯片在支持人工智能学习和推理计算方面发挥着非常重要的作用,可实现各行各业的多样化应用。 本…

代码随想录算法训练营day29|491.递增子序列、46.全排列、47.全排列II

递增子序列 491. 非递减子序列 - 力扣(LeetCode) 非递减子序列,则答案的子集中,需保持下一个元素大于等于前一个元素的顺序,由于题目中指出,所有的子序列长度需大于等于2,考虑当条件为path.siz…

ChatTTS 保姆级教程从入门到精通

ChatTTS 保姆级教程从入门到精通 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能…

DP动态规划(上)

文章目录 动态规划基本概念斐波那契数列问题C 实现Python 实现Java 实现 迷你结C、Python和Java在实现动态规划时有哪些性能差异?迷你结哪种语言在动态规划中更适合大规模数据处理?迷你结C有哪些知名的库适用于动态规划和大数据处理?动态规划辅助库大数据处理库 迷…

React中常见的面试题

本文是结合实践中和学习技术文章总结出来的笔记(个人使用),如有雷同纯属正常((✿◠‿◠)) 喜欢的话点个赞,谢谢! 1. 约束性组件与非约束性组件 1.1. 非约束性组件 非约束性组件其实就是不能控制状态的组件,比如: <input type"text" defaultValue"123&qu…

JVM之【字节码/Class文件/ClassFile 内容解析】

说在前面的话 Java语言:跨平台的语言(write once,run anywhere) 当Java源代码成功编译成字节码后&#xff0c;如果想在不同的平台上面运行&#xff0c;则无须再次编译这个优势不再那么吸引人了。Python、PHP、Perl、Ruby、Lisp等有强大的解释器。跨平台似乎已经快成为一门语言…

力扣hot100:138. 随机链表的复制(技巧,数据结构)

LeetCode&#xff1a;138. 随机链表的复制 这是一个经典的数据结构题&#xff0c;当做数据结构来学习。 1、哈希映射 需要注意的是&#xff0c;指针也能够当做unordered_map的键值&#xff0c;指针实际上是一个地址值&#xff0c;在unordered_map中&#xff0c;使用指针的实…

C++--DAY3

思维导图 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数。 #include <iostream>using namespace std; class …

小孩天赋是怎样炼成的 懂孩子比爱孩子更重要 详细天赋评估列表 观察非常细致 培养领导能力的方法

懂孩子比爱孩子更重要 “懂孩子比爱孩子更重要&#xff0c;懂才更准确的去爱” 这句话说得很有道理。理解孩子的内心世界、需求和独特个性&#xff0c;比单纯地给予爱更加重要。以下是一些解释&#xff1a; 理解孩子的需要&#xff1a;懂孩子意味着理解他们的需求、恐惧、欢乐…

SVN安装详细教程

&#x1f4d6;SVN安装详细教程 ✅1. 下载✅2. 安装✅3. 使用 ✅1. 下载 官方地址&#xff1a;https://tortoisesvn.net/downloads.html 123云盘地址&#xff1a;https://www.123pan.com/s/4brbVv-rsoWA.html ✅2. 安装 双击TortoiseSVN-1.14.6.29673-x64-svn-1.14.3.msi安装…