订单逆向履约系统的建模与PaaS化落地实践
Tech导读
本文重点介绍了京东零售电商业务在订单逆向履约上面的最佳技术实践,京东零售快退平台承接了零售几乎所有售前逆向拦截和退款业务,并在长期的业务和技术探索中沉淀了丰富的业务场景设计方案、架构设计经验,既能承接面向消费者C端用户的高并发流量,同时也能满足集团复杂业务的订单信息流、货品实物流、财务资金流的逆向精准拦截。本文通过对集团B-PaaS化技术方案进行系统整体的架构升级改造,总结归纳出涵盖用户解约流程管理、撤销解约流程管理、订单逆向退款信息管理、流程配置化和流程可视化一整套的解决方案,该方案经过多次探讨和验证,已支持集团多个战略业务的增长。阅读本文,读者可以了解到整个快退平台新系统设计的底层逻辑,也可以参考本文并结合实际场景,将方案应用在遗留债务系统改造、业务和技术建模中。
导读
本文重点介绍了京东零售电商业务在订单逆向履约上面的最佳技术实践,京东零售快退平台承接了零售几乎所有售前逆向拦截和退款业务,并在长期的业务和技术探索中沉淀了丰富的业务场景设计方案、架构设计经验,既能承接面向消费者C端用户的高并发流量,同时也能满足集团复杂业务的订单信息流、货品实物流、财务资金流的逆向精准拦截。本文通过对集团B-PaaS化技术方案进行系统整体的架构升级改造,总结归纳出涵盖用户解约流程管理、撤销解约流程管理、订单逆向退款信息管理、流程配置化和流程可视化一整套的解决方案,该方案经过多次探讨和验证,已支持集团多个战略业务的增长。阅读本文,读者可以了解到整个快退平台新系统设计的底层逻辑,也可以参考本文并结合实际场景,将方案应用在遗留债务系统改造、业务和技术建模中。01 背景介绍
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
在集团PaaS化战略引导下,笔者负责的闪电敏捷团队在近半年完成了快退系统的解约和撤销2个子系统的B-PaaS架构升级,在此基础上,快退还完成配置化系统升级,无论业务支持、产品沟通和系统交付能力都实现了跨越式的突破。
1. 业务上的支持,以集团长城融合项目为始,通过PaaS化升级改造,在原有整单退业务上支持了订单的SKU调整退业务,如不做PaaS化架构升级则需要重新构建调整退款系统支持;B商城项目中B和C端能力融合,与订单中台侧团队合力在C端订单原有状态的节点上进行能力复用,完美融合了B商城的意向单逆向业务。在未来,还将扩展支持更多集团战略项目。
2.产品上的支持,以集团复杂业务为底,快退平台承接了集团零售几乎所有售前逆向拦截和退款业务,业务复杂度极高,产品和研发日常只能以模块到人的方式沟通,比如以商详结算页为例Handler业务处理器185,而快退侧Handler业务处理器189不包含拦截器Interceptor,通过梳理合并相似业务流程,通用流程65+。通过PaaS化架构升级,不仅对业务建模、流程可视化,同时构建领域模型,沉淀一套核心业务流程,产品沟通的人员需求降低了83%。
3. 系统上的支持,集团在过去几年不仅扩充了主站业务,同时进行了出海战略、商业战略的投入,构建了多个烟囱重复系统,不仅在业务上很多能力相似,还增加了研发维护和投入成本。通过PaaS化架构升级,目前已将农批业务进行PaaS化架构支持,其他业务也在进行PaaS一套内核支持,多个垂直业务分包的融合。维护人员投入减少了一半。
02 产品介绍
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。从设计稿出发,提升页面搭建效率,亟需解决的核心问题有:
2.1 快退是什么?
2.1.1 快退在C端用户消费者眼里是什么?
图1 C端用户视角下的快退
2.1.2 快退其他视角下是什么?
C端:面向C端用户完成支付前取消、支付完成后取消
商家:面向POP商家完成协助用户代取消,面向门店商家
运营:面向自营产品,同POP商家代取消
客服:面向财务审核异常,以及用户进线投诉取消
拒收:面向配送产品到顾客,联系不上或者用户拒收
天网:面向黑名单用户,套利或者逃运费的风控拦截
2.1.3 快退是什么?
03 领域建模
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。从设计稿出发,提升页面搭建效率,亟需解决的核心问题有:
3.1 建模的价值和必要性
图2 建模的过程和必要性
可以从中提取下关键词:问题域、业务期望,业务流程图、场景活动分析,业务边界、团队组织产品边界以及技术实现的系统架构边界。用一句话归纳下,在特定的业务场景下,明确该业务场景下的问题域,通过元素和关系来表述出业务规则,进行当前问题的解决方案输出。
3.2 建模前的工作准备
1. 从业务需求分析:如果读者有固定的业务运营团队,这里可以依据业务运营团队进行业务需求分析归纳和整理,以及未来的展望。如果没有业务运营团队,比如是基础能力部门,往往对接的业务方非常多,这里面就面临一个困境:没法与业务沟通,在这里则可以进行以往业务需求分析,比如笔者要讲的这个案例,从以往需求中进行归类,分为需求重灾区和轻灾区。
图3 业务需求分析的角度
2. 从问题空间分析:(1)业务问题:业务方多,业务需求不集中;(2)产品问题:产品对于业务需求把控弱,产品边界模糊,行业缺少成熟方案,产研认知不统一;(3)系统问题:业务模式乱,依赖上下游多,业务流程复杂不易阐述清晰。
图4 问题空间分析的角度
图5 需求和产品管理
3.3 建模面临的挑战
图6 建模面临的挑战
3.4 如何建模
图7 建模过程
图8 流程建模
在梳理运营规则的时候,其实已经是将业务流程还原的第一步,但此时要如何划清业务边界呢?可以通过接口契约进行隔离。再来看下图就清晰许多,而业务逻辑和领域逻辑也进行了分离。
图9 通过接口契约划清业务边界
从上面的流程来看其实可以发现有以订单为主的申请、生产单为主的商家/仓储、运单为主的配送、审核单的客服、账单的退款。因此可以简化下本模型,本模型只分为4个逻辑模块,分别是解约申请、解约拦截(商家审核/仓储拦截/配送拦截)、解约审核(客服审核/财务审核)、解约生效(财务退款),该模型就抽象的比较简单了。
图10 简化后的模型
图11 构建解约单领域模型的“鸡蛋”
接下来统一业务语言,领域事件活动分析,进行领域服务拆解(这里强调的信息内容与DDD的领域服务略有不同,更强调的是偏微观,比如RPC接口纬度)。
图12 通用语言表
图13 领域事件活动分析
图14 领域服务拆解
借鉴优秀的nginx、asp.net 生命周期管理进行的业务流程设计,也与上述的方式比较相似。
图15 业务流程设计
图16 垂直业务和水平业务
业务身份定义好后,进行数据模型映射,举个例子,7鲜业务身份,自营业务身份来进行数据建模,通过垂直、水平、内核来定义。
图17 数据模型映射
3.5 模型的验证
图18 模型的验证
04 B-PaaS化落地实践
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。
4.1 B-PaaS化工程架构指导
图19 系统架构的升级改造
图20 落地工程架构
4.2 实际需求案例落地PaaS化
图21 业务流程分析图
图22 业务领域活动分析图
图23 消息与领域映射
图24 业务身份映射
05 能力可视化
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。
上节进行了B-PaaS化工程落地实践,最终借助藏经阁进行能力可视化上报,笔者项目是通过注解的方式进行上报。
图26 能力可视化上报
06 总结
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。
通过以上背景、产品、建模、工程化、可视化和实际需求落地B-PaaS工程的案例6个模块,本文整体地介绍了快退平台为什么要进行PaaS化工程改造以及具体是如何实现的架构升级。希望通过本文,可以帮助读者们对于订单逆向履约系统有进一步的认识,同时期望给予读者独自面对复杂遗留系统时候,可以借鉴本文的架构升级改造思路,化解业务、系统复杂度,让系统更高效的支持业务发展。此外,也欢迎读者留言探讨交流,是否遇到过复杂的遗留债务系统以及是如何解决的。
重构指标之如何监控代码圈复杂度
微电SCRM平台之一起玩转电销系统
基于Hive的数据立方体实践
求分享
求点赞
求在看