CN106775906A - 业务流程处理方法及装置 - Google Patents

业务流程处理方法及装置 Download PDF

Info

Publication number
CN106775906A
CN106775906A CN201611036432.3A CN201611036432A CN106775906A CN 106775906 A CN106775906 A CN 106775906A CN 201611036432 A CN201611036432 A CN 201611036432A CN 106775906 A CN106775906 A CN 106775906A
Authority
CN
China
Prior art keywords
logical node
operation flow
logical
execution
node
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.)
Granted
Application number
CN201611036432.3A
Other languages
English (en)
Other versions
CN106775906B (zh
Inventor
杜伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NINGBO GUOJI INTERCONNECTION INFORMATION TECHNOLOGY CO.,LTD.
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201611036432.3A priority Critical patent/CN106775906B/zh
Publication of CN106775906A publication Critical patent/CN106775906A/zh
Application granted granted Critical
Publication of CN106775906B publication Critical patent/CN106775906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明的目的在于提供一种业务流程处理方法及装置,所述方法包括:获取待处理的业务流程,检测所述业务流程的逻辑复杂度是否超过预设复杂度阈值;若超过,则将所述业务流程转换成多个逻辑节点,并设置各个所述逻辑节点之间的跳转顺序,其中,每个所述逻辑节点包括一个执行条件表达式和对应的执行语句;确定需要第一个执行的所述逻辑节点;执行确定的所述逻辑节点,并按照各个所述逻辑节点之间的跳转顺序执行其余的所述逻辑节点。通过本发明中的业务流程方法及装置,能够解决当业务流程的逻辑复杂度较高时,相关技术中代码的运行速度低、业务流程的处理效率低的问题。

Description

业务流程处理方法及装置
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种业务流程处理方法及装置。
背景技术
在互联网领域中,后端服务器需要处理多种业务流程,以JAVA语言为例,业务流程在代码实现时,通常采用if、if-else、switch这样的逻辑语法表示各个函数之间的逻辑关系。
相关技术中,开发人员利用现有的编程语言编写好业务流程的代码后,将代码提交至服务器,服务器内运行有编译器,编译器依靠预先设置的程序运行代码,实现业务流程的处理。
然而相关技术中,当业务流程的逻辑复杂度较高时,如采用大量的if、if-else、switch语句时,编译器编译代码的过程将很复杂,导致代码的编译速度降低,进而降低代码的运行速度,降低业务流程的处理效率。
发明内容
有鉴于此,本发明的目的在于提供一种业务流程处理方法及装置,以解决当业务流程的逻辑复杂度较高时,相关技术中代码的运行速度低、业务流程的处理效率低的问题。
第一方面,本发明实施例提供了一种业务流程处理方法,所述方法包括:获取待处理的业务流程,检测所述业务流程的逻辑复杂度是否超过预设复杂度阈值;若超过,则将所述业务流程转换成多个逻辑节点,并设置各个所述逻辑节点之间的跳转顺序,其中,每个所述逻辑节点包括一个执行条件表达式和对应的执行语句;确定需要第一个执行的所述逻辑节点;执行确定的所述逻辑节点,并按照各个所述逻辑节点之间的跳转顺序执行其余的所述逻辑节点。
结合第一方面,本发明实施例提供了第一方面第一种可能的实施方式,其中,所述检测所述业务流程的逻辑复杂度是否超过预设复杂度阈值,包括:检测所述业务流程中执行条件表达式的数量;当所述执行条件表达式的数量超过预设数量阈值时,确定所述业务流程的逻辑复杂度超过所述预设复杂度阈值。
结合第一方面,本发明实施例提供了第一方面第二种可能的实施方式,其中,所述将所述业务流程转换成多个逻辑节点,并设置各个所述逻辑节点之间的跳转顺序,包括:确定所述业务流程中的各个执行条件表达式和对应的执行语句,将每个所述执行条件表达式和对应的执行语句作为一个逻辑节点提取出来;根据各个所述逻辑节点包括的执行条件表达式在所述业务流程中的顺序确定各个所述逻辑节点的跳转顺序。
结合第一方面第二种可能的实施方式,本发明实施例提供了第一方面第三种可能的实施方式,其中,在所述根据各个所述逻辑节点包括的执行条件表达式在所述业务流程中的顺序确定各个所述逻辑节点的跳转顺序之后,所述方法还包括:根据各个所述逻辑节点的提取顺序为各个所述逻辑节点编号;根据当前的所述逻辑节点的下一个所述逻辑节点的序号生成当前的所述逻辑节点的跳转参数,将所述跳转参数添加到当前的所述逻辑节点内。
结合第一方面,本发明实施例提供了第一方面第四种可能的实施方式,其中,所述确定需要第一个执行的所述逻辑节点,包括:根据用户输入的设置指令确定需要第一个执行的所述逻辑节点。
第二方面,本发明实施例提供了一种业务流程处理装置,所述装置包括:检测模块,用于获取待处理的业务流程,检测所述业务流程的逻辑复杂度是否超过预设复杂度阈值;设置模块,用于若超过,则将所述业务流程转换成多个逻辑节点,并设置各个所述逻辑节点之间的跳转顺序,其中,每个所述逻辑节点包括一个执行条件表达式和对应的执行语句;确定模块,用于确定需要第一个执行的所述逻辑节点;执行模块,用于执行确定的所述逻辑节点,并按照各个所述逻辑节点之间的跳转顺序执行其余的所述逻辑节点。
结合第二方面,本发明实施例提供了第二方面第一种可能的实施方式,其中,所述检测模块包括:数量检测子模块,用于检测所述业务流程中执行条件表达式的数量;复杂度确定子模块,用于当所述执行条件表达式的数量超过预设数量阈值时,确定所述业务流程的逻辑复杂度超过所述预设复杂度阈值。
结合第二方面,本发明实施例提供了第二方面第二种可能的实施方式,其中,所述设置模块包括:提取子模块,用于确定所述业务流程中的各个执行条件表达式和对应的执行语句,将每个所述执行条件表达式和对应的执行语句作为一个逻辑节点提取出来;顺序确定子模块,用于根据各个所述逻辑节点包括的执行条件表达式在所述业务流程中的顺序确定各个所述逻辑节点的跳转顺序。
结合第二方面第二种可能的实施方式,本发明实施例提供了第二方面第三种可能的实施方式,其中,所述设置模块还包括:编号子模块,用于根据各个所述逻辑节点的提取顺序为各个所述逻辑节点编号;参数生成子模块,用于根据当前的所述逻辑节点的下一个所述逻辑节点的序号生成当前的所述逻辑节点的跳转参数,将所述跳转参数添加到当前的所述逻辑节点内。
结合第二方面,本发明实施例提供了第二方面第四种可能的实施方式,其中,所述确定模块具体用于:根据用户输入的设置指令确定需要第一个执行的所述逻辑节点。
通过本发明实施例中的业务流程处理方法及装置,在业务流程的逻辑复杂度较高时,将业务流程转换成多个逻辑节点,并设置各个逻辑节点之间的跳转顺序,根据各个逻辑节点之间的跳转顺序执行各个逻辑节点,从而执行业务流程。与相关技术中直接编译的方式相比,将复杂的业务流程转换为逻辑节点的形式后,能够提高编译和运行效率,从而提高业务流程的处理效率,从而解决当业务流程的逻辑复杂度较高时,相关技术中代码的运行速度低、业务流程的处理效率低的问题。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的业务流程处理方法的流程示意图;
图2为本发明实施例提供的if-else语句的逻辑关系图;
图3为本发明实施例提供的switch语句的逻辑关系图;
图4提供了本发明实施例的逻辑节点的一种示意图;
图5提供了本发明实施例的逻辑节点的另一种示意图;
图6提供了本发明实施例的逻辑节点的又一种示意图;
图7提供了本发明实施例的业务流程处理装置的模块组成示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到相关技术中当业务流程的逻辑复杂度较高时,代码的运行速度低、业务流程的处理效率低的问题,本发明实施例提供了一种业务流程处理方法及装置,下面通过实施例进行具体描述。
本发明实施例提供了一种业务流程处理方法,该方法的执行主体为服务器,图1为本发明实施例提供的业务流程处理方法的流程示意图,如图1所示,该流程包括以下步骤:
步骤S102,获取待处理的业务流程,检测业务流程的逻辑复杂度是否超过预设复杂度阈值。
获取待处理的业务流程,该业务流程为一段代码,由开发人员采用JVAV、C、C++等编程语言编写,编写完成后提交至服务器。一种具体的实施例中,服务器只能解析指定编程语言编写的业务流程,该种情况下,开发人员需要按照服务器能够解析的编程语言编写业务流程。服务器接收开发人员提交的业务流程并解析,解析后检测业务流程的逻辑复杂度是否超过预设复杂度阈值。
考虑到对于逻辑复杂度较高的业务流程,其中包括大量的执行条件表达式,因此本发明实施例中,检测业务流程中执行条件表达式的数量,当执行条件表达式的数量超过预设数量阈值时,确定业务流程的逻辑复杂度超过预设复杂度阈值。
图2为本发明实施例提供的if-else语句的逻辑关系图,if-else语句的代码示例如下:
结合图2和该if-else语句的代码示例可知,在if-else语句中存在大量的执行条件表达式,本实施例中,检测业务流程中执行条件表达式的数量,具体地,读取业务流程中的if字段,将if字段后面的第一个表达式确定为执行条件表达式,检测确定的执行条件表达式的数量,当执行条件表达式的数量超过预设数量阈值时,如超过200条时,确定业务流程的逻辑复杂度超过预设复杂度阈值。
图3为本发明实施例提供的switch语句的逻辑关系图,switch语句的代码示例如下:
结合图3和该switch语句的代码示例可知,在switch语句中存在大量的执行条件表达式,本实施例中,检测业务流程中执行条件表达式的数量,具体地,读取业务流程中的case字段,将case字段后面的第一个表达式确定为执行条件表达式,检测确定的执行条件表达式的数量,当执行条件表达式的数量超过预设数量阈值时,如超过300条时,确定业务流程的逻辑复杂度超过预设复杂度阈值。
考虑到程序员在编写业务流程的代码时,通常结合使用if-else语句和switch语句,在一种具体的实施例中,读取业务流程中的if字段,将if字段后面的第一个表达式确定为执行条件表达式,并且,读取业务流程中的case字段,将case字段后面的第一个表达式确定为执行条件表达式,检测确定的执行条件表达式的数量,当执行条件表达式的数量超过预设数量阈值时,如超过400条时,确定业务流程的逻辑复杂度超过预设复杂度阈值。
若业务流程的逻辑复杂度没有超过预设复杂度阈值,则服务器不做额外处理,按照相关技术中的编译方法编译业务流程并执行,若业务流程的逻辑复杂度超过预设复杂度阈值,则执行步骤S104。
步骤S104,若业务流程的逻辑复杂度超过预设复杂度阈值,则将业务流程转换成多个逻辑节点,并设置各个逻辑节点之间的跳转顺序,其中,每个逻辑节点包括一个执行条件表达式和对应的执行语句。
具体地,本步骤通过以下两个过程实现:
(1)确定业务流程中的各个执行条件表达式和对应的执行语句,将每个执行条件表达式和对应的执行语句作为一个逻辑节点提取出来。
以if-else语句为例,执行条件表达式为字段if后面的第一个表达式,执行条件表达式对应的执行语句为执行条件表达式和else if之间的语句。具体地,服务器分析业务流程内的代码字段,读取业务流程中的if字段,将if字段后面的第一个表达式确定为执行条件表达式,并从执行条件表达式开始继续读取,直至读取到else if字段,将执行条件表达式和else if字段之间的语句作为该执行条件表达式对应的执行语句。
以switch语句为例,执行条件表达式为字段case后面的第一个表达式,执行条件表达式对应的执行语句为执行条件表达式和break之间的语句。具体地,服务器分析业务流程内的代码字段,读取业务流程中的case字段,将case字段后面的第一个表达式确定为执行条件表达式,并从执行条件表达式开始继续读取,直至读取到break字段,将执行条件表达式和break字段之间的语句作为该执行条件表达式对应的执行语句。
将每个执行条件表达式和对应的执行语句作为一个逻辑节点提取出来。
(2)根据各个逻辑节点包括的执行条件表达式在业务流程中的顺序确定各个逻辑节点的跳转顺序。
通常情况下,各个逻辑节点包括的执行条件表达式在业务流程中的顺序表示各个执行条件表达式的执行顺序,因此,确定各个逻辑节点的跳转顺序与各个逻辑节点包括的执行条件表达式在业务流程中的顺序一致,其中,各个逻辑节点包括的执行条件表达式在业务流程中的顺序能够在解析业务流程的过程中确定。
以上述if-else语句的代码示例为例,能够确定三个逻辑节点A、B、C,各个逻辑节点分别包括执行条件表达式1+语句1、执行条件表达式2+语句2、执行条件表达式3+语句3,由于从if-else语句的代码示例中能够确定,执行条件表达式1位于执行条件表达式2之前,执行条件表达式2位于执行条件表达式3之前,因此能够确定逻辑节点A位于逻辑节点B之前,逻辑节点B位于逻辑节点C之前,此时设置各个逻辑节点的跳转顺序为逻辑节点A、逻辑节点B、逻辑节点C。
以上述switch语句的代码示例为例,能够确定三个逻辑节点A、B、C,各个逻辑节点分别包括执行条件表达式1+语句1、执行条件表达式2+语句2、执行条件表达式3+语句3,由于从switch语句的代码示例中能够确定,执行条件表达式1位于执行条件表达式2之前,执行条件表达式2位于执行条件表达式3之前,因此能够确定逻辑节点A位于逻辑节点B之前,逻辑节点B位于逻辑节点C之前,此时设置各个逻辑节点的跳转顺序为逻辑节点A、逻辑节点B、逻辑节点C。
为了在各个逻辑节点内记录各个逻辑节点的下一个逻辑节点,本发明实施例中的方法还包括:
根据各个逻辑节点的提取顺序为各个逻辑节点编号;
根据当前的逻辑节点的下一个逻辑节点的序号生成当前的逻辑节点的跳转参数,将该跳转参数添加到当前的逻辑节点内。
具体地,在提取各个逻辑节点的过程中,根据各个逻辑节点的提取顺序为各个逻辑节点编号,如逻辑节点1、逻辑节点2等。在确定了各个逻辑节点的跳转顺序之后,也就确定了当前的逻辑节点的下一个逻辑节点,此时根据当前的逻辑节点的下一个逻辑节点的序号生成当前的逻辑节点的跳转参数,该跳转参数能够包括当前的逻辑节点的下一个逻辑节点的序号,将该跳转参数添加到当前的逻辑节点内,从而在执行完成当前的逻辑节点后,确定下一个执行的逻辑节点的序号。
图4提供了本发明实施例的逻辑节点的一种示意图,图中箭头表示各个逻辑节点之间的执行顺序,如图4所示,每个逻辑节点具有一个唯一的序号,各个逻辑节点之间的序号连续,该序号表示各个逻辑节点的提取顺序,每个逻辑节点均包括一个执行条件表达式和对应的执行语句,各个逻辑节点之间的跳转顺序与各个逻辑节点包括的执行条件表达式在业务流程中的顺序一致。图4中,各个逻辑节点顺序执行。
图5提供了本发明实施例的逻辑节点的另一种示意图,图中箭头表示各个逻辑节点之间的执行顺序,如图5所示,每个逻辑节点具有一个唯一的序号,各个逻辑节点之间的序号连续,该序号表示各个逻辑节点的提取顺序,每个逻辑节点均包括一个执行条件表达式和对应的执行语句,各个逻辑节点之间的跳转顺序与各个逻辑节点包括的执行条件表达式在业务流程中的顺序一致。与图4的区别在于,图5中,逻辑节点2中的跳转参数包括的是逻辑节点4的序号,因此在执行完逻辑节点2之后,略过逻辑节点3,直接执行逻辑节点4。
图6提供了本发明实施例的逻辑节点的又一种示意图,图中箭头表示各个逻辑节点之间的执行顺序,如图6所示,每个逻辑节点具有一个唯一的序号,各个逻辑节点之间的序号连续,该序号表示各个逻辑节点的提取顺序,每个逻辑节点均包括一个执行条件表达式和对应的执行语句,各个逻辑节点之间的跳转顺序与各个逻辑节点包括的执行条件表达式在业务流程中的顺序一致。与图4的区别在于,图6中,逻辑节点2中的跳转参数包括两个,一个是逻辑节点3的序号,一个是逻辑节点4的序号,当逻辑节点2的执行结果为一种情况时,执行逻辑节点3,当逻辑节点2的执行结果为另一种情况时,执行逻辑节点4,逻辑节点3中的跳转参数包括的是逻辑节点2的序号,从而使得逻辑节点2与逻辑节点3在功能逻辑上产生了一个循环。
在确定各个逻辑节点之间的跳转顺序后,执行步骤S106和步骤S108。
步骤S106,确定需要第一个执行的逻辑节点。
具体地,根据用户输入的设置指令确定需要第一个执行的逻辑节点。用户输入的设置指令中包括确定需要第一个执行的逻辑节点的序号,或者包括需要第一个执行的逻辑节点的执行条件表达式,还能够包括开始执行时间。
步骤S108,执行确定的该逻辑节点,并按照各个逻辑节点之间的跳转顺序执行其余的逻辑节点。
确定需要第一个执行的逻辑节点,执行该需要第一个执行的逻辑节点,并按照各个逻辑节点之间的跳转顺序自动执行其余的逻辑节点。
通过本发明实施例中的方法,在业务流程的逻辑复杂度较高时,将业务流程转换成多个逻辑节点,并设置各个逻辑节点之间的跳转顺序,根据各个逻辑节点之间的跳转顺序执行各个逻辑节点,从而执行业务流程。与相关技术中直接编译的方式相比,将复杂的业务流程转换为逻辑节点的形式后,能够提高编译和运行效率,从而提高业务流程的处理效率,从而解决当业务流程的逻辑复杂度较高时,相关技术中代码的运行速度低、业务流程的处理效率低的问题。
对于服务器而言,其将业务流程转换为逻辑节点的伪代码可以是:
其中,var node表示提取后的逻辑节点,console.log(‘’)表示业务流程中的执行条件表达式和对应的执行语句。
将逻辑节点加入到新开发的类process中,使用process的push方法,代码如下:
process.push(node1);
process.push(node2);
process.push(node3);
其中,node表示前面转换好的Process的逻辑节点。
在真实的业务场景中,如果逻辑节点特别多,可以使用process的concat方法,代码如下:
process.concat(nodes);
Node表示前面转换好的Process的逻辑节点,这里是为了简化push操作,在Process的中可以通过concat一次性批量添加逻辑节点。
如上所述,逻辑节点被加入到process中后,变成了process内部一个后续的逻辑节点集合(以下简称“逻辑节点集合”),每个逻辑节点都有自己唯一的坐标,坐标值依次为:0,1,2,3,4,5,6,坐标值可以按照逻辑节点的转换顺序定义。
process负责每一个逻辑节点的执行,并会传入三个参数给逻辑节点:
1.prev:执行上一个逻辑节点的代理函数
2.next:执行下一个逻辑节点的代理函数
3.jump:根据坐标执行任意一个逻辑节点的代理函数
代码如下:
var node=function(prev,next,jump){
}
prev,next,jump都是process内部封装的函数,受process控制。
process的详细运行逻辑如下:
1.主动调用process.start(),process会获取内部逻辑节点集合的第一个逻辑节点,并执行。
2.第一个逻辑节点被执行后,接到上述的三个参数,根据自身的功能逻辑,判断是否执行后续的逻辑节点。
a)执行当前逻辑节点的上一个逻辑节点,调用第一个参数prev(),process会判断,如果当前逻辑节点有上一个逻辑节点,则获取当前逻辑节点的上一个逻辑节点并执行。
b)执行当前逻辑节点的下一个逻辑节点,调用第二个参数next(),process会判断,如果当前逻辑节点有下一个逻辑节点,则获取当前逻辑节点的下一个逻辑节点并执行。
c)执行当前逻辑节点集合中的任意一个逻辑节点,调用第三个参数jump(index),index是一个数值类型的整数值,代表逻辑节点集合中的逻辑节点的坐标,process会根据index判断,如果当前逻辑节点集合中有逻辑节点,则获取这个逻辑节点并执行。
通过prev,next,jump三个process监控的三个代理函数,逻辑节点与逻辑节点之间的可以串行执行,变相实现了流程中逻辑节点的串行关系和递进关系,这样可以兼容JavaScript中的异步编程现象,代码如下:
其中prev,next,jump也即上述的逻辑节点的跳转参数。从该逻辑节点的伪代码可以看出,采用本发明中的业务流程处理方法时,开发人员能够编写异步流程,从而兼容JavaScript中的异步编程现象。通过本发明实施例中的方法,在业务流程的逻辑复杂度较高时,能够便于流程问题的维护和扩展,提高业务处理效率。
对应上述的业务流程处理方法,本发明实施例还提供了一种业务流程处理装置,如图7所示,该装置包括:
检测模块71,用于获取待处理的业务流程,检测业务流程的逻辑复杂度是否超过预设复杂度阈值;
设置模块72,用于若超过,则将业务流程转换成多个逻辑节点,并设置各个逻辑节点之间的跳转顺序,其中,每个逻辑节点包括一个执行条件表达式和对应的执行语句;
确定模块73,用于确定需要第一个执行的逻辑节点;
执行模块74,用于执行确定的逻辑节点,并按照各个逻辑节点之间的跳转顺序执行其余的逻辑节点。
通过本发明实施例中的装置,在业务流程的逻辑复杂度较高时,将业务流程转换成多个逻辑节点,并设置各个逻辑节点之间的跳转顺序,根据各个逻辑节点之间的跳转顺序执行各个逻辑节点,从而执行业务流程。与相关技术中直接编译的方式相比,将复杂的业务流程转换为逻辑节点的形式后,能够提高编译和运行效率,从而提高业务流程的处理效率,从而解决当业务流程的逻辑复杂度较高时,相关技术中代码的运行速度低、业务流程的处理效率低的问题。
进一步地,上述检测模块71包括:数量检测子模块,用于检测所述业务流程中执行条件表达式的数量;复杂度确定子模块,用于当所述执行条件表达式的数量超过预设数量阈值时,确定所述业务流程的逻辑复杂度超过所述预设复杂度阈值。
进一步地,上述设置模块72包括:提取子模块,用于确定所述业务流程中的各个执行条件表达式和对应的执行语句,将每个所述执行条件表达式和对应的执行语句作为一个逻辑节点提取出来;顺序确定子模块,用于根据各个所述逻辑节点包括的执行条件表达式在所述业务流程中的顺序确定各个所述逻辑节点的跳转顺序。
进一步地,上述设置模块72还包括:编号子模块,用于根据各个所述逻辑节点的提取顺序为各个所述逻辑节点编号;参数生成子模块,用于根据当前的所述逻辑节点的下一个所述逻辑节点的序号生成当前的所述逻辑节点的跳转参数,将所述跳转参数添加到当前的所述逻辑节点内。
进一步地,上述确定模块73具体用于:根据用户输入的设置指令确定需要第一个执行的所述逻辑节点。
采用本发明中的业务流程处理装置时,开发人员能够编写异步流程,从而兼容JavaScript中的异步编程现象。通过本发明实施例中的装置,在业务流程的逻辑复杂度较高时,能够便于流程问题的维护和扩展,提高业务处理效率。
本发明实施例所提供的业务流程处理装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种业务流程处理方法,其特征在于,所述方法包括:
获取待处理的业务流程,检测所述业务流程的逻辑复杂度是否超过预设复杂度阈值;
若超过,则将所述业务流程转换成多个逻辑节点,并设置各个所述逻辑节点之间的跳转顺序,其中,每个所述逻辑节点包括一个执行条件表达式和对应的执行语句;
确定需要第一个执行的所述逻辑节点;
执行确定的所述逻辑节点,并按照各个所述逻辑节点之间的跳转顺序执行其余的所述逻辑节点。
2.根据权利要求1所述的方法,其特征在于,所述检测所述业务流程的逻辑复杂度是否超过预设复杂度阈值,包括:
检测所述业务流程中执行条件表达式的数量;
当所述执行条件表达式的数量超过预设数量阈值时,确定所述业务流程的逻辑复杂度超过所述预设复杂度阈值。
3.根据权利要求1所述的方法,其特征在于,所述将所述业务流程转换成多个逻辑节点,并设置各个所述逻辑节点之间的跳转顺序,包括:
确定所述业务流程中的各个执行条件表达式和对应的执行语句,将每个所述执行条件表达式和对应的执行语句作为一个逻辑节点提取出来;
根据各个所述逻辑节点包括的执行条件表达式在所述业务流程中的顺序确定各个所述逻辑节点的跳转顺序。
4.根据权利要求3所述的方法,其特征在于,在所述根据各个所述逻辑节点包括的执行条件表达式在所述业务流程中的顺序确定各个所述逻辑节点的跳转顺序之后,所述方法还包括:
根据各个所述逻辑节点的提取顺序为各个所述逻辑节点编号;
根据当前的所述逻辑节点的下一个所述逻辑节点的序号生成当前的所述逻辑节点的跳转参数,将所述跳转参数添加到当前的所述逻辑节点内。
5.根据权利要求1所述的方法,其特征在于,所述确定需要第一个执行的所述逻辑节点,包括:
根据用户输入的设置指令确定需要第一个执行的所述逻辑节点。
6.一种业务流程处理装置,其特征在于,所述装置包括:
检测模块,用于获取待处理的业务流程,检测所述业务流程的逻辑复杂度是否超过预设复杂度阈值;
设置模块,用于若超过,则将所述业务流程转换成多个逻辑节点,并设置各个所述逻辑节点之间的跳转顺序,其中,每个所述逻辑节点包括一个执行条件表达式和对应的执行语句;
确定模块,用于确定需要第一个执行的所述逻辑节点;
执行模块,用于执行确定的所述逻辑节点,并按照各个所述逻辑节点之间的跳转顺序执行其余的所述逻辑节点。
7.根据权利要求6所述的装置,其特征在于,所述检测模块包括:
数量检测子模块,用于检测所述业务流程中执行条件表达式的数量;
复杂度确定子模块,用于当所述执行条件表达式的数量超过预设数量阈值时,确定所述业务流程的逻辑复杂度超过所述预设复杂度阈值。
8.根据权利要求6所述的装置,其特征在于,所述设置模块包括:
提取子模块,用于确定所述业务流程中的各个执行条件表达式和对应的执行语句,将每个所述执行条件表达式和对应的执行语句作为一个逻辑节点提取出来;
顺序确定子模块,用于根据各个所述逻辑节点包括的执行条件表达式在所述业务流程中的顺序确定各个所述逻辑节点的跳转顺序。
9.根据权利要求8所述的装置,其特征在于,所述设置模块还包括:
编号子模块,用于根据各个所述逻辑节点的提取顺序为各个所述逻辑节点编号;
参数生成子模块,用于根据当前的所述逻辑节点的下一个所述逻辑节点的序号生成当前的所述逻辑节点的跳转参数,将所述跳转参数添加到当前的所述逻辑节点内。
10.根据权利要求6所述的装置,其特征在于,所述确定模块具体用于:
根据用户输入的设置指令确定需要第一个执行的所述逻辑节点。
CN201611036432.3A 2016-11-22 2016-11-22 业务流程处理方法及装置 Active CN106775906B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611036432.3A CN106775906B (zh) 2016-11-22 2016-11-22 业务流程处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611036432.3A CN106775906B (zh) 2016-11-22 2016-11-22 业务流程处理方法及装置

Publications (2)

Publication Number Publication Date
CN106775906A true CN106775906A (zh) 2017-05-31
CN106775906B CN106775906B (zh) 2020-08-04

Family

ID=58970345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611036432.3A Active CN106775906B (zh) 2016-11-22 2016-11-22 业务流程处理方法及装置

Country Status (1)

Country Link
CN (1) CN106775906B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109740834A (zh) * 2018-11-13 2019-05-10 平安科技(深圳)有限公司 工作流引擎控制方法、装置、计算机设备及存储介质
CN111522601A (zh) * 2020-04-22 2020-08-11 北京思特奇信息技术股份有限公司 一种灵活配置多个组件任务的后端运行方法及系统
CN112215507A (zh) * 2020-06-30 2021-01-12 北京来也网络科技有限公司 结合ai的rpa系统流程复杂度确定方法与装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438741B1 (en) * 1998-09-28 2002-08-20 Compaq Computer Corporation System and method for eliminating compile time explosion in a top down rule based system using selective sampling
CN101404696A (zh) * 2008-11-03 2009-04-08 中兴通讯股份有限公司 可视化业务流程跟踪方法和系统、业务流程处理系统
CN102541875A (zh) * 2010-12-16 2012-07-04 北京大学 有向无环图的关系型节点数据的存取方法、装置及系统
CN102799962A (zh) * 2012-06-27 2012-11-28 南京合荣欣业信息技术有限公司 一种配置型业务流程系统及其实现方法
CN106508009B (zh) * 2010-12-31 2014-07-02 上海机电工程研究所 一种面向过程的高级语言源程序流程图的生成方法
CN105808624A (zh) * 2014-12-31 2016-07-27 航天信息软件技术有限公司 节点数据的处理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438741B1 (en) * 1998-09-28 2002-08-20 Compaq Computer Corporation System and method for eliminating compile time explosion in a top down rule based system using selective sampling
CN101404696A (zh) * 2008-11-03 2009-04-08 中兴通讯股份有限公司 可视化业务流程跟踪方法和系统、业务流程处理系统
CN102541875A (zh) * 2010-12-16 2012-07-04 北京大学 有向无环图的关系型节点数据的存取方法、装置及系统
CN106508009B (zh) * 2010-12-31 2014-07-02 上海机电工程研究所 一种面向过程的高级语言源程序流程图的生成方法
CN102799962A (zh) * 2012-06-27 2012-11-28 南京合荣欣业信息技术有限公司 一种配置型业务流程系统及其实现方法
CN105808624A (zh) * 2014-12-31 2016-07-27 航天信息软件技术有限公司 节点数据的处理方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LAZYTEST: "白盒测试之圈复杂度,以及可以直接降低圈复杂度的10种重构技", 《HTTPS://BLOG.CSDN.NET/KAKA1121/ARTICLE/DETAILS/52626690》 *
XIAODING133: ""基于Table方法降低代码圈复杂度"", 《HTTPS://BLOG.CSDN.NET/XIAODING133/ARTICLE/DETAILS/45274371》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109740834A (zh) * 2018-11-13 2019-05-10 平安科技(深圳)有限公司 工作流引擎控制方法、装置、计算机设备及存储介质
CN111522601A (zh) * 2020-04-22 2020-08-11 北京思特奇信息技术股份有限公司 一种灵活配置多个组件任务的后端运行方法及系统
CN112215507A (zh) * 2020-06-30 2021-01-12 北京来也网络科技有限公司 结合ai的rpa系统流程复杂度确定方法与装置

