CN114663177A - 状态变更控制方法、装置、电子设备及存储介质 - Google Patents
状态变更控制方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114663177A CN114663177A CN202210208082.3A CN202210208082A CN114663177A CN 114663177 A CN114663177 A CN 114663177A CN 202210208082 A CN202210208082 A CN 202210208082A CN 114663177 A CN114663177 A CN 114663177A
- Authority
- CN
- China
- Prior art keywords
- state
- node
- current
- code logic
- flow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 156
- 230000008859 change Effects 0.000 title claims abstract description 73
- 230000008569 process Effects 0.000 claims abstract description 115
- 238000012508 change request Methods 0.000 claims abstract description 24
- 238000004590 computer program Methods 0.000 claims description 10
- 238000000926 separation method Methods 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000009191 jumping Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012800 visualization Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0633—Workflow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0645—Rental transactions; Leasing transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/16—Real estate
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Accounting & Taxation (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Theoretical Computer Science (AREA)
- Tourism & Hospitality (AREA)
- Development Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Educational Administration (AREA)
- Health & Medical Sciences (AREA)
- Game Theory and Decision Science (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种状态变更控制方法、装置、电子设备及存储介质,该方法包括:接收对目标业务对象的状态变更请求,所述状态变更请求包括当前对象状态;获取与所述目标业务对象对应的有向图,所述有向图包括多个流程节点和所述多个流程节点之间的顺序关系,所述流程节点包括代码逻辑标识和对象状态;根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更。本发明通过有向图来结合业务的代码逻辑与对象状态变更的控制,避免了两者的分离,提高了状态变更控制的灵活性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种状态变更控制方法、装置、电子设备及存储介质。
背景技术
在一个典型的业务对象系统中,常常需要针对不同的业务线、业务产品,制定不同的对象操作流程。以订单系统为例,比如租房租金业务订单的状态变更逻辑控制流程与租房预定金的订单状态变更逻辑控制流程是完全不同的,而某些订单系统,可能要为十几种、甚至数十种不同的业务线订单制定不同的订单状态流程控制。
现有技术中,进行订单状态控制时主要有以下几种方案:代码写死、工作流引擎和状态机。其中,代码写死是直接通过代码中的if-else逻辑控制订单的状态流转,以及订单状态变更时对应的业务操作(包括:微服务调用、数据库更新、日志记录、业务逻辑操作等);工作流引擎可以进行流程节点的管理、流向管理,针对不同的业务订单,通过不同的流程节点、流向,为不同类型的业务订单制定不同的工作流,流程节点中包含了不同订单状态对应的业务逻辑操作,流向控制决定了当前订单状态可以流转的后续状态有哪些,比如:付款后,才能到退款节点,或者打款给卖家等节点;状态机由订单状态和组合逻辑构成,能够根据订单的当前状态,按照预先设定的订单流程状态,进行状态转移,是协调信号动作、完成特定操作的控制中心,比如:订单有待付款、已付款、退款、打款卖家、订单完成等状态,预先设定组合逻辑,订单只有已付款状态时,才可以转移到退款状态、打款卖家状态,而已付款状态,不能直接变成完成状态、及待付款状态等其它状态。
代码写死的方式,对于单一或少量的业务订单状态流程,可以针对不同的业务订单状态流程做不同的逻辑代码控制,但对于3种以上甚至十几种以上不同订单状态流程控制时,不仅会存在代码量大、流程管理困难、业务逻辑混乱的情况,在业务需求持续迭代时,会出现维护复杂、不可维护的情况。工作流引擎虽然可以解决订单流程控制的问题,但工作流引擎较为复杂、沉重,许多的功能并不是单纯为了解决流程控制的问题,且每一个流程节点对应的状态操作可能大部分都需要个性化定制的,工作流引擎在解决此类问题时并没有优势,反而略显笨拙。状态机更侧重状态流程的逻辑控制,但每个状态一般都对应特定的业务逻辑,而不仅仅是状态的逻辑控制,无论状态机流程存储为什么格式,对于较复杂的流程,人为配置、管理比较困难。可见,现有技术的方式均存在着状态变更控制灵活性较差的问题。
发明内容
本发明实施例提供一种状态变更控制方法、装置、电子设备及存储介质,以提高状态变更控制的灵活性。
依据本发明实施例的第一方面,提供了一种状态变更控制方法,包括:
接收对目标业务对象的状态变更请求,所述状态变更请求包括当前对象状态;
获取与所述目标业务对象对应的有向图,所述有向图包括多个流程节点和所述多个流程节点之间的顺序关系,所述流程节点包括代码逻辑标识和对象状态;
根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更。
依据本发明实施例的第二方面,提供了一种状态变更控制装置,包括:
变更请求接收模块,用于接收对目标业务对象的状态变更请求,所述状态变更请求包括当前对象状态;
有向图获取模块,用于获取与所述目标业务对象对应的有向图,所述有向图包括多个流程节点和所述多个流程节点之间的顺序关系,所述流程节点包括代码逻辑标识和对象状态;
状态变更控制模块,用于根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更。
依据本发明实施例的第三方面,还提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的状态变更控制方法的步骤。
依据本发明实施例的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的状态变更控制方法的步骤。
本发明实施例提供的状态变更控制方法、装置、电子设备及存储介质,通过在接收到对目标业务对象的状态变更请求时,获取与目标业务对象对应的有向图,有向图包括多个流程节点和多个流程节点之间的顺序关系,流程节点包括代码逻辑标识和对象状态,根据当前对象状态和有向图中的顺序关系,控制执行流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更,通过有向图来结合业务的代码逻辑与对象状态变更的控制,避免了两者的分离,提高了对象状态变更控制的灵活性。
附图说明
图1是本发明实施例提供的一种状态变更控制方法的流程图;
图2是本发明实施例中租房租金业务的业务对象的状态流程的逻辑控制图;
图3是本发明实施例中租房租金业务的有向图的示例图;
图4是本发明实施例提供的一种状态变更控制装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种状态变更控制方法的流程图,该状态变更控制方法可以由服务器等电子设备执行,如图1所示,该状态变更控制方法包括:
步骤110,接收对目标业务对象的状态变更请求,所述状态变更请求包括当前对象状态。
其中,业务对象是有多种状态且状态有多种不同类型的逻辑控制的业务数据,所述业务对象例如可以是订单或合同等。目标业务对象是指定的目标业务的对象数据,例如可以是租房租金业务订单、租房预定金业务订单等,还可以是其他业务订单,例如其它任意订单数据有多种状态且状态有多种不同类型的逻辑控制。
在一个目标业务对象生成后,可以基于用户的操作接收到对目标业务对象的状态变更请求,状态变更请求中包括当前对象状态。例如,在用户提交一个目标业务对象后,服务器便接收到对目标业务对象的状态变更请求,在该目标业务对象为目标业务订单时,该目标业务订单的当前对象状态为待付款状态。
步骤120,获取与所述目标业务对象对应的有向图,所述有向图包括多个流程节点和所述多个流程节点之间的顺序关系,所述流程节点包括代码逻辑标识和对象状态。
可以预先基于配置文件生成业务对象对应的有向图,并保存业务对象对应的有向图。在接收到对目标业务对象的状态变更请求时,可以从预先保存的业务对象对应的有向图中获取目标业务对象对应的有向图。有向图中包括多个流程节点和多个流程节点之间的顺序关系,每个流程节点包括对应的代码逻辑标识,可以执行该代码逻辑标识对应的代码逻辑,流程节点还可以包括对象状态。
步骤130,根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更。
根据所述当前对象状态,可以确定当前对象状态所处的流程节点,获取该流程节点的代码逻辑标识所对应的代码逻辑,并执行该代码逻辑,获取执行结果,从而基于有向图中各个流程节点之间的顺序关系,可以确定下一流程节点,从而根据下一流程节点的对象状态,可以执行对象状态的变更。不同目标业务对象中可以复用相同的代码逻辑,这时只需要编写一次该代码逻辑,并基于代码逻辑标识可以在不同目标业务对象中进行复用,这样可以减少代码量。
在本发明的一个实施例中,根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更,包括:确定所述当前对象状态对应的当前流程节点;获取所述当前流程节点的代码逻辑标识所对应的当前代码逻辑,执行所述当前代码逻辑,并基于执行结果获取用户操作数据;根据所述用户操作数据和所述顺序关系,确定所述当前流程节点的下一流程节点,并根据所述下一流程节点的对象状态变更所述当前对象状态。
根据当前对象状态,可以确定当前对象状态对应的当前流程节点,获取当前流程节点的代码逻辑标识所对应的当前代码逻辑,执行当前代码逻辑,当前代码逻辑执行成功时,可以获取用户操作数据,例如,在目标业务对象为目标业务订单,当前对象状态为代付款时,当前代码逻辑可以是显示付款页面,用户可以基于付款页面进行付款,这时可以基于显示的付款页面获取到用户操作数据,例如付款成功或拒绝付款等。在获取到用户操作数据后,可以基于用户操作数据和有向图中各个节点之间的顺序关系,可以确定当前流程节点的下一流程节点,从而可以基于下一流程节点的对象状态变更当前对象状态,例如,用户付款成功时下一流程节点可以是已付款,也就是将当前对象状态变更为已付款状态,用户拒绝付款时下一流程节点可以是交易关闭,也就是将当前对象状态变更为交易关闭状态。
通过执行当前代码逻辑并获取用户操作数据,基于用户操作数据和有向图中各个流程节点之间的顺序关系,可以准确确定当前流程节点的下一流程节点,从而可以准确地变更对象状态。
在本发明的一个实施例中,所述流程节点还包括节点属性;
根据所述用户操作数据和所述顺序关系,确定所述当前流程节点的下一流程节点,包括:根据所述用户操作数据、所述当前流程节点的节点属性和所述顺序关系,确定所述当前流程节点的下一流程节点。
其中,所述节点属性包括跳转至目标流程节点或者变更为目标对象状态。跳转至目标流程节点的节点属性可以为gotoState属性,gotoState代表自动执行跳转的状态,可以通过gotoState属性生成一条节点执行链路。例如:
<flowNode state="1"name="A"codeClass="c"gotoState=2/>
<flowNode state="2"name="B"codeClass="b"gotoState=3/>
<flowNode state="3"name="C"codeClass="c"gotoState=4/>
<flowNode state="4"name="D"codeClass="d"gotoState=5/>
如上配置中,state表示流程节点的对象状态、name表示流程节点的节点名称、codeClass标识代码逻辑标识,gotoState表示gotoState属性,即表示变更为目标对象状态,如上配置时,将会自动执行A、B、C、D四个流程节点对应的状态,B、C节点都可以不对数据状态产生任何改变,最终由D节点来产生状态变更即可。通过gotoState的配置,可以执行一系列的流程节点中特定的程序代码逻辑。
节点属性可以包括属性名称和属性值,上述的跳转至目标流程节点或者变更为目标对象状态均为属性值。属性名称和属性值可以根据不同的需求任意扩展,比如:state属性可以改为attr属性,也可以在流程节点中添加任意多的自定义属性,例如:某个流程节点用于将对象状态1变为指定的对象状态N,N可以任意变化。此时可以在流程节点<flowNode>中,将待变更的状态值以属性方式配置。例如:
<flowNode state="1"name="A"codeClass="clzzA"updtState=2>
clzzA的程序操作仅仅是将状态1更改为updtState属性对应的状态值2。此时,clzzA可以作为通用的节点,进行复用。
在确定当前流程节点的下一流程节点时,除了根据用户操作数据和有向图中各流程节点之间的顺序关系来确定外,还需要结合当前流程节点的节点属性来确定,例如当前流程节点存在gotoState属性时,可以基于gotoState属性确定下一流程节点。
可以根据需求配置对应的节点属性,从而通过流程节点的节点属性,进一步提高了对象状态变更的灵活性,如配置了自动执行功能(gotoState属性),则继续执行后续流程节点,直到执行完未配置自动跳转的节点为止。
本发明实施例提供的状态变更控制方法,通过在接收到对目标业务对象的状态变更请求时,获取与目标业务对象对应的有向图,有向图包括多个流程节点和多个流程节点之间的顺序关系,流程节点包括代码逻辑标识和对象状态,根据当前对象状态和有向图中的顺序关系,控制执行流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更,通过有向图来结合业务的代码逻辑与对象状态变更的控制,避免了两者的分离,提高了对象状态变更控制的灵活性。
在上述技术方案的基础上,在获取与所述目标业务对象对应的有向图之前,还包括:获取配置文件,所述配置文件包括所述目标业务对象的状态流程;解析所述配置文件,生成与所述目标业务对象的状态流程对应的有向图。
其中,所述配置文件的文件格式为XML。使用XML格式的配置文件,可以实现可视化,对于复杂性一般的流程,可直观的看出整体的对象状态流程,根据XML可方便的绘制出对应的流程图,有效降低了流程配置的出错率、提高配置速度。目前有较多的软件(包括所有浏览器)、文本编辑工具,都支持XML的树状展示效果,几乎不需要安装额外的工具就可以获得较高的XML可视化。
可以预先通过配置文件来配置目标业务对象的状态流程,在对目标业务对象进行状态变更控制时,可以获取该配置文件,并对配置文件进行解析,确定各个流程节点,并获取各个流程节点之间的顺序关系,从而基于各个流程节点和各个流程节点之间的顺序关系,生成目标业务对象的状态流程对应的有向图。
通过配置文件可以灵活的配置对象状态变更的逻辑控制,而且业务逻辑可以通过流程节点的逻辑代码进行控制,改变了对象状态变更的逻辑控制与业务逻辑的分离,而且避免了使用if-else进行判断,减少了代码量,提高了对象状态变更控制的灵活性。
在上述技术方案的基础上,所述配置文件还包括所述目标业务对象外的其他业务对象的状态流程;
所述方法还包括:生成与每个所述其他业务对象的状态流程对应的有向图。
配置文件可以是包括所有业务对象的状态流程的配置文件,每个业务对象的状态流程可以是配置文件中的一个业务对象节点,从而可以将所有业务对象的状态流程配置在一个配置文件中,通过解析该配置文件,可以获取到每一个业务对象节点,并对每一个业务对象节点的状态流程进行解析,可以得到每一个业务对象节点下的流程节点以及流程节点之间的顺序关系,从而可以生成每一个业务对象的状态流程对应的有向图,即生成目标业务对象的状态流程对应的有向图以及目标业务对象外的其他业务对象的状态流程对应的有向图。实现了基于配置文件可以灵活配置各个业务对象的状态流程。
本发明实施例基于配置文件可以配置各业务对应的对象状态流程,从而控制对象状态变更的控制引擎通过解析配置文件实例化可执行的对象状态流程,对象状态流程包含:对象流程控制、不同状态对应的代码逻辑(具体实现类、方法)、状态跳转的前置条件等。
以业务对象为业务订单,目标业务为租房租金业务为例,该业务订单的状态流程的逻辑控制图如图2所示,在生成租房租金业务订单时,进入订单待付款状态,之后基于是否付款可以转换为订单关闭状态或订单已付款状态,在订单已付款状态之后可以转换为申请退款状态或确认入住状态,在申请退款状态之后基于是否打款成功,可以转换为订单关闭状态或订单已付款状态,在确认入住状态之后可以转换为打款卖家状态,在打款卖家状态之后基于是否打款成功可以转换为订单关闭状态或确认入住状态。
上述业务对象的状态流程可以转化为下面id=“1”的<flow>节点对应的XML配置文件:
在上述配置文件中,allflow表示根节点,XML配置文件中可以有一个根节点,所有的各业务对象的状态流程,都作为根节点的一个子节点。Flow表示业务对象节点,即表示该业务对象的状态流程,flow节点可以包括:节点名称(name)、业务标识(bizIdentify)以及其他属性,其他属性可以有任意多个,属性名称根据需要任意扩展,一个业务对象节点可以包括多个流程节点(flowNode)。flowNode表示流程节点,流程节点是业务对象的状态流程的组成部分,每个流程节点可以包括:对象状态(State)、节点名称(Name)、代码逻辑标识(codeClass,如代码实现类),还可以包括gotoState属性和其它属性,gotoState属性是可以跳转到指定其它流程节点的状态,跳转后会直接执行对应流程节点的逻辑代码,其它属性可以有任意多个,属性名称可以根据需要任意扩展。
根据上述的XML配置文件,生成的有向图如图3所示,图3所示的有向图是内存数据结构实例,利用有向图的连通性可以控制对象状态的变更,任意流程节点的相邻流程节点,表示可以变更的逻辑状态集合。例如:打款(104)对应的流程节点,与打款成功(106)、打款失败(107)两个流程节点相邻,因此104状态可以转化为106、107状态,但因图是有向的,106与107无法到达104节点,因此106、107两个状态,无法直接变成104状态。
在有向图中,一个流程节点的直接相邻流程节点表示可以变更的状态,不相邻的流程节点(当前流程节点无法一步直接到达的任何流程节点)表示不可变更的状态;任意两个流程节点,可能是单向连通,也可能是双向连通(强连通),单向连通时,A状态可以变成B、C两个状态,但B、C状态不能恢复为A状态,强连通时,A状态可以变为B状态,B状态也可以恢复为A状态;每一个流程节点可以对应特定的代码逻辑,每个流程节点可以改变数据的状态,也可以不改变数据的状态,比如:A节点至B节点,B节点不一定要完成状态变更操作,B节点可以配置gotoState属性,跳转到C节点,由C节点完成状态变更操作;每个流程节点还可以配置上述的gotoState属性和/或其他节点属性。通过配置文件,配置管理各业务对象的状态流程,基于配置文件可以转换为有向图,具体进行状态变更控制时,根据有向图,确定流程节点对应代码逻辑的执行顺序以及是否可执行的流程节点。
本发明实施例可以使用XML的配置方式,可视化效果较佳;对于XML的解析技术,各种编程语言有较成熟、方便的工具类库,可提高开发效率;对于有多种(3种以上)状态变更的逻辑控制的系统,本方案可以显著降低代码复杂度、代码量,增强代码可读性,实现系统可持续性迭代开发;可以利用gotoState配置,执行一系列的流程节点(每个节点对应相应的逻辑代码),提高每个流程节点实现的代码逻辑的通用性,提高可复用性,从而减少重复代码量;改变了状态变更逻辑控制与业务逻辑的分离,逻辑控制通过配置文件进行配置管理,而不是传统上利用代码里的if-else判断,业务逻辑则可以抽象为粒度更小的一系列执行单元(流程节点),对于可复用的执行单元,可进行多次配置,或者直接跳转,例如上例中的“交易关闭”节点,在退款成功、打款成功节点执行完之后,都可以自动跳转到“交易关闭”节点,自动执行。
图4是本发明实施例提供的一种状态变更控制装置的结构框图,如图4所示,该状态变更控制装置包括:
变更请求接收模块410,用于接收对目标业务对象的状态变更请求,所述状态变更请求包括当前对象状态;
有向图获取模块420,用于获取与所述目标业务对象对应的有向图,所述有向图包括多个流程节点和所述多个流程节点之间的顺序关系,所述流程节点包括代码逻辑标识和对象状态;
状态变更控制模块430,用于根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更。
可选的,所述装置还包括:
配置文件获取模块,用于获取配置文件,所述配置文件包括所述目标业务对象的状态流程;
配置文件解析模块,用于解析所述配置文件,生成与所述目标业务对象的状态流程对应的有向图。
可选的,所述配置文件还包括所述目标业务对象外的其他业务对象的状态流程;
所述配置文件解析模块还用于:
生成与每个所述其他业务对象的状态流程对应的有向图。
可选的,所述配置文件的文件格式为XML。
可选的,所述状态变更控制模块包括:
当前节点确定单元,用于确定所述当前对象状态对应的当前流程节点;
获取单元,用于获取所述当前流程节点的代码逻辑标识所对应的当前代码逻辑,执行所述当前代码逻辑,并基于执行结果获取用户操作数据;
对象状态变更单元,用于根据所述用户操作数据和所述顺序关系,确定所述当前流程节点的下一流程节点,并根据所述下一流程节点的对象状态变更所述当前对象状态。
可选的,所述流程节点还包括节点属性;
所述对象状态变更单元还包括:
下一节点确定子单元,用于根据所述用户操作数据、所述当前流程节点的节点属性和所述顺序关系,确定所述当前流程节点的下一流程节点。
可选的,所述节点属性包括跳转至目标流程节点或者变更为目标对象状态。
本发明实施例提供的状态变更控制装置,用于实现本发明实施例所述的状态变更控制方法的各步骤,装置的各模块的具体实施方式参见相应步骤,此处不再赘述。
本发明实施例提供的状态变更控制装置,通过在接收到对目标业务对象的状态变更请求时,获取与目标业务对象对应的有向图,有向图包括多个流程节点和多个流程节点之间的顺序关系,流程节点包括代码逻辑标识和对象状态,根据当前对象状态和有向图中的顺序关系,控制执行流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更,通过有向图来结合业务的代码逻辑与对象状态变更的控制,避免了两者的分离,提高了对象状态变更控制的灵活性。
优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述状态变更控制方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述状态变更控制方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种状态变更控制方法,其特征在于,包括:
接收对目标业务对象的状态变更请求,所述状态变更请求包括当前对象状态;
获取与所述目标业务对象对应的有向图,所述有向图包括多个流程节点和所述多个流程节点之间的顺序关系,所述流程节点包括代码逻辑标识和对象状态;
根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更。
2.根据权利要求1所述的方法,其特征在于,在获取与所述目标业务对象对应的有向图之前,还包括:
获取配置文件,所述配置文件包括所述目标业务对象的状态流程;
解析所述配置文件,生成与所述目标业务对象的状态流程对应的有向图。
3.根据权利要求2所述的方法,其特征在于,所述配置文件还包括所述目标业务对象外的其他业务对象的状态流程;
所述方法还包括:
生成与每个所述其他业务对象的状态流程对应的有向图。
4.根据权利要求2或3所述的方法,其特征在于,所述配置文件的文件格式为XML。
5.根据权利要求1-3任一项所述的方法,其特征在于,根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更,包括:
确定所述当前对象状态对应的当前流程节点;
获取所述当前流程节点的代码逻辑标识所对应的当前代码逻辑,执行所述当前代码逻辑,并基于执行结果获取用户操作数据;
根据所述用户操作数据和所述顺序关系,确定所述当前流程节点的下一流程节点,并根据所述下一流程节点的对象状态变更所述当前对象状态。
6.根据权利要求5所述的方法,其特征在于,所述流程节点还包括节点属性;
根据所述用户操作数据和所述顺序关系,确定所述当前流程节点的下一流程节点,包括:
根据所述用户操作数据、所述当前流程节点的节点属性和所述顺序关系,确定所述当前流程节点的下一流程节点。
7.根据权利要求6所述的方法,其特征在于,所述节点属性包括跳转至目标流程节点或者变更为目标对象状态。
8.一种状态变更控制装置,其特征在于,包括:
变更请求接收模块,用于接收对目标业务对象的状态变更请求,所述状态变更请求包括当前对象状态;
有向图获取模块,用于获取与所述目标业务对象对应的有向图,所述有向图包括多个流程节点和所述多个流程节点之间的顺序关系,所述流程节点包括代码逻辑标识和对象状态;
状态变更控制模块,用于根据所述当前对象状态和所述顺序关系,控制执行所述流程节点的代码逻辑标识所对应的代码逻辑,并执行对象状态的变更。
9.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的状态变更控制方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的状态变更控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210208082.3A CN114663177A (zh) | 2022-03-03 | 2022-03-03 | 状态变更控制方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210208082.3A CN114663177A (zh) | 2022-03-03 | 2022-03-03 | 状态变更控制方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114663177A true CN114663177A (zh) | 2022-06-24 |
Family
ID=82028386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210208082.3A Pending CN114663177A (zh) | 2022-03-03 | 2022-03-03 | 状态变更控制方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114663177A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116402474A (zh) * | 2023-06-01 | 2023-07-07 | 快应数科(北京)科技有限公司 | 支持非路由方向进行流转的工作流引擎流转方法和装置 |
-
2022
- 2022-03-03 CN CN202210208082.3A patent/CN114663177A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116402474A (zh) * | 2023-06-01 | 2023-07-07 | 快应数科(北京)科技有限公司 | 支持非路由方向进行流转的工作流引擎流转方法和装置 |
CN116402474B (zh) * | 2023-06-01 | 2023-09-05 | 快应数科(北京)科技有限公司 | 支持非路由方向进行流转的工作流引擎流转方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100498695C (zh) | 工作流进度表创作工具 | |
Perrouin et al. | Reconciling automation and flexibility in product derivation | |
EP1868087B1 (en) | System and method for configuration application programs | |
CN109710243B (zh) | 基于可视化平台的区块链开发方法、装置、服务器及介质 | |
CN109684057A (zh) | 任务处理方法、装置和存储介质 | |
US20150120479A1 (en) | Catalog driven order management for rule definition | |
CN112669110A (zh) | 服务器标签管理方法及相关设备 | |
CN103577165A (zh) | 一种表单生成方法和表单生成器 | |
JP2012104134A (ja) | 構成要素を使用してコンピュータによる実行可能なコードを生成する方法及び装置 | |
CN104067228A (zh) | 入门者应用中的上下文诱导 | |
CN100478885C (zh) | 事件驱动的计算机系统和用于事件驱动的解决方案的方法 | |
CN115860451A (zh) | 一种流程运行方法、装置、电子设备及存储介质 | |
CN116185383A (zh) | 一种可拖拽自配置式的工作流生成方法及系统 | |
CN114663177A (zh) | 状态变更控制方法、装置、电子设备及存储介质 | |
CN116069300A (zh) | 工作流控制代码生成方法、装置、电子设备及存储介质 | |
CN102541544B (zh) | 树形控件的处理方法、装置及系统 | |
CN107220044B (zh) | 基于元模型驱动业务对象的方法和装置 | |
JP5195441B2 (ja) | サーバ、ソフトウェア評価作業管理システム、及びプログラム | |
CN113568614A (zh) | 任务发布方法、电子设备及存储介质 | |
CN117348846A (zh) | 一种软件开发需求文档的生成方法、装置及电子设备 | |
CN116911763A (zh) | 流程审批方法、装置、终端设备以及存储介质 | |
EP2249294A2 (en) | Using abstraction layers to facilitate communication between systems | |
CN101765078A (zh) | 一种电信业务结算方法、装置及系统 | |
CN112418796A (zh) | 子流程节点激活方法、装置、电子设备及存储介质 | |
CN104765602B (zh) | 非功能需求实现策略的量化选择方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |