CN117649201A - 流程实例执行方法、装置、轻量级流程引擎及存储介质 - Google Patents
流程实例执行方法、装置、轻量级流程引擎及存储介质 Download PDFInfo
- Publication number
- CN117649201A CN117649201A CN202311676870.6A CN202311676870A CN117649201A CN 117649201 A CN117649201 A CN 117649201A CN 202311676870 A CN202311676870 A CN 202311676870A CN 117649201 A CN117649201 A CN 117649201A
- Authority
- CN
- China
- Prior art keywords
- flow
- event
- instance
- current flow
- executing
- 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 114
- 230000008569 process Effects 0.000 claims description 64
- 238000012545 processing Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 abstract description 7
- 230000004044 response Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 239000000243 solution Substances 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004883 computer application Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种流程实例执行方法、装置、轻量级流程引擎及存储介质,具体涉及信息技术领域。一种流程实例执行方法,从轻量级流程引擎中获取当前执行的流程实例的当前流程事件,读取所述当前流程事件中的groovp脚本并执行,并根据执行结果在流程实例执行信息表中记录对应的执行信息;若所述执行结果为成功,则在流程实例事件流转表中添加所述当前流程事件的事件信息,并继续执行所述流程实例;若所述执行结果为失败,则重新执行所述当前流程事件,直至所述当前流程事件的执行结果为成功。通过上述方式,简化流程任务执行所需要的库表,同时更灵活使用groovy脚本,进行执行结果的自动化检测,同时提高适应性和响应能力。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种流程实例执行方法、装置、轻量级流程引擎及存储介质。
背景技术
流程的意思是若干个抽象出来的业务对象聚合在一起,按照某个顺序合作完成某个事件的步骤。而流程引擎这是让流程使用计算机应用环境去自动化的实现流程,在多个业务参与者之间制定出一套规则将任务信息进行流转并处理,达成某个业务目标。
现有流程引擎的配置都比较繁重,比较常用的activiti与flowable流程引擎的实现都需要新建超过40张库表。
发明内容
为了解决现有技术中的上述问题,本申请提供了一种流程实例执行方法、装置、轻量级流程引擎及存储介质。
第一方面,本申请提供一种流程实例执行方法,所述方法包括:
从轻量级流程引擎中获取当前执行的流程实例的当前流程事件,读取所述当前流程事件中的groovp脚本并执行,并根据执行结果在流程实例执行信息表中记录对应的执行信息;
若所述执行结果为成功,则在流程实例事件流转表中添加所述当前流程事件的事件信息,并继续执行所述流程实例;
若所述执行结果为失败,则重新执行所述当前流程事件,直至所述当前流程事件的执行结果为成功。
在一种可能的实施方式中,所述继续执行所述流程实例,包括:
获取所述当前流程事件的流程ID,根据所述流程ID获取对应的流程信息,其中,所述流程信息包含:所述流程ID对应的当前流程,所述当前流程包含的多个流程事件,每个流程事件对应的执行顺序;
从所述流程信息中获取执行顺序紧邻所述当前流程事件后的后续流程事件并执行;
重复执行获取后续流程事件并执行的步骤,直至所述当前流程中执行顺序最大的流程事件执行完成,并在流程环节实例表中添加所述当前流程的流程环节信息;
从流程定义表中获取所述流程的关联流程,并执行所述关联流程包含的多个流程事件,重复获取关联流程的步骤,直至执行完成的流程事件为流程结束事件,在流程实例表中更新所述流程实例的运行状态为已完成。
在一种可能的实施方式中,所述读取所述当前流程事件中的groovp脚本并执行,包括:
确定所述当前流程事件的事件类型,其中,所述事件类型为手动事件或自动事件;
若所述事件类型为自动事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述事件类型为手动事件,则发送提示信息至用户,并在收到所述用户的反馈后,获取所述当前流程事件中的groovp脚本并执行。
在一种可能的实施方式中,所述在收到所述用户的反馈后,获取所述当前流程事件中的groovp脚本并执行,包括:
当收到所述用户得反馈后,根据所述流程实例表确定是否存在所述流程实例,若存在,则确定所述当前流程事件是否存在并行事件,其中,所述并行事件为需要同时执行的流程事件;
若存在,则获取所述当前流程事件的第一前置事件和所述并行事件的第二前置事件,当所述第一前置事件和所述第二前置事件均完成后,获取所述当前流程事件和所述并行事件的groovp脚本并执行;
若不存在,则确定所述当前流程事件是否为所述流程结束事件,并根据判断结果获取所述当前流程事件中的groovp脚本并执行。
在一种可能的实施方式中,所述根据判断结果获取所述当前流程事件中的groovp脚本并执行,包括:
若所述当前流程事件为所述流程结束事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述当前流程事件不为所述流程结束事件,则获取所述当前流程事件的第一前置事件,当所述第一前置事件完成后,获取所述当前流程事件的groovp脚本并执行。
在一种可能的实施方式中,所述方法还包括:
若接收到用户端的流程回退申请,则根据所述流程回退申请获取待回退流程事件;
当确定所述待回退流程事件可执行回退操作后,执行所述待回退流程事件的回退groovp脚本,并在所述流程实例事件流转表中删除所述待回退流程事件的事件信息。
在一种可能的实施方式中,所述执行所述待回退流程事件的回退groovp脚本之前,所述方法还包括:
根据所述待回退流程事件的流程ID获取所述待回退流程事件所属的待回退流程;若所述待回退流程事件为所述待回退流程中执行顺序最大的流程事件,则在所述流程环节实例表中删除所述待回退流程的流程环节信息。
第二方面,本申请提供一种流程实例执行控制装置,包括:
获取模块,用于获取流程实例的当前流程事件,读取所述当前流程事件中的groovp脚本并执行,并根据执行结果在流程实例执行信息表中记录对应的执行信息;
控制模块,用于若所述执行结果为成功,则在流程实例事件流转表中添加所述当前流程事件的事件信息,并继续执行所述流程实例;
异常处理模块,用于若所述执行结果为失败,则重新执行所述当前流程事件,直至所述当前流程事件的执行结果为成功。
在一种可能的实施方式中,所述控制模块,还用于:
获取所述当前流程事件的流程ID,根据所述流程ID获取对应的流程信息,其中,所述流程信息包含:所述流程ID对应的当前流程,所述当前流程包含的多个流程事件,每个流程事件对应的执行顺序;
从所述流程信息中获取执行顺序紧邻所述当前流程事件后的后续流程事件并执行;
重复执行获取后续流程事件并执行的步骤,直至所述当前流程中执行顺序最大的流程事件执行完成,并在流程环节实例表中添加所述当前流程的流程环节信息;
从流程定义表中获取所述流程的关联流程,并执行所述关联流程包含的多个流程事件,重复获取关联流程的步骤,直至执行完成的流程事件为流程结束事件,在流程实例表中更新所述流程实例的运行状态为已完成。
在一种可能的实施方式中,所述控制模块,还用于:
确定所述当前流程事件的事件类型,其中,所述事件类型为手动事件或自动事件;
若所述事件类型为自动事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述事件类型为手动事件,则发送提示信息至用户,并在收到所述用户的反馈后,获取所述当前流程事件中的groovp脚本并执行。
在一种可能的实施方式中,所述控制模块,还用于:
当收到所述用户得反馈后,根据所述流程实例表确定是否存在所述流程实例,若存在,则确定所述当前流程事件是否存在并行事件,其中,所述并行事件为需要同时执行的流程事件;
若存在,则获取所述当前流程事件的第一前置事件和所述并行事件的第二前置事件,当所述第一前置事件和所述第二前置事件均完成后,获取所述当前流程事件和所述并行事件的groovp脚本并执行;
若不存在,则确定所述当前流程事件是否为所述流程结束事件,并根据判断结果获取所述当前流程事件中的groovp脚本并执行。
在一种可能的实施方式中,所述控制模块,还用于:
若所述当前流程事件为所述流程结束事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述当前流程事件不为所述流程结束事件,则获取所述当前流程事件的第一前置事件,当所述第一前置事件完成后,获取所述当前流程事件的groovp脚本并执行。
在一种可能的实施方式中,所述控制模块,还用于:
若接收到用户端的流程回退申请,则根据所述流程回退申请获取待回退流程事件;
当确定所述待回退流程事件可执行回退操作后,执行所述待回退流程事件的回退groovp脚本,并在所述流程实例事件流转表中删除所述待回退流程事件的事件信息。
在一种可能的实施方式中,所述控制模块,还用于:
根据所述待回退流程事件的流程ID获取所述待回退流程事件所属的待回退流程;若所述待回退流程事件为所述待回退流程中执行顺序最大的流程事件,则在所述流程环节实例表中删除所述待回退流程的流程环节信息。
第三方面,本申请还提供一种轻量级流程引擎,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面任一项所述的流程实例执行方法。
第四方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面任一项所述的流程实例执行方法。
第五方面,本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,可实现如前述任一项所述的流程实例执行方法的步骤。
本申请提供的一种流程实例执行方法、装置、轻量级流程引擎及存储介质,在轻量级流程引擎中配置流程任务时,根据当前执行的流程实例获取当前流程事件并执行,在当前流程事件执行后根据groovy脚本进行当前流程执行结果检测,并根据检测结果确定后续操作。通过上述方式,在轻量级流程引擎中引入流程任务,简化流程任务执行所需要的库表,同时更灵活使用groovy脚本,进行执行结果的自动化检测,同时提高适应性和响应能力。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种流程实例执行方法的流程示意图一;
图2为本申请实施例提供的一种流程实例执行方法的流程示意图二;
图3为本申请实施例提供的一种流程实例执行方法的流程示意图三;
图4为本申请实施例提供的一种流程实例执行控制装置的结构示意图;
图5为本申请实施例提供的一种轻量级流程引擎的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
流程的意思是若干个抽象出来的业务对象聚合在一起,按照某个顺序合作完成某个事件的步骤。而流程引擎这是让流程使用计算机应用环境去自动化的实现流程,在多个业务参与者之间制定出一套规则将任务信息进行流转并处理,达成某个业务目标。
现有流程引擎的配置都比较繁重,比较常用的activiti与flowable流程引擎的实现都需要新建超过40张库表。
本申请提供的一种流程实例执行方法,在轻量级流程引擎中配置流程任务时,根据当前执行的流程实例获取当前流程事件并执行,在当前流程事件执行后根据groovy脚本进行当前流程执行结果检测,并根据检测结果确定后续操作。通过上述方式,在轻量级流程引擎中引入流程任务,简化流程任务执行所需要的库表,同时更灵活使用groovy脚本,进行执行结果的自动化检测,同时提高适应性和响应能力。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例提供的一种流程实例执行方法的流程示意图一。如图1所示,所述方法包括:
S101、从轻量级流程引擎中获取当前执行的流程实例的当前流程事件,读取所述当前流程事件中的groovp脚本并执行,并根据执行结果在流程实例执行信息表中记录对应的执行信息。
本步骤中,当用户有业务申请时,在轻量级流程引擎上,根据用户的业务申请和流程定义表中获取预先定义的流程模型,再根据业务申请中的业务信息构建流程实例,同时按照预设规则生成流程实例ID,结合流程实例ID信息等组合信息将流程实例记录在流程实例表中。
需要说明的是,在执行流程实例前,需要验证该流程实例是否可以正常执行,即需要满足两个条件
进一步地,由于业务属性不同,部分业务流程只需要用户一旦申请,直接根据流程定义表和业务建立流程实例,并直接执行该流程实例,但对于部分审批业务,每个环节有不同的审批人,只有在该事件对应的用户审批后,才能继续执行流程事件,故需要根据流程事件的事件类型确定流程事件的执行操作,具体为:轻量级流程引擎系统中已创建且开始执行流程实例,和流程实例的流程定义步骤正确。
具体地,获取流程实例的流程开始事件并执行,当流程开始事件执行完成后判断流程的开始节点和结束节点是否为同一个步骤,若为同一个步骤则确定流程实例的流程定义步骤错误,需要抛出异常信息并阻碍流程流转。同时,在流程开始事件执行前,在流程实例环节流转表中查询是否有流程开始事件的执行记录,若无则代表流程实例可以正常执行,开始执行流程开始事件并在执行完成后在流程实例环节流转表中添加流程开始事件的记录。
进一步地,由于流程实例包含多个流程环节,每个流程环节包含多个流程事件,每个流程事件的执行步骤相同,故以当前流程事件做统一说明。
具体地,获取当前流程事件,读取流程开始事件中的groovp脚本,使用REPL模式搭配spring框架注入bean的模式执行groovp脚本。并在流程实例执行表中记录本次执行操作对应的执行信息。
进一步地,为了减少用户等待业务申请执行的时间,本实施例采用java多线程技术构建一个线程池,在该线程池内的线程执行完一个流程事件后,直接释放执行下一个任务,无需删除后再创建新的线程,减少了用户的等待时间。
确定所述当前流程事件的事件类型,其中,所述事件类型为手动事件或自动事件;
若所述事件类型为自动事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述事件类型为手动事件,则发送提示信息至用户,并在收到所述用户的反馈后,获取所述当前流程事件中的groovp脚本并执行。
其中,自动事件为整个流程实例无需用户辅助处理,可直接执行脚本的流程事件,二手动事件则是需要用户辅助处理,在未收到用户反馈前业务流程的流转被阻碍,直到收到用户的反馈,流程实例对应的业务流程继续流转。
S102、若所述执行结果为成功,则在流程实例事件流转表中添加所述当前流程事件的事件信息,并继续执行所述流程实例。
本步骤中,当确定当前流程事件执行成功后,流程实例才会继续流程,故根据groovp脚本确定当前流程事件执行成功后,在流程实例事件流转表中添加当前流程事件的事件信息,同时会释放用于执行当前流程事件的线程,以便去执行后续步骤。在添加当前流程事件的事件信息完成后继续执行流程实例。
进一步地,由于每个流程实例包含多个流程环节,每个流程环节包含多个流程事件,故当当前流程事件执行完成后,需要根据其所属的流程环节对应的流程信息来获取下一步需要执行的流程事件,具体操作为:
获取所述当前流程事件的流程ID,根据所述流程ID获取对应的流程信息,其中,所述流程信息包含:所述流程ID对应的当前流程,所述当前流程包含的多个流程事件,每个流程事件对应的执行顺序;
从所述流程信息中获取执行顺序紧邻所述当前流程事件后的后续流程事件并执行;
重复执行获取后续流程事件并执行的步骤,直至所述当前流程中执行顺序最大的流程事件执行完成,并在流程环节实例表中添加所述当前流程的流程环节信息;
从流程定义表中获取所述流程的关联流程,并执行所述关联流程包含的多个流程事件,重复获取关联流程的步骤,直至执行完成的流程事件为流程结束事件,在流程实例表中更新所述流程实例的运行状态为已完成。
需要说明的是,若当前流程事件为当前流程的最后一个流程事件,则直接在流程环节实例表中添加当前流程的流程环节信息,并执行后续从流程定义表中获取所述流程的关联流程等操作。同时为了防止后续已经完成的流程环节被再次执行,影响整个流程实例的安全性,故在流程环节实例表中添加当前流程的流程环节信息后,创建一个synchronized同步锁记录当前的流程环节信息。
S103、若所述执行结果为失败,则重新执行所述当前流程事件,直至所述当前流程事件的执行结果为成功。
本步骤中,当确定当前流程事件执行失败后,将异常信息记录至将异常信息记录至流程实例执行异常信息表,同时该线程会定时重新执行该异常任务,线程可重复执行异常任务的最大次数可根据实际情况设定,示例性地,最大次数为8次。
具体地,每次异常任务的执行过程已在前述内容中做了具体说明,故此处不再做具体说明。
本申请提供的一种流程实例执行方法,在轻量级流程引擎中配置流程任务时,根据当前执行的流程实例获取当前流程事件并执行,在当前流程事件执行后根据groovy脚本进行当前流程执行结果检测,并根据检测结果确定后续操作。通过上述方式,在轻量级流程引擎中引入流程任务,简化流程任务执行所需要的库表便于维护,是的流程实现更加轻便,同时基于SPI服务发现机制,当业务发生变化时,可直接配置groovy脚本在流程事件定义执行逻辑字段里,快速方便的支撑用户需求。
图2为本申请实施例提供的一种流程实例执行方法的流程示意图二。本申请实施例对当前流程事件为手动事件,且在收到用户反馈后,如何确定是否继续执行当前流程事件的操作步骤做了详细的说明。如图2所示,所述方法包括:
S201、收到所述用户得反馈后,根据所述流程实例表确定是否存在所述流程实例,若存在,则确定所述当前流程事件是否存在并行事件,其中,所述并行事件为需要同时执行的流程事件。
本步骤中,在确定当前流程事件为手动事件后,在确定执行当前流程事件的groovp脚本前需要和对应的用户确定是否需要执行,故发生提示信息至用户端,并在收到用户端反馈后,再继续执行当前流程时间。
进一步地,为了保证流程安全,系统在收到用户的反馈后不会直接执行当前流程事件,会确定用户反馈信息对应的当前流程事件所属的流程实例是否存在。故,从流程实例表查询当前流程事件所属的流程实例是否存在,如果不存在,则有可能是恶意调用或外部系统进行的攻击,抛出一个ProcessObjectNotFoundException流程参数缺失异常,记录该次调用信息。若确定当前流程事件所属的流程实例存在,则继续在流程实例事件流转表中查询是否存在当前流程事件的事件信息,若存在同样抛出异常信息。
若确定不存在上述两种情况,则可控制流程继续流转,即,执行当前流程事件。而一般手动事件大多数存在需要同时完成的并行事件,是否是并行事件的执行方式有所不同,故需要优先确定需要执行的当前流程事件是否存在并行时间。
S202、若存在,则获取所述当前流程事件的第一前置事件和所述并行事件的第二前置事件,当所述第一前置事件和所述第二前置事件均完成后,获取所述当前流程事件和所述并行事件的groovp脚本并执行。
在本步骤中,当确定当前流程事件存在并行事件时,即,需要通过多个线程同时执行当前流程事件和并行事件,一个线程执行一个流程事件,而流程事件中除流程结束事件,其余流程事件均存在前置事件,只有在前置事件满足的情况下才可执行当前流程事件的groovp脚本。而流程结束时间不可作为其余流程事件的并行事件,故,在确定当前流程事件存在并行事件后,代表,当前流程事件和对应的并行事件均存在前置事件。
具体地,从流程事件定义表中获取当前流程事件的第一前置事件,获取并行事件的第二前置事件,确定第一前置事件和第二前置事件是否均执行完成,在确定第一前置事件和第二前置事件均执行完成后,获取当前流程事件的groovp脚本和对应的并行事件的groovp脚本并执行。
S203、若不存在,则确定所述当前流程事件是否为所述流程结束事件。
本步骤中,若确定当前流程事件不存在并行事件,则确定当前流程事件为单步执行事件。考虑到当前流程事件可能为流程结束事件,即,无前置事件,故需要优先确定当前流程事件是否为流程结束事件。
具体地,从流程定义表中获取流程实例的流程结束事件,确定流程结束事件和当前流程事件是否相同,根据判断结果采取不同的方式执行当前流程事件。
S204、若所述当前流程事件为所述流程结束事件,则获取所述当前流程事件中的groovp脚本并执行。
本步骤中,当确定流程结束事件和当前流程事件相同,则可以确定当前流程事件无前置事件,即,可以直接获取groovp脚本并执行。
具体地,从流程定义表中获取流程结束事件后,确定流程结束事件和当前流程事件相同,直接获取当前流程事件的groovp脚本并执行,在当前流程事件执行完成后更新流程实例表、流程实例事件流转表、流程实例执行信息表和流程环节实例表。
S205、若所述当前流程事件不为所述流程结束事件,则获取所述当前流程事件的第一前置事件,当所述第一前置事件完成后,获取所述当前流程事件的groovp脚本并执行。
本步骤中,当确定当前流程事件不是流程结束事件时,即,当前流程事件有前置事件,只有当前置事件完成后才可执行当前流程事件。
故,从流程定义表中获取流程结束事件后,确定流程结束事件和当前流程事件不相同,获取当前流程事件的第一前置事件,并在确定第一前置事件完成后,获取当前流程事件的groovp脚本并执行,在当前流程事件执行完成后更新流程实例表、流程实例事件流转表、流程实例执行信息表和流程环节实例表。
本申请提供的一种流程实例执行方法,当收到用户的反馈后,再次确定经用户手动处理的流程实例是否存在,在确定存在后进一步确定当前流程事件受否存在需要一同执行的并行事件,根据确定结果判断是在前置条件满足后仅执行当前流程事件,或,前置条件满足后一同执行当前流程事件以及并行事件。通过上述方式,保护了业务流程的安全性,杜绝外部恶意调用或预防来自外部系统的攻击。
图3为本申请实施例提供的一种流程实例执行方法的流程示意图三。本申请实施例对收到用户的流程回退申请时,如何执行流程事件的回退的操作步骤做了详细的说明。如图3所示,所述方法包括:
S301、若接收到用户端的流程回退申请,则根据所述流程回退申请获取待回退流程事件。
本步骤中,用户在前端页面如果对某一流程事件的处理结果存在异议,可以发起流程回退申请。故在收到用户端的流程回退申请后,根据流程回退申请获取待回退流程事件。
需要说明的是,只有处于运行状态的流程实例才可进行回退,故,要求待回退流程事件所属的流程实例需要处于在运行状态。
具体地,当获取待回退流程事件后,根据流程事件定义表获取待回退流程事件所属的流程实例,并从流程实例表中获取流程实例的状态,当流程实例状态为运行中时,可继续后续的流程回退过程。
S302、根据所述待回退流程事件的流程ID获取所述待回退流程事件所属的待回退流程,若所述待回退流程事件为所述待回退流程中执行顺序最大的流程事件,则在所述流程环节实例表中删除所述待回退流程的流程环节信息。
本步骤中,在确定待回退流程事件所属的流程实例处于运行状态后,需要进一步确定待回退流程事件本身是否可执行回退操作,即,确定待回退流程事件是否为可回退事件或可重执行事件。需要说明的是,流程事件是否属于可回退事件或可重执行事件是根据公司业务情况预先定义的。
进一步地,当确定待回退流程事件为可重执行事件,无需对待回退流程事件进行退回操作,可再次执行以最新的执行结果覆盖上一次的执行结果。
而考虑到,若待回退流程事件为其所属的待回退流程的最后一个流程事件,当对待回退流程事件进行回退操作后,除了更新流程实例事件流转表,还需要在流程实例表中删除待回退流程的流程环节信息。故还需要获取带回退环节的对应的流程信息。
具体地,获取待回退流程事件的流程ID,根据流程ID获取待回退流程以及对应的流程信息。根据待回退流程中多个流程事件以及对应的执行顺序确定待回退流程事件是否为执行顺序最后的流程事件,若是,需要在流程环节实例表中删除待回退流程的流程环节信息。
S303、执行所述待回退流程事件的回退groovp脚本,并在所述流程实例事件流转表中删除所述待回退流程事件的事件信息。
本步骤中,在更新流程环节实例表后,执行待回退流程事件的回退groovp脚本,并在该回退操作执行成功后,在流程实例事件流转表中删除待回退流程事件的事件信息,并在流程实例执行信息表中记录对应的执行信息。
本申请提供的一种流程实例执行方法,当收到用户端的流程回退申请后没根据待回退流程事件是否为待回退流程的最后一个流程事件确定是否需要删除流程环节信息,同时执行回退脚本,在回退完成后在流程实例事件流转表中删除待回退流程事件的事件信息。通过上述方式,降低了业务发生变化时进行代码层面修改的难度,提高了轻量级流程引擎的适用性。
图4为本申请实施例提供的一种流程实例执行控制装置的结构示意图。如图4所示,所述装置包括:
获取模块401,用于获取流程实例的当前流程事件,读取所述当前流程事件中的groovp脚本并执行,并根据执行结果在流程实例执行信息表中记录对应的执行信息;
控制模块402,用于若所述执行结果为成功,则在流程实例事件流转表中添加所述当前流程事件的事件信息,并继续执行所述流程实例;
异常处理模块403,用于若所述执行结果为失败,则重新执行所述当前流程事件,直至所述当前流程事件的执行结果为成功。
在一种可能的实施方式中,所述控制模块402,还用于:
获取所述当前流程事件的流程ID,根据所述流程ID获取对应的流程信息,其中,所述流程信息包含:所述流程ID对应的当前流程,所述当前流程包含的多个流程事件,每个流程事件对应的执行顺序;
从所述流程信息中获取执行顺序紧邻所述当前流程事件后的后续流程事件并执行;
重复执行获取后续流程事件并执行的步骤,直至所述当前流程中执行顺序最大的流程事件执行完成,并在流程环节实例表中添加所述当前流程的流程环节信息;
从流程定义表中获取所述流程的关联流程,并执行所述关联流程包含的多个流程事件,重复获取关联流程的步骤,直至执行完成的流程事件为流程结束事件,在流程实例表中更新所述流程实例的运行状态为已完成。
在一种可能的实施方式中,所述控制模块402,还用于:
确定所述当前流程事件的事件类型,其中,所述事件类型为手动事件或自动事件;
若所述事件类型为自动事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述事件类型为手动事件,则发送提示信息至用户,并在收到所述用户的反馈后,获取所述当前流程事件中的groovp脚本并执行。
在一种可能的实施方式中,所述控制模块402,还用于:
当收到所述用户得反馈后,根据所述流程实例表确定是否存在所述流程实例,若存在,则确定所述当前流程事件是否存在并行事件,其中,所述并行事件为需要同时执行的流程事件;
若存在,则获取所述当前流程事件的第一前置事件和所述并行事件的第二前置事件,当所述第一前置事件和所述第二前置事件均完成后,获取所述当前流程事件和所述并行事件的groovp脚本并执行;
若不存在,则确定所述当前流程事件是否为所述流程结束事件,并根据判断结果获取所述当前流程事件中的groovp脚本并执行。
在一种可能的实施方式中,所述控制模块402,还用于:
若所述当前流程事件为所述流程结束事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述当前流程事件不为所述流程结束事件,则获取所述当前流程事件的第一前置事件,当所述第一前置事件完成后,获取所述当前流程事件的groovp脚本并执行。
在一种可能的实施方式中,所述控制模块402,还用于:
若接收到用户端的流程回退申请,则根据所述流程回退申请获取待回退流程事件;
当确定所述待回退流程事件可执行回退操作后,执行所述待回退流程事件的回退groovp脚本,并在所述流程实例事件流转表中删除所述待回退流程事件的事件信息。
在一种可能的实施方式中,所述控制模块402,还用于:
根据所述待回退流程事件的流程ID获取所述待回退流程事件所属的待回退流程;
若所述待回退流程事件为所述待回退流程中执行顺序最大的流程事件,则在所述流程环节实例表中删除所述待回退流程的流程环节信息。
图5为本申请实施例提供的一种轻量级流程引擎的结构示意图。如图5所示,所述轻量级流程引擎50包括:至少一个处理器501和存储器502,其中:
所述存储器502用于存储计算机执行指令;
所述至少一个处理器501用于执行所述存储器502存储的计算机执行指令,使得所述至少一个处理器501执行如前述任一项所述的流程实例执行方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本申请各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(ResistiveRandom Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种流程实例执行方法,其特征在于,所述方法包括:
从轻量级流程引擎中获取当前执行的流程实例的当前流程事件,读取所述当前流程事件中的groovp脚本并执行,并根据执行结果在流程实例执行信息表中记录对应的执行信息;
若所述执行结果为成功,则在流程实例事件流转表中添加所述当前流程事件的事件信息,并继续执行所述流程实例;
若所述执行结果为失败,则重新执行所述当前流程事件,直至所述当前流程事件的执行结果为成功。
2.根据权利要求1所述的方法,其特征在于,所述继续执行所述流程实例,包括:
获取所述当前流程事件的流程ID,根据所述流程ID获取对应的流程信息,其中,所述流程信息包含:所述流程ID对应的当前流程,所述当前流程包含的多个流程事件,每个流程事件对应的执行顺序;
从所述流程信息中获取执行顺序紧邻所述当前流程事件后的后续流程事件并执行;
重复执行获取后续流程事件并执行的步骤,直至所述当前流程中执行顺序最大的流程事件执行完成,并在流程环节实例表中添加所述当前流程的流程环节信息;
从流程定义表中获取所述流程的关联流程,并执行所述关联流程包含的多个流程事件,重复获取关联流程的步骤,直至执行完成的流程事件为流程结束事件,在流程实例表中更新所述流程实例的运行状态为已完成。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述读取所述当前流程事件中的groovp脚本并执行,包括:
确定所述当前流程事件的事件类型,其中,所述事件类型为手动事件或自动事件;
若所述事件类型为自动事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述事件类型为手动事件,则发送提示信息至用户,并在收到所述用户的反馈后,获取所述当前流程事件中的groovp脚本并执行。
4.根据权利要求3所述的方法,其特征在于,所述在收到所述用户的反馈后,获取所述当前流程事件中的groovp脚本并执行,包括:
当收到所述用户得反馈后,根据所述流程实例表确定是否存在所述流程实例,若存在,则确定所述当前流程事件是否存在并行事件,其中,所述并行事件为需要同时执行的流程事件;
若存在,则获取所述当前流程事件的第一前置事件和所述并行事件的第二前置事件,当所述第一前置事件和所述第二前置事件均完成后,获取所述当前流程事件和所述并行事件的groovp脚本并执行;
若不存在,则确定所述当前流程事件是否为所述流程结束事件,并根据判断结果获取所述当前流程事件中的groovp脚本并执行。
5.根据权利要求4所述的方法,其特征在于,所述根据判断结果获取所述当前流程事件中的groovp脚本并执行,包括:
若所述当前流程事件为所述流程结束事件,则获取所述当前流程事件中的groovp脚本并执行;
若所述当前流程事件不为所述流程结束事件,则获取所述当前流程事件的第一前置事件,当所述第一前置事件完成后,获取所述当前流程事件的groovp脚本并执行。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若接收到用户端的流程回退申请,则根据所述流程回退申请获取待回退流程事件;
当确定所述待回退流程事件可执行回退操作后,执行所述待回退流程事件的回退groovp脚本,并在所述流程实例事件流转表中删除所述待回退流程事件的事件信息。
7.根据权利要求6所述的方法,其特征在于,所述执行所述待回退流程事件的回退groovp脚本之前,所述方法还包括:
根据所述待回退流程事件的流程ID获取所述待回退流程事件所属的待回退流程,若所述待回退流程事件为所述待回退流程中执行顺序最大的流程事件,则在所述流程环节实例表中删除所述待回退流程的流程环节信息。
8.一种流程实例执行控制装置,其特征在于,包括:
获取模块,用于获取流程实例的当前流程事件,读取所述当前流程事件中的groovp脚本并执行,并根据执行结果在流程实例执行信息表中记录对应的执行信息;
控制模块,用于若所述执行结果为成功,则在流程实例事件流转表中添加所述当前流程事件的事件信息,并继续执行所述流程实例;
异常处理模块,用于若所述执行结果为失败,则重新执行所述当前流程事件,直至所述当前流程事件的执行结果为成功。
9.一种轻量级流程引擎,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311676870.6A CN117649201A (zh) | 2023-12-07 | 2023-12-07 | 流程实例执行方法、装置、轻量级流程引擎及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311676870.6A CN117649201A (zh) | 2023-12-07 | 2023-12-07 | 流程实例执行方法、装置、轻量级流程引擎及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117649201A true CN117649201A (zh) | 2024-03-05 |
Family
ID=90047528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311676870.6A Pending CN117649201A (zh) | 2023-12-07 | 2023-12-07 | 流程实例执行方法、装置、轻量级流程引擎及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117649201A (zh) |
-
2023
- 2023-12-07 CN CN202311676870.6A patent/CN117649201A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3629518B1 (en) | Interoperability of zero-knowledge proof enabled blockchains | |
JP2022515949A (ja) | トランザクション処理方法、装置、機器並びにコンピュータプログラム | |
CN103782573A (zh) | 对客户端和应用掩盖服务器停运 | |
CN111414424A (zh) | 一种配置数据自动同步redis的方法、系统、介质及设备 | |
CN112734272A (zh) | 业务流转审批方法、装置、电子设备及可读存储介质 | |
CN112887436B (zh) | 一种共识方法、共识节点和流水线方式的区块链系统 | |
CN117649201A (zh) | 流程实例执行方法、装置、轻量级流程引擎及存储介质 | |
CN106846142B (zh) | 一种信息处理方法及服务器 | |
CN105790975A (zh) | 一种业务处理操作的执行方法及装置 | |
CN113986941A (zh) | 事务批量处理方法及装置 | |
CN106354830A (zh) | 一种数据库集群节点间数据同步的方法及装置 | |
CN110888717A (zh) | Hdfs的目录操作的事务控制方法及装置 | |
CN113126927B (zh) | 一种数据删除方法及相关装置 | |
CN116132528B (zh) | 一种航班管理消息的推送方法、装置及电子设备 | |
CN117745202A (zh) | 业务流程处理方法及装置 | |
CN110147355B (zh) | 数据同步方法、装置及服务器 | |
CN116126735B (zh) | 一种代码异常处理方法、装置、设备及存储介质 | |
CN111078684B (zh) | 保单故障的补偿方法、装置、介质及设备 | |
CN116450318A (zh) | 任务调度方法、装置、设备、介质及程序产品 | |
CN115562842A (zh) | 一种基于Activiti的流程交互方法及系统 | |
CN107491347A (zh) | 一种用于虚拟机热迁移的方法与设备 | |
CN114255004A (zh) | 事务处理方法、装置、设备和存储介质 | |
CN118051956A (zh) | 日志处理方法、装置、电子设备及存储介质 | |
CN117112437A (zh) | 在生产环境中进行故障防护测试的方法及装置 | |
CN116775377A (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 |