Also Published As

Publication number Publication date
CN106775906B (zh) 2020-08-04

Similar Documents

Publication Publication Date Title
CN106020948B (zh) 一种流程调度方法及装置
CN106547520B (zh) 一种代码路径分析方法及装置
CN109272109A (zh) 神经网络模型的指令调度方法及装置
CN102402479B (zh) 用于静态分析的中间表示结构
CN106775906A (zh) 业务流程处理方法及装置
CN107193843A (zh) 一种基于ac自动机和后缀表达式的字符串筛选方法及装置
CN110286917A (zh) 文件打包方法、装置、设备及存储介质
CN101876939B (zh) 系统测试方法及装置
CN104407968B (zh) 一种通过静态分析测算代码指令最长运行时间的方法
CN108197027A (zh) 软件性能优化方法、可存储介质、计算机、计算机程序
CN111813670B (zh) 一种非侵入式mc/dc覆盖率统计分析方法
CN109542444B (zh) Java应用的监控方法、装置、服务器和存储介质
KR20180129623A (ko) 연관된 다중 파일 정적 분석 장치
CN106681852B (zh) 一种浏览器兼容性的调整方法及装置
CN109828759A (zh) 代码编译方法、装置、计算机装置及存储介质
CN107239298A (zh) 应用程序调试方法及装置
CN108132799A (zh) 过程间静态程序分析信息提取方法、装置及设备
CN102411534A (zh) 一种断点调试方法和调试器
CN110888642B (zh) 语音消息编译方法及装置
CN109783134A (zh) 前端页面配置方法、装置及电子设备
CN110244954A (zh) 一种应用程序的编译方法及设备
CN103973716B (zh) 互联网应用实现方法和相关装置及通信系统
CN116541019B (zh) 数据转发方法、系统、设备和可读存储介质
KR20150089570A (ko) 동적 분석 방법 및 장치
CN109284480A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231225

Address after: 315000, 5th floor, No. 19, Building 9, Lane 299, Guanghua Road, High tech Zone, Ningbo City, Zhejiang Province

Patentee after: NINGBO GUOJI INTERCONNECTION INFORMATION TECHNOLOGY CO.,LTD.

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.