CN109634569A - 基于注解的流程实现方法、装置、设备及可读存储介质 - Google Patents

基于注解的流程实现方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN109634569A
CN109634569A CN201811526367.1A CN201811526367A CN109634569A CN 109634569 A CN109634569 A CN 109634569A CN 201811526367 A CN201811526367 A CN 201811526367A CN 109634569 A CN109634569 A CN 109634569A
Authority
CN
China
Prior art keywords
note
node
circulation
operation flow
attribute
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
CN201811526367.1A
Other languages
English (en)
Other versions
CN109634569B (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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201811526367.1A priority Critical patent/CN109634569B/zh
Publication of CN109634569A publication Critical patent/CN109634569A/zh
Application granted granted Critical
Publication of CN109634569B publication Critical patent/CN109634569B/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/20Software design
    • G06F8/22Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种基于注解的流程实现方法,所述方法包括:定义业务流程的特定对象;在预设业务流程框架初始化时,对添加了注解的业务流程的特定对象进行初始化;根据注解内容构建所述业务流程的执行顺序。本发明还提供了一种基于注解的流程实现装置、设备及可读存储介质。本发明解决了现有业务流程管理的轻量化框架不支持按条件进行状态的流程流转,且需要大量改造业务***代码的技术问题。

Description

基于注解的流程实现方法、装置、设备及可读存储介质
技术领域
本发明涉及智能终端技术领域,尤其涉及一种基于注解的流程实现方法、装置、设备及可读存储介质。
背景技术
当前,在业务流程管理方面较为先进的工具主要是JBPM框架。JBPM(JavaBusiness Process Management,业务流程管理)框架是一种架构较为复杂、功能齐全的可执行流程语言框架;该框架由于在使用和集成过程中需要耗费较大的工作量,对于普通的业务***流程来说显得过于复杂,且集成难度大。
此外,也有类似于Spring Statemachine的轻量化框架。Spring Statemachine相较于JBPM框架有着明显的轻量化优势,其采用直接事件触发的形式进行状态的控制。如图1所示,图1为Spring Statemachine的一个状态机图,其中的状态机包含两种状态:状态1、状态2;不同状态之间的切换是通过事件1、事件2进行。此类轻量化框架不支持按条件进行状态的流程流转,因此需要大量改造业务***代码,才能适应具体的业务流程管理。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种基于注解的流程实现方法、装置、设备及可读存储介质,旨在解决现有业务流程管理的轻量化框架不支持按条件进行状态的流程流转,且需要大量改造业务***代码的技术问题。
为实现上述目的,本发明提供一种基于注解的流程实现方法,其特征在于,所述方法包括:
定义业务流程的特定对象;
在预设业务流程框架初始化时,对添加了注解的业务流程的特定对象进行初始化;
根据注解内容构建所述业务流程的执行顺序。
优选地,所述业务流程的特定对象包括:所述业务流程的流程入口节点、所述业务流程的流程步骤、各流程步骤之间的流转条件及各流程步骤的执行代码。
优选地,所述根据注解内容构建所述业务流程的执行顺序的步骤,具体包括:
遍历所述业务流程框架中的类,并获取已添加注解的类的方法集合;
遍历所述类的方法集合,并提取含有注解内容的方法;
基于所提取的方法,检测所述类是否同时含有流程入口节点及流程结束条件;
若所述类同时含有流程入口节点及流程结束条件,则根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序。
优选地,所述提取含有注解内容的方法的步骤之后,还包括:将已提取的方法缓存至键值容器map中;
所述根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序的步骤,具体包括:
从键值容器map中获取流程入口节点,以检查所述流程入口节点是否含有流转条件注解属性;
若所述流程入口节点含有流转条件注解属性,则根据所述流转条件注解属性确定对应的下一流转节点,并检查所述下一流转节点是否含有流转条件注解属性;
若所述下一流转节点含有流转条件注解属性,则继续进行流转节点的确定,并重复流转条件流转属性的检查步骤,直至确定最后一个流转节点,并将最后一个流转节点设置为所述流程结束节点;
若所述下一流转节点不含有流转条件注解属性,则将所述下一流转节点设置为所述流程结束节点。
优选地,所述根据注解内容构建所述业务流程的执行顺序的步骤之后,还包括;
当检测到预设业务流程框架的执行信号时,根据所述特定对象及所述业务流程的执行顺序进行所述业务流程的流转控制;
其中,所述业务流程的各流程步骤之间的参数传递通过上下文的方式进行。
此外,为实现上述目的,本发明还提供一种基于注解的流程实现装置,所述装置包括:
定义模块,用于定义业务流程的特定对象;
注解模块,用于在预设业务流程框架初始化时,对添加了注解的业务流程的特定对象进行初始化;
执行顺序构建模块,用于根据注解内容构建所述业务流程的执行顺序。
优选地,所述业务流程的特定对象包括:所述业务流程的流程入口节点、所述业务流程的流程步骤、各流程步骤之间的流转条件及各流程步骤的执行代码。
优选地,所述执行顺序构建模块具体包括:
遍历单元,用于遍历所述业务流程框架中的类,并获取已添加注解的类的方法集合;
提取单元,用于遍历所述类的方法集合,并提取含有注解内容的方法;
检测单元,用于基于所提取的方法,检测所述类是否同时含有流程入口节点及流程结束条件;
流转确定单元,用于若所述类同时含有流程入口节点及流程结束条件,则根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序。
优选地,所述提取单元,还用于将已提取的方法缓存至键值容器map中;
流转确定单元,具体用于从键值容器map中获取流程入口节点,以检查所述流程入口节点是否含有流转条件注解属性;若所述流程入口节点含有流转条件注解属性,则根据所述流转条件注解属性确定对应的下一流转节点,并检查所述下一流转节点是否含有流转条件注解属性;若所述下一流转节点含有流转条件注解属性,则继续进行流转节点的确定,并重复流转条件流转属性的检查步骤,直至确定最后一个流转节点,并将最后一个流转节点设置为所述流程结束节点;若所述下一流转节点不含有流转条件注解属性,则将所述下一流转节点设置为所述流程结束节点。
优选地,所述装置还包括流转控制模块;
所述流转控制模块,用于当检测到预设业务流程框架的执行信号时,根据所述特定对象及所述业务流程的执行顺序进行所述业务流程的流转控制;
其中,所述业务流程的各流程步骤之间的参数传递通过上下文的方式进行。
此外,为实现上述目的,本发明还提供一种基于注解的流程实现设备,所述基于注解的流程实现设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于注解的流程实现程序,所述基于注解的流程实现程序被所述处理器执行时实现如上任一项所述的基于注解的流程实现方法的步骤。
此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有基于注解的流程流转实现程序,所述基于注解的流程流转实现程序被处理器执行时实现如上任一项所述基于注解的流程实现方法的步骤。
本发明实施例提出一种基于注解的流程实现方法、装置、设备及可读存储介质,通过定义业务流程的特定对象,以及在预设业务流程框架初始化时对业务流程的特定对象添加注解,并根据注解内容构建所述业务流程的执行顺序。这样,避免采用过于复杂且集成难度大的框架,有助于实现业务流程框架的轻量化;同时利用对业务流程的特定对象的定义及添加注解,构建出业务流程的执行顺序,并在业务流程的具体流程执行过程中支持根据条件流转流程,使得代码与业务流程保持一致,方便代码维护;无需大量改造业务***代码,对代码侵入小,在现有代码上稍微改造即可使用,也即具有使用简单和灵活度高的特点。
附图说明
图1为Spring Statemachine的一个状态机示意图;
图2为本发明基于注解的流程实现方法第一实施例的流程示意图;
图3为一种业务流程的生命周期图;
图4为本发明基于注解的流程实现方法第一实施例的步骤S30的细化步骤示意图;
图5为图4中的步骤S34的细化步骤示意图;
图6为本发明基于注解的流程实现方法第二实施例的流程示意图;
图7为本发明基于注解的流程实现方法的某一业务流程的示意图;
图8为本发明基于注解的流程实现装置的功能模块示意图;
图9为本发明基于注解的流程实现装置的执行顺序构建模块30的细化示意图;
图10为本发明基于注解的流程实现装置的另一功能模块示意图。
本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于注解的流程实现方法。
请参见图2,图2为本发明基于注解的流程实现方法的第一实施例的流程示意图。其中,所述方法包括:
步骤S10,定义业务流程的特定对象;
在本发明中,一个业务流程的完整生命周期包含了流程设计、流程定义、流程构建、流程执行、流程结束等主要过程,如图3所示。其中,流程设计过程具体是开发人员将预设业务流程拆分,以得到对应的若干个流程步骤,以及设计各个步骤之间进行流转的流转条件;预设业务流程为具体的已制定业务流程(Business Process);该业务流程可以是通过对某一业务项目需求进行解读和分析后制定的相关流程。以扣款流程为例,把扣款流程进行细化和拆分,拆成如下步骤:1、校验请求参数;2、参数校验失败,直接结束流程,返回参数校验失败;3、参数校验通过,入库;4、扣款,更新状态;5、结束流程,返回结果。
具体地,开发人员根据流程设计内容进行预设业务流程的组织以实现业务流程的特定对象的定义,例如基于逻辑关系进行各个流程步骤的安排,其具体可以包括确定各个流程步骤的执行内容、各个步骤之间进行流转的流转条件。在本实施例中,通过编程以定义业务流程的特定对象。所述预设业务流程的特定对象具体包括:业务流程的流程入口节点(Entry)、业务流程的流程步骤(Step)、各流程步骤之间的流转条件(Condition)及各流程步骤的执行代码。这里需要说明的是,业务流程的流程步骤包含各类节点,例如步骤A、B可以分别包含N个节点、M个节点。
步骤S20,在预设业务流程框架初始化时,对添加了注解的业务流程的特定对象进行初始化;
在***启动时,预设的业务流程框架进行初始化,包括初始化该框架中的各类参数;此时,对添加了注解的业务流程的特定对象进行初始化。
在本发明各实施例中,步骤S20包括对添加了注解的业务流程的特定对象进行初始化的操作,添加注解具体是一种可以添加到编程语言(如Java)源代码中的语法元数据技术。注解可以添加到类、方法、方法的参数以及局部变量上。在程序中加入注解后,编译器、开发工具和其他程序可以通过反射机制获取添加的注解内容,并执行与注解内容相关的动作或过程。
具体添加的注解内容如下文及其对应表格所示。
@BusinessProcess
@Entry
@Step
@End
属性 取值 是否必填 说明
name String
@Route
属性 取值 是否必填 说明
exp String 条件表达式
next String Step名称
其中,@BusinessProcess用于标识一个业务流程,对应某一具体业务流程。其注解内容至少包括业务流程名称及所使用的线程池(executor)。
@Entry用于标识流程入口,对应某一具体业务流程的流程入口节点。其注解内容至少包括流程入口节点的名称、next属性(用于指定Entry的next节点)及发生错误的默认退出条件。
@Step用于标识流程步骤,对应各流程步骤的相关内容。其注解内容包括流程步骤名称、next/nexts属性(用于指定当前节点的下一流转节点)以及当前流程步骤执行前后的调用机制等。
@End用于标识流程结束步骤。
@Route用于标识流程分支路由,其注解内容包括不同的流程步骤进行流转的条件。
步骤S30,根据注解内容构建所述业务流程的执行顺序。
在一具体实施中,如图4所示,步骤S30包括:
步骤S31,遍历所述业务流程框架中的类,并获取已添加注解的类的方法集合;
若某一类上存在任意形式的注解内容,均可以视为该类上存在注解内容。在判断类上是否存在注解内容时,可以查找类上是否存在“@”的标识符号。当检测到当前类上存在注解内容,则将当前类封装的各方法提取(或者标记),进而获取到当前类的方法集合。
若未检测到该类上存在注解内容,则跳过此类,并继续对下一个类执行判断,直至完成所有类的判断。
步骤S32,遍历所述类的方法集合,并提取含有注解内容的方法;
通过遍历当前类中的方法集合,判断某一方法中是否含有注解内容;若是,则提取该方法,以此类推。
优选地,在提取含有注解内容的方法之后,直接执行“基于所提取的方法,检测所述类是否同时含有流程入口节点及流程结束条件,若所述类同时含有流程入口节点及流程结束条件,则根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序”。
进一步地,为了提高基于注解的流程实现的灵活性,在提取含有注解内容的方法之后,将含有注解内容的方法缓存至键值容器map中。这里所称“键值容器map”可以视为数据结构中的键值容器,是一种key-value(键值)的键值对,在具体实现中,以Java为例,有Map接口、hashmap、treemap、hashtable继承之map接口。在Linux中,有mmap()函数,使用mmap替代read,可以减少CPU拷贝次数,同时将***上下文切换次数减少为2次,从而较大幅度提升缓冲与读取速度性能
步骤S33,基于所提取的方法,检测所述类是否同时含有流程入口节点及流程结束条件;
流程入口节点及流程结束条件分别对应业务流程的开始及结束机制,为必要内容。具体地,查找缓存至键值容器map的方法中是否含有上文@Entry及@End的注解内容,确认所述类是否同时含有流程入口节点及流程结束条件其中,流程结束条件对应流程结束步骤。若所提取的方法中同时含有上文@Entry及@End的注解内容,则判定所述类同时含有流程入口节点及流程结束条件。否则,判定所述类不同时含有流程入口节点及流程结束条件,此时输出告警,用以提醒编程人员补足缺漏的项目,以保证业务流程的后续正常执行。
步骤S34,若所述类同时含有流程入口节点及流程结束条件,则根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序。
在一具体实施中,如图5所示,步骤S34包括:a1.从键值容器map中获取流程入口节点(Entry),以检查所述流程入口节点是否含有流转条件注解属性;
a2.若所述流程入口节点含有流转条件注解属性,则根据所述流转条件注解属性确定对应的下一流转节点,并检查所述下一流转节点是否含有流转条件注解属性;
a3.若所述下一流转节点含有流转条件注解属性,则继续进行流转节点的确定,并重复流转条件流转属性的检查步骤,直至确定最后一个流转节点,并将最后一个流转节点设置为所述流程结束节点;
a4.若所述下一流转节点不含有流转条件注解属性,则将所述下一流转节点设置为所述流程结束节点。
即对流程入口节点的注解内容@Entry进行读取,并检测其中是否包含next属性。若否,则直接将下一节点设置为流程结束节点(End)。若是,则将next属性中指定的下一节点确定为“下一流转节点”。进一步地,对已确定的“下一流转节点”所在的流程步骤的注解内容@Step进行读取,并检测其中是否包含next/nexts属性。若否,则将所述“下一流转节点”设置为流程结束节点(End)。若是,则继续进行流转节点的确定,直至确定出最后一个流转节点,进而将最后一个流转节点设置为流程结束节点(End)。需要说明的是,不同步骤之间的条件性流转还需要根据@Route中的注解流转条件实现。步骤S34的具体实现举例还可参照下文的举例说明。
在本实施例中,通过定义业务流程的特定对象,以及在预设业务流程框架初始化时对业务流程的特定对象添加注解,并根据注解内容构建所述业务流程的执行顺序。这样,避免采用过于复杂且集成难度大的框架,有助于实现业务流程框架的轻量化;同时利用对业务流程的特定对象的定义及添加注解,构建出业务流程的执行顺序,并在业务流程的具体流程执行过程中支持根据条件流转流程,使得代码与业务流程保持一致,方便代码维护;无需大量改造业务***代码,对代码侵入小,在现有代码上稍微改造即可使用,也即具有使用简单和灵活度高的特点。
进一步地,在本发明基于注解的流程实现方法的第一实施例的基础上,提出第二实施例。如图6所示,图6为第二实施例的流程示意图。其中,步骤S30之后,还包括;
步骤S40,当检测到预设业务流程框架的执行信号时,根据所述特定对象及所述业务流程的执行顺序进行所述业务流程的流转控制;
其中,所述业务流程的各流程步骤之间的参数传递通过上下文的方式进行。
在完成上文所述的流程构建之后,当***调用到业务流程入口节点(Entry)后,预设业务流程框架自动进入执行流程。此时,触发预设业务流程框架的执行信号。基于已定义的各特定对象及根据注解内容构建的执行顺序,在获取到不断更新的业务数据后,动态地确定下一流转节点,并进行节点流转,从而实现业务流程的流转控制。
下面,进行举例说明。如图7所示,某一业务流程具体包括流程步骤1~4,其实现过程被设计为:预设业务流程框架从流程入口节点(Entry)进入执行流程步骤1(Step1),若实际流转条件满足条件1,则执行流程步骤2(Step2),随后流转至流程结束节点(End),业务流程结束;若实际流转条件满足条件2,则执行流程步骤3(Step3)。
当执行流程步骤3(Step3)后,若实际流转条件满足条件3,则流转至流程结束节点(End),业务流程结束;若实际流转条件满足条件4,则执行流程步骤4(Step4),随后流转至流程结束节点(End),业务流程结束。
在定义业务流程的流程入口节点(Entry)、流程步骤1~4及各步骤之间的流转条件(即条件1~4)、以及各流程步骤的具体执行代码后,对流程入口节点(Entry)、流程步骤1~4及各步骤之间的流转条件(即条件1~4)添加注解。其中,流程步骤4(Step4)为流程结束步骤,对该步骤添加的注解为@End。
然后,根据注解内容构建所述业务流程的执行顺序。其中,在判断预设业务流程框架的类包含流程入口节点(Entry)及流程结束步骤(Step4)后,获取流程入口节点(Entry),基于其注解内容@Entry确定下一流转节点,即该下一流转节点对应流程步骤2(Step2)。然后,基于流程步骤2(Step2)的注解内容@Step2中的next/nexts属性,确定下一流转节点,其余以此类推。当从流程步骤2(Step2)流转至下一流程步骤时,通过步骤流转条件的注解内容@Route进行下一流转节点的确定,其余以此类推。当某一流程步骤的注解内容不含有与当前流转节点对应的next/nexts属性(例如next/nexts属性为空值)时,将该流程步骤的注解内容中的next/nexts属性修改为流程结束节点(End),从而将当前流转节点确定为业务流程的流程结束节点。
在进入流程执行阶段时,***调用到业务流程入口节点(Entry)后,预设业务流程框架自动进入执行流程。通过上述通过对特定对象的注解内容确定的流转节点的确定以及实时获取的动态业务数据,动态地确定下一流转节点,并进行节点流转,直至流转至动态确定的流程结束节点(End),进而执行流程结束步骤(即流程步骤4),业务流程结束。
此外,本发明还提供一种基于注解的流程实现装置。如图8所示,所述装置包括:
定义模块10,用于定义业务流程的特定对象;
具体地,开发人员根据流程设计内容进行预设业务流程的组织以实现业务流程的特定对象的定义,例如基于逻辑关系进行各个流程步骤的安排,其具体可以包括确定各个流程步骤的执行内容、各个步骤之间进行流转的流转条件。在本实施例中,通过编程以通过定义模块10定义业务流程的特定对象。所述预设业务流程的特定对象具体包括:业务流程的流程入口节点(Entry)、业务流程的流程步骤(Step)、各流程步骤之间的流转条件(Condition)及各流程步骤的执行代码。这里需要说明的是,业务流程的流程步骤包含各类节点,例如步骤A、B可以分别包含N个节点、M个节点。
注解模块20,用于在预设业务流程框架初始化时,对添加了注解的业务流程的特定对象进行初始化;
在***启动时,预设的业务流程框架进行初始化,包括初始化该框架中的各类参数;此时,对业务流程的特定对象添加注解。
在本发明各实施例中,先对添加了注解的业务流程的特定对象进行初始化的操作,添加注解具体是一种可以添加到编程语言(如Java)源代码中的语法元数据技术。注解可以添加到类、方法、方法的参数以及局部变量上。在程序中加入注解后,编译器、开发工具和其他程序可以通过反射机制获取添加的注解内容,并执行与注解内容相关的动作或过程。
具体添加的注解内容请参见上文。
其中,@BusinessProcess用于标识一个业务流程,对应某一具体业务流程。其注解内容至少包括业务流程名称及所使用的线程池(executor)。
@Entry用于标识流程入口,对应某一具体业务流程的流程入口节点。其注解内容至少包括流程入口节点的名称、next属性(用于指定Entry的next节点)及发生错误的默认退出条件。
@Step用于标识流程步骤,对应各流程步骤的相关内容。其注解内容包括流程步骤名称、next/nexts属性(用于指定当前节点的下一流转节点)以及当前流程步骤执行前后的调用机制等。
@End用于标识流程结束步骤。
@Route用于标识流程分支路由,其注解内容包括不同的流程步骤进行流转的条件。
执行顺序构建模块30,用于根据注解内容构建所述业务流程的执行顺序。
在一具体实施中,如图9所示,所述执行顺序构建模块30具体包括:
遍历单元310,用于遍历所述业务流程框架中的类,并获取已添加注解的类的方法集合;
若某一类上存在任意形式的注解内容,均可以视为该类上存在注解内容。在判断类上是否存在注解内容时,可以查找类上是否存在“@”的标识符号。当检测到当前类上存在注解内容,则将当前类封装的各方法提取(或者标记),进而获取到当前类的方法集合。
若未检测到该类上存在注解内容,则跳过此类,并继续对下一个类执行判断,直至完成所有类的判断。
提取单元320,用于遍历所述类的方法集合,并提取含有注解内容的方法;
通过遍历当前类中的方法集合,判断某一方法中是否含有注解内容;若是,则提取该方法,以此类推。
优选地,提取单元320在提取含有注解内容的方法之后,直接执行“基于所提取的方法,检测所述类是否同时含有流程入口节点及流程结束条件,若所述类同时含有流程入口节点及流程结束条件,则根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序”。
进一步地,为了提高基于注解的流程实现的灵活性,在提取单元320提取含有注解内容的方法之后,提取单元320还用于将含有注解内容的方法缓存至键值容器map中。这里所称“键值容器map”可以视为数据结构中的键值容器,是一种key-value(键值)的键值对,在具体实现中,以Java为例,有Map接口、hashmap、treemap、hashtable继承之map接口。在Linux中,有mmap()函数,使用mmap替代read,可以减少CPU拷贝次数,同时将***上下文切换次数减少为2次,从而较大幅度提升缓冲与读取速度性能。
检测单元330,用于基于所提取的方法,检测所述类是否同时含有流程入口节点及流程结束条件;
流程入口节点及流程结束条件分别对应业务流程的开始及结束机制,为必要内容。具体地,查找缓存至键值容器map的方法中是否含有上文@Entry及@End的注解内容,确认所述类是否同时含有流程入口节点及流程结束条件其中,流程结束条件对应流程结束步骤。若所提取的方法中同时含有上文@Entry及@End的注解内容,则判定所述类同时含有流程入口节点及流程结束条件。否则,判定所述类不同时含有流程入口节点及流程结束条件,此时输出告警,用以提醒编程人员补足缺漏的项目,以保证业务流程的后续正常执行。
流转确定单元340,用于若所述类同时含有流程入口节点及流程结束条件,则根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序。
在一具体实施中,流转确定单元340用于:a1.从键值容器map中获取流程入口节点(Entry),以检查所述流程入口节点是否含有流转条件注解属性;
a2.若所述流程入口节点含有流转条件注解属性,则根据所述流转条件注解属性确定对应的下一流转节点,并检查所述下一流转节点是否含有流转条件注解属性;
a3.若所述下一流转节点含有流转条件注解属性,则继续进行流转节点的确定,并重复流转条件流转属性的检查步骤,直至确定最后一个流转节点,并将最后一个流转节点设置为所述流程结束节点;
a4.若所述下一流转节点不含有流转条件注解属性,则将所述下一流转节点设置为所述流程结束节点。
即对流程入口节点的注解内容@Entry进行读取,并检测其中是否包含next属性。若否,则直接将下一节点设置为流程结束节点(End)。若是,则将next属性中指定的下一节点确定为“下一流转节点”。进一步地,对已确定的“下一流转节点”所在的流程步骤的注解内容@Step进行读取,并检测其中是否包含next/nexts属性。若否,则将所述“下一流转节点”设置为流程结束节点(End)。若是,则继续进行流转节点的确定,直至确定出最后一个流转节点,进而将最后一个流转节点设置为流程结束节点(End)。需要说明的是,不同步骤之间的条件性流转还需要根据@Route中的注解流转条件实现。
在本装置中,通过定义模块10定义业务流程的特定对象,以及在预设业务流程框架初始化时注解模块20对业务流程的特定对象添加注解,并由执行顺序构建模块30根据注解内容构建所述业务流程的执行顺序。这样,避免采用过于复杂且集成难度大的框架,有助于实现业务流程框架的轻量化;同时利用对业务流程的特定对象的定义及添加注解,构建出业务流程的执行顺序,并在业务流程的具体流程执行过程中支持根据条件流转流程,使得代码与业务流程保持一致,方便代码维护;无需大量改造业务***代码,对代码侵入小,在现有代码上稍微改造即可使用,也即具有使用简单和灵活度高的特点。
进一步地,如图10所示,在上述本发明基于注解的流程实现装置的基础上,所述装置还包括流转控制模块40。
所述流转控制模块40,用于当检测到预设业务流程框架的执行信号时,根据所述特定对象及所述业务流程的执行顺序进行所述业务流程的流转控制;
其中,所述业务流程的各流程步骤之间的参数传递通过上下文的方式进行。
在完成上文所述的流程构建之后,当***调用到业务流程入口节点(Entry)后,预设业务流程框架自动进入执行流程。此时,触发预设业务流程框架的执行信号。基于已定义的各特定对象及根据注解内容构建的执行顺序,在获取到不断更新的业务数据后,动态地确定下一流转节点,并进行节点流转,从而实现业务流程的流转控制。
此外,本发明还提供一种基于注解的流程实现设备,所述基于注解的流程实现设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于注解的流程实现程序,所述基于注解的流程实现程序被所述处理器执行时实现如上任一项所述的基于注解的流程实现方法的步骤。
本发明实施例基于注解的流程流转实现设备可以是PC机或服务器。
该设备可以包括:处理器,例如CPU,网络接口,用户接口,存储器,通信总线。其中,通信总线用于实现这些组件之间的连接通信。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口还可以包括标准的有线接口、无线接口。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器可选的还可以是独立于前述处理器的存储装置。
作为一种计算机存储介质的存储器中可以包括操作***、网络通信模块、用户接口模块以及基于注解的流程流转实现程序。
网络接口主要用于连接后台服务器,与后台服务器进行数据通信;用户接口主要用于连接客户端(用户端),与客户端进行数据通信;而处理器可以用于调用存储器中存储的基于注解的流程流转实现程序,并执行下述基于注解的流程流转实现方法实施例中的操作。
基于上述硬件结构,提出本发明基于注解的流程流转实现方法实施例。
此外,本发明还提供一种可读取存储介质。
所述可读存储介质上存储有基于注解的流程流转实现程序,所述基于注解的流程流转实现程序被处理器执行时实现如上任一项所述的基于注解的流程实现方法的步骤。
本发明可读存储介质的具体实施例与上述基于注解的流程实现方法各实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (12)

1.一种基于注解的流程实现方法,其特征在于,所述方法包括:
定义业务流程的特定对象;
在预设业务流程框架初始化时,对添加了注解的业务流程的特定对象进行初始化;
根据注解内容构建所述业务流程的执行顺序。
2.如权利要求1所述的基于注解的流程实现方法,其特征在于,所述业务流程的特定对象包括:所述业务流程的流程入口节点、所述业务流程的流程步骤、各流程步骤之间的流转条件及各流程步骤的执行代码。
3.如权利要求2所述的基于注解的流程实现方法,其特征在于,所述根据注解内容构建所述业务流程的执行顺序的步骤,具体包括:
遍历所述业务流程框架中的类,并获取已添加注解的类的方法集合;
遍历所述类的方法集合,并提取含有注解内容的方法;
基于所提取的方法,检测所述类是否同时含有流程入口节点及流程结束条件;
若所述类同时含有流程入口节点及流程结束条件,则根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序。
4.如权利要求3所述的基于注解的流程实现方法,其特征在于,所述提取含有注解内容的方法的步骤之后,还包括:将已提取的方法缓存至键值容器map中;
所述根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序的步骤,具体包括:
从键值容器map中获取流程入口节点,以检查所述流程入口节点是否含有流转条件注解属性;
若所述流程入口节点含有流转条件注解属性,则根据所述流转条件注解属性确定对应的下一流转节点,并检查所述下一流转节点是否含有流转条件注解属性;
若所述下一流转节点含有流转条件注解属性,则继续进行流转节点的确定,并重复流转条件流转属性的检查步骤,直至确定最后一个流转节点,并将最后一个流转节点设置为所述流程结束节点;
若所述下一流转节点不含有流转条件注解属性,则将所述下一流转节点设置为所述流程结束节点。
5.如权利要求1所述的基于注解的流程实现方法,其特征在于,所述根据注解内容构建所述业务流程的执行顺序的步骤之后,还包括;
当检测到预设业务流程框架的执行信号时,根据所述特定对象及所述业务流程的执行顺序进行所述业务流程的流转控制;
其中,所述业务流程的各流程步骤之间的参数传递通过上下文的方式进行。
6.一种基于注解的流程实现装置,其特征在于,所述装置包括:
定义模块,用于定义业务流程的特定对象;
注解模块,用于在预设业务流程框架初始化时,对添加了注解的业务流程的特定对象进行初始化;
执行顺序构建模块,用于根据注解内容构建所述业务流程的执行顺序。
7.如权利要求6所述的基于注解的流程实现装置,其特征在于,所述业务流程的特定对象包括:所述业务流程的流程入口节点、所述业务流程的流程步骤、各流程步骤之间的流转条件及各流程步骤的执行代码。
8.如权利要求7所述的基于注解的流程实现装置,其特征在于,所述执行顺序构建模块具体包括:
遍历单元,用于遍历所述业务流程框架中的类,并获取已添加注解的类的方法集合;
提取单元,用于遍历所述类的方法集合,并提取含有注解内容的方法;
检测单元,用于基于所提取的方法,检测所述类是否同时含有流程入口节点及流程结束条件;
流转确定单元,用于若所述类同时含有流程入口节点及流程结束条件,则根据所述流程入口节点的注解内容及各流程步骤的注解内容,确定所述业务流程的各流程步骤节点的流转顺序。
9.如权利要求8所述的基于注解的流程实现装置,其特征在于,所述提取单元,还用于将已提取的方法缓存至键值容器map中;
流转确定单元,具体用于从键值容器map中获取流程入口节点,以检查所述流程入口节点是否含有流转条件注解属性;若所述流程入口节点含有流转条件注解属性,则根据所述流转条件注解属性确定对应的下一流转节点,并检查所述下一流转节点是否含有流转条件注解属性;若所述下一流转节点含有流转条件注解属性,则继续进行流转节点的确定,并重复流转条件流转属性的检查步骤,直至确定最后一个流转节点,并将最后一个流转节点设置为所述流程结束节点;若所述下一流转节点不含有流转条件注解属性,则将所述下一流转节点设置为所述流程结束节点。
10.如权利要求6所述的基于注解的流程实现装置,其特征在于,所述装置还包括流转控制模块;
所述流转控制模块,用于当检测到预设业务流程框架的执行信号时,根据所述特定对象及所述业务流程的执行顺序进行所述业务流程的流转控制;
其中,所述业务流程的各流程步骤之间的参数传递通过上下文的方式进行。
11.一种基于注解的流程实现设备,其特征在于,所述基于注解的流程实现设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于注解的流程实现程序,所述基于注解的流程实现程序被所述处理器执行时实现如权利要求1至5中任一项所述的基于注解的流程实现方法的步骤。
12.一种可读存储介质,其特征在于,所述可读存储介质上存储有基于注解的流程流转实现程序,所述基于注解的流程流转实现程序被处理器执行时实现如权利要求1-5中任一项所述基于注解的流程实现方法的步骤。
CN201811526367.1A 2018-12-13 2018-12-13 基于注解的流程实现方法、装置、设备及可读存储介质 Active CN109634569B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811526367.1A CN109634569B (zh) 2018-12-13 2018-12-13 基于注解的流程实现方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811526367.1A CN109634569B (zh) 2018-12-13 2018-12-13 基于注解的流程实现方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN109634569A true CN109634569A (zh) 2019-04-16
CN109634569B CN109634569B (zh) 2022-01-25

Family

ID=66073644

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811526367.1A Active CN109634569B (zh) 2018-12-13 2018-12-13 基于注解的流程实现方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN109634569B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110650211A (zh) * 2019-10-15 2020-01-03 河北幸福消费金融股份有限公司 基于agent技术的流程控制方法、***、装置及存储介质
CN110908644A (zh) * 2019-10-16 2020-03-24 浙江大搜车软件技术有限公司 状态节点的配置方法、装置、计算机设备和存储介质
CN113326026A (zh) * 2021-05-11 2021-08-31 福建天泉教育科技有限公司 一种微服务业务流程接口的生成方法与终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226038A1 (en) * 2005-05-05 2007-09-27 Manoj Das Modeling of business process data
CN106059796A (zh) * 2016-05-17 2016-10-26 中国建设银行股份有限公司 一种业务扩展***及方法
CN107704386A (zh) * 2017-09-25 2018-02-16 金蝶软件(中国)有限公司 业务流程的单元测试方法、装置、计算机设备及存储介质
CN108053144A (zh) * 2017-12-29 2018-05-18 厦门市美亚柏科信息股份有限公司 开放式业务流程实现方法及工作流引擎
CN108363566A (zh) * 2018-01-30 2018-08-03 中国平安人寿保险股份有限公司 一种项目开发过程中文件配置方法、智能终端及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226038A1 (en) * 2005-05-05 2007-09-27 Manoj Das Modeling of business process data
CN106059796A (zh) * 2016-05-17 2016-10-26 中国建设银行股份有限公司 一种业务扩展***及方法
CN107704386A (zh) * 2017-09-25 2018-02-16 金蝶软件(中国)有限公司 业务流程的单元测试方法、装置、计算机设备及存储介质
CN108053144A (zh) * 2017-12-29 2018-05-18 厦门市美亚柏科信息股份有限公司 开放式业务流程实现方法及工作流引擎
CN108363566A (zh) * 2018-01-30 2018-08-03 中国平安人寿保险股份有限公司 一种项目开发过程中文件配置方法、智能终端及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110650211A (zh) * 2019-10-15 2020-01-03 河北幸福消费金融股份有限公司 基于agent技术的流程控制方法、***、装置及存储介质
CN110650211B (zh) * 2019-10-15 2022-04-01 河北幸福消费金融股份有限公司 基于agent技术的流程控制方法、***、装置及存储介质
CN110908644A (zh) * 2019-10-16 2020-03-24 浙江大搜车软件技术有限公司 状态节点的配置方法、装置、计算机设备和存储介质
CN110908644B (zh) * 2019-10-16 2023-12-12 浙江大搜车软件技术有限公司 状态节点的配置方法、装置、计算机设备和存储介质
CN113326026A (zh) * 2021-05-11 2021-08-31 福建天泉教育科技有限公司 一种微服务业务流程接口的生成方法与终端
CN113326026B (zh) * 2021-05-11 2023-09-08 福建天泉教育科技有限公司 一种微服务业务流程接口的生成方法与终端

Also Published As

Publication number Publication date
CN109634569B (zh) 2022-01-25

Similar Documents

Publication Publication Date Title
US10901709B2 (en) Partitioning based migration of systems to container and microservice based platforms
CA3008844C (en) Automatic generation of microservices based on technical description of legacy code
TWI729472B (zh) 特徵詞的確定方法、裝置和伺服器
CN112262390A (zh) 基于肯定和否定模式匹配示例的正则表达式生成
US8370808B2 (en) Apparatus and a method for generating a test case
CN105683924B (zh) 用于调试本机代码的方法和***
CN109189469B (zh) 基于反射的安卓应用微服务化方法及***
CN110287097A (zh) 批量测试方法、装置及计算机可读存储介质
CN111858371A (zh) 软件测试方法、***、存储介质及计算机设备
US20120266131A1 (en) Automatic program generation device, method, and computer program
CN105556569A (zh) 动画编辑
CN109634569A (zh) 基于注解的流程实现方法、装置、设备及可读存储介质
CN109298882A (zh) 接口的管理方法、计算机可读存储介质和终端设备
EP1395903A1 (en) Synthesis of verification languages
CN110162297A (zh) 一种源代码段自然语言描述自动生成方法及***
US20180232299A1 (en) Composing future tests
CN114185874A (zh) 一种基于大数据的建模方法、装置、开发框架及设备
US11119899B2 (en) Determining potential test actions
CN109491884A (zh) 代码性能检测方法、装置、计算机设备和介质
CN112632333A (zh) 查询语句生成方法、装置、设备及计算机可读存储介质
EP1646940A2 (en) Designing computer programs
WO2014142876A1 (en) Kernel functionality checker
WO2022140650A2 (en) Systems and methods for building and deploying machine learning applications
Yuan et al. Automatic enhanced CDFG generation based on runtime instrumentation
CN112783775A (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