大中台模式下如何构建复杂业务核心状态机组件?

2024-08-22 00:38

本文主要是介绍大中台模式下如何构建复杂业务核心状态机组件?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

大中台战略下,中台将公司业务的公共能力下沉,并采用更加合理、可复用的架构和技术来实现这些基础能力。在电商行业内,将面临货物的采购、商品上架、交易发生、订单状态变化、客服介入等大量状态维护。每个状态之间具有很强的逻辑关联关系,比如:退款操作在发货前和发货后将是完全不同的流程,如图1订单退款流程。

 

                                                                               图1 退款流程图

由此可见,对于复杂状态的管理是一个业务依赖,需求多变的场景。在公司初创期,可以采用硬编码方式,对于每一个操作进行状态判断,每一步操作定制一套逻辑链路。随着业务的增加,定制化链路显然不优雅,大量流程代码无法维护,此时中台通用解决思路就尤为重要,有限状态机(Finite State Machine,缩写:FSM)开始在中台落地。

1 有限状态机

有限状态机(以下简称FSM)又称有限状态自动机,简称状态机。维基百科定义是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

这个模型和业务中台遇到的问题十分吻合。图1是状态转移图,可以用来表示状态机,此外可以使用状态转移表来表示。如图2所示:

                                                           图2 状态转移表

可以看出,FSM是通过抽象为动作和状态,管理有限个状态转移的模型。动作是在给定时刻要进行的活动的描述,我们总结动作类型有如下:

  • 进入动作:在进入状态时进行

  • 退出动作:在退出状态时进行

  • 输入动作:依赖于当前状态和输入条件进行

  • 转移动作:在进行特定转移时进行

在FSM框架下,将流水线的状态流转流程进行了抽象和结构化,将复杂的状态转移图,分割成相邻状态的最小单元。这样相当于搭建了乐高积木,在这套机制上可以组合成复杂的状态转移图。

2 Spring StateMachine​​​was ​​​​   

Spring Statemachine框架主要是帮助开发者简化状态机的开发过程,让状态机结构更加层次化,我们来看下Spring SM怎么实现。首先最小的乐高模型如图3所示 :

                                                    

                                                                                 图3 SM最小单元

假如有状态 STATE1, STATE2和事件EVENT1, EVENT2。事件驱动状态流转。下面来分析下Spring SM的主要代码。

2.1 依赖pom

 

<dependencies><dependency><groupId>org.springframework.statemachine</groupId><artifactId>spring-statemachine-core</artifactId><version>2.1.3.RELEASE</version></dependency>
</dependencies>

2.2 创建状态机

    通过注解来注册状态机的三要素:source、target、event

                                

2.3 注解监听器

    通过监听器感知事件发生,并相应的处理相关逻辑

                                

2.4 运行状态机

 

   

3 交易中台

 

   

在交易场景,定义了自己的状态机框架,抽象了符合交易场景的状态角色:

  • 初始状态、目标状态:状态关系

  • 角色:不同角色有不同的操作权限,比如卖家、买家、系统、客服

  • 操作:对应事件

  • handler:事件操作相应的action实现

       因此一个事件我们可以定义为:在角色A,在初始状态S1下,执行OP1操作,将使用handler来处理,执行成功将状态设置为目标状态S2。

3.1 个性化FSM抽象

 

   

鉴于交易的个性化需要,扩展了状态表的条件,同时使用handler和Java反射,来对逻辑代码进一步结构化。到这一步后,我们可以将数据模板存储到数据库中。如图4:

图4 交易中台FSM状态表

通过改造,核心代码FSM执行引擎只有不到100行。通过注册业务handler,可以灵活的扩充业务能力。同时数据状态的维护是通过状态表,而不依赖手动编写代码,这对于代码质量的保证、工程回归测试都节省了大量的时间。也为中台实现配置化做好了铺垫。

3.2 中台赋能业务

 

   

中台沉淀了基础能力,如何实现?中台如何赋能业务的,业务是否满意呢?

看下面一个例子,基于交易,C2C、自营是两个具有极大区别的业务,他们有完全不同的两套业务流程。C2C平台需要对买卖两端进行担保,而自营更多的是给予买家保证权益。简化版流程如图5:

                                                     图5 简化版交易流程

       通过中台FSM能力,我们只要能将状态图绘制出来,那么相应的状态流转表配置也已经产生。handler 只需要关注当前操作的业务逻辑,极大的解耦了状态和业务。

        可以毫不夸张的说,一个新业务过来,中台能在2天时间内单人完成状态机配置开发上线。这就是中台的效率。

4 总结

 

       FSM解决复杂业务状态流转的问题,并以交易业务进行举例。但是FSM的应用场景远多于交易。比如客服工单,商品状态等。但不是所有的流程都需要使用FSM,需要做好业务流程的折中,就像中台战略更适用于10-100 阶段的公司一样。

        同时FSM只是一个框架,还需要搭建一整套基于它的外围业务逻辑。在状态流转过程中,业务逻辑才是我们的肌肉。框架就像骨骼约束着我们,从而让技术成长更加健康,这也许就是中台的魅力。

这篇关于大中台模式下如何构建复杂业务核心状态机组件?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094744

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor