本发明涉及流程业务,具体涉及一种流程业务数据处理方法、装置、计算机设备及存储介质。
背景技术:
1、流程业务引擎系统通过对流程数据进行处理,以广泛应用于各行各业中。相关技术中,在流程数据处理过程中,实时将各类不同流程数据同时运行在内存中,导致流程业务引擎系统在数据处理中的运行内存占用空间增大,影响系统运行速率。
技术实现思路
1、有鉴于此,本发明提供了一种一种流程业务数据处理方法、装置、计算机设备及存储介质,以解决流程业务引擎系统在处理过程中的运行内存占用空间增大及系统运行速率大的问题。
2、根据第一方面,本发明实施例提供一种流程业务数据处理方法,方法包括:
3、获取用户提交的业务请求指令;
4、基于业务请求指令,获取与流程业务对应的流程实例数据和流程业务数据,流程实例数据基于流程名称、流程类型、流程状态、当前节点、参与人、节点数据、业务标识生成,流程业务数据基于业务请求人信息、业务请求原因、业务请求时间和业务关联数据生成;流程业务数据与流程实例数据基于业务标识绑定;
5、将流程实例数据和流程业务数据转入协程,并创建用于缓存协程中的流程实例数据和流程业务数据的预备执行队列、正在执行队列、挂起执行队列和已执行完队列;
6、基于预备执行队列、正在执行队列、挂起执行队列和已执行完队列的缓存规则,缓存协程中的流程实例数据和流程业务数据;
7、基于正在执行队列缓存后的协程中的流程实例数据和流程业务数据,通过协程处理业务请求指令对应的流程业务。
8、通过执行上述实施方式,利用了lua协程和不同队列进行流程数据优化,避免了短时间内重复加载创建状态机,起到了一个缓存快速响应的作用。并且相对与采用多线程的方式来说,协程减少了线程切换的开销,并且协程更加轻量,在节省内存的同时还提高了cpu的利用率。
9、在一种可选的实施方式中,基于预备执行队列、正在执行队列、挂起执行队列和已执行完队列的缓存规则,缓存协程中的流程实例数据和流程业务数据,包括:
10、在已执行完队列中检索是否存在业务请求指令对应的流程实例数据和流程业务数据;
11、若在已执行完队列中检索到存在业务请求指令对应的流程实例数据和流程业务数据,从已执行完队列中获取业务请求对应的协程中的流程实例数据和流程业务数据;
12、将协程中的流程实例数据和流程业务数据转入预备执行队列缓存;
13、将协程中的流程实例数据和流程业务数据转入正在执行队列中缓存;
14、判断正在执行队列中缓存的流程实例数据和流程业务数据是否发生阻塞;
15、若正在执行队列中缓存的流程实例数据和流程业务数据发生阻塞,则协程中的流程实例数据和流程业务数据转入挂起执行队列直到阻塞消除转入预备执行队列缓存;
16、若正在执行队列中缓存的流程实例数据和流程业务数据没有发生阻塞,则转入所述正在执行队列缓存所述协程中的所述流程实例数据和所述流程业务数据,等待所述协程处理所述业务请求指令对应的流程业务。
17、通过执行上述实施方式,基于预备执行队列、正在执行队列、挂起执行队列和已执行完队列的缓存规则,缓存协程中的流程实例数据和流程业务数据,可以缓存快速响应的作用,无需在内存中同时加载各类不同数据,进而达到节省内存的同时还提高了cpu的利用率效果。
18、在一种可选的实施方式中,本实施例中的方法,还包括:
19、若在已执行完队列中未检索到业务请求对应的流程实例数据和流程业务数据,则从状态机模型获取业务请求对应的流程实例数据和流程业务数据;
20、跳入将协程中的流程实例数据和流程业务数据转入预备执行队列缓存在已执行完队列中检索是否存在业务请求对应的流程实例数据和流程业务数据的步骤继续执行。
21、通过执行上述实施方式,即使优先在已执行完队列中无法检索到业务请求对应的流程实例数据和流程业务数据,也可以仅在执行时加载状态机模型,无需实时重复加载状态机模型,进而达到减少了内存占用,极大提高了可创建流程数量的目的。
22、在一种可选的实施方式中,在通过协程处理业务请求指令对应的流程业务的步骤之后还包括:
23、转入已执行完队列,并基于预设时间存储协程中的流程实例数据和流程业务数据;
24、当超出预设时间,删除协程和协程中的流程实例数据和流程业务数据。
25、通过执行上述实施方式,基于预设时间持久化存储协程中的流程实例数据和流程业务数据,有利于充分利用系统资源,并且基于预设时间自动将不打算使用的协程数据销毁,减少资源的浪费并且加快了流程的执行速度。
26、在一种可选的实施方式中,所述从状态机模型加载所述业务请求指令对应的所述流程实例数据和所述流程业务数据,包括:
27、基于加载所述状态机模型中的所述流程状态节点获取所述流程实例数据和所述流程业务数据。
28、通过执行上述实施方式,仅在执行时加载状态机模型,无需实时重复加载状态机模型,进而达到减少了内存占用,极大提高了可创建流程数量的目的。
29、根据第二方面,本发明实施例提供一种流程业务数据处理装置,装置包括:
30、业务请求获取模块,用于获取用户提交的业务请求指令;
31、流程数据获取模块,用于基于所述业务请求指令,获取与所述流程业务对应的所述流程实例数据和流程业务数据,所述流程实例数据基于流程名称、流程类型、流程状态、当前节点、参与人、节点数据、业务标识生成,所述流程业务数据基于业务请求人信息、业务请求原因、业务请求时间和业务关联数据生成;所述流程业务数据与所述流程实例数据基于所述业务标识绑定;
32、执行队列创建模块,用于将所述流程实例数据和所述流程业务数据转入协程,并创建用于缓存所述协程中的所述流程实例数据和所述流程业务数据的预备执行队列、正在执行队列、挂起执行队列和已执行完队列;
33、流程数据缓存模块,用于基于所述预备执行队列、所述正在执行队列、所述挂起执行队列和所述已执行完队列的缓存规则,缓存所述协程中的所述流程实例数据和所述流程业务数据;
34、流程数据处理模块,用于基于所述正在执行队列缓存后的所述协程中的所述流程实例数据和所述流程业务数据,通过所述协程处理所述业务请求指令对应的流程业务。
35、在一种可选的实施方式中,所述流程数据缓存模块,包括:
36、业务数据检索子模块,用于在已执行完队列中检索是否存在所述业务请求对应的所述流程实例数据和所述流程业务数据;
37、第一数据获取子模块,用于若在所述已执行完队列中检索到存在所述业务请求对应的所述流程实例数据和所述流程业务数据,从所述已执行完队列中获取所述业务请求对应的所述协程中的流程实例数据和所述流程业务数据;
38、第一数据缓存子模块,用于将所述协程中的所述流程实例数据和所述流程业务数据转入所述预备执行队列缓存;
39、第二数据缓存子模块,用于将所述协程中的流程实例数据和所述流程业务数据转入所述正在执行队列中缓存;
40、数据阻塞判断子模块,用于判断所述正在执行队列中缓存的所述流程实例数据和所述流程业务数据是否发生阻塞;
41、第三数据缓存子模块,用于若所述正在执行队列中缓存的所述流程实例数据和所述流程业务数据发生阻塞,则所述协程中的所述流程实例数据和所述流程业务数据转入挂起执行队列直到阻塞消除转入所述预备执行队列缓存;
42、第四数据缓存子模块,用于若所述正在执行队列中缓存的所述流程实例数据和所述流程业务数据没有发生阻塞,则继续转入所述正在执行队列缓存所述协程中的所述流程实例数据和所述流程业务数据。
43、在一种可选的实施方式中,该装置还包括:
44、第二数据获取子模块,用于若在所述已执行完队列中未检索到所述业务请求对应的所述流程实例数据和所述流程业务数据,则从状态机模型获取所述业务请求对应的所述流程实例数据和所述流程业务数据;
45、执行动作跳入子模块,用于跳入将所述协程中的流程实例数据和所述流程业务数据转入所述预备执行队列缓存在已执行完队列中检索是否存在所述业务请求对应的所述流程实例数据和所述流程业务数据的步骤继续执行。
46、根据第三方面,本发明实施例提供一种计算机设备,包括:
47、存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行第一方面或第一方面任一实施方式中的流程业务数据处理方法。
48、根据第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行第一方面或第一方面任一实施方式的流程业务数据处理方法。