G06Q10/06
1.一种流程控制方法,所述流程包括多个事件节点,其特征在于,包括:
当出现新增事件节点时,判断对应的流程栈是否已满;
当确定所述流程栈已满时,为所述流程栈申请增加对应的存储空间;
当对应的存储空间申请成功时,将所述新增事件节点压入所述流程栈的栈顶。
2.根据权利要求1所述的流程控制方法,其特征在于,所述对应的存储空间大于或等于 所述新增事件节点所占的存储空间。
3.根据权利要求1所述的流程控制方法,其特征在于,还包括:
取出所述流程栈栈顶的事件节点并进行处理。
4.根据要求1所述的流程控制方法,其特征在于,所述流程为同步阻塞流程。
5.一种流程控制装置,所述流程包括多个事件节点,其特征在于,包括:
判断单元,适于当出现新增事件节点时,判断对应的流程栈是否已满;
请求单元,当确定所述流程栈已满时,为所述流程栈申请增加对应的存储空间;
控制单元,适于当对应的存储空间申请成功时,将所述新增事件节点压入所述流程栈 的栈顶。
6.根据权利要求5所述的流程控制装置,其特征在于,所述对应的存储空间大于或等于 所述新增事件节点所占的存储空间。
7.根据权利要求5所述的流程控制装置,其特征在于,还包括:
处理单元,适于取出所述流程栈栈顶的事件节点并进行处理。
8.根据权利要求5所述的流程控制装置,其特征在于,所述流程为同步阻塞流程。
9.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运 行时执行权利要求1至4任一项所述的流程控制方法的步骤。
10.一种终端,其特征在于,包括存储器和处理器,所述存储器上储存有能够在所述处 理器上运行的计算机指令,所述处理器运行所述计算机指令时执行权利要求1至4任一项所 述的流程控制方法的步骤。
本发明涉及流程控制技术领域,特别是涉及一种流程控制方法及装置、计算机可 读存储介质、终端。
为降低对国外技术的依赖度,目前从硬件到软件,从底层操作系统到上层各应用, 国产化的呼声日渐高涨;而对于对外依赖度较高的金融行业,国产化的需求及趋势也越来 越明显。为了适用于国产化操作系统,金融行业的诸多应用需要做向国产化系统迁移的工 作。
一切应用的实际本质说到底都是流程控制,与编程语言类似,应用的流程也分为 顺序流程、循环流程和分支流程。而对于流程的流转,分支流程是流程控制中最复杂且最具 神秘感的流程控制方式。根据所对应提供的功能多少,采用分支流程的应用更是在流程控 制方面需要下很大功夫完善其运行,避免出现设计之外的问题。
分支流程可分为同步阻塞流程与异步非阻塞流程。其中,对于同步阻塞流程,一般 采用递归调用来进行流程控制。但是,在采用递归调用进行流程控制时,存在着流程控制可 靠性差的问题。
本发明实施例解决的技术问题是在提高流程控制的可靠性。
为解决上述问题,本发明实施例提供了一种流程控制方法,所述流程包括多个事 件节点,所述方法包括:
当出现新增事件节点时,判断对应的流程栈是否已满;
当确定所述流程栈已满时,为所述流程栈申请增加对应的存储空间;
当对应的存储空间申请成功时,将所述新增事件节点压入所述流程栈的栈顶。
可选地,所述对应的存储空间大于或等于所述新增事件节点所占的存储空间。
可选地,所述方法还包括:
取出所述流程栈栈顶的事件节点并进行处理。
可选地,所述流程为同步阻塞流程。
本发明实施例还提供了一种流程控制装置,所述流程包括多个事件节点,所述装 置包括:
判断单元,适于当出现新增事件节点时,判断对应的流程栈是否已满;
请求单元,当确定所述流程栈已满时,为所述流程栈申请增加对应的存储空间;
控制单元,适于当对应的存储空间申请成功时,将所述新增事件节点压入所述流程栈 的栈顶。
可选地,所述对应的存储空间大于或等于所述新增事件节点所占的存储空间。
可选地,所述装置还包括:
处理单元,适于取出所述流程栈栈顶的事件节点并进行处理。
可选地,所述流程为同步阻塞流程。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述 计算机指令运行时执行上述任一项所述的流程控制方法的步骤。
本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上储存有能 够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述任一项 所述的流程控制方法的步骤。
与现有技术相比,本发明的技术方案具有以下的优点:
上述的方案,通过基于流程中的事件节点的数量,对对应的流程栈所占的存储空间进 行调整,可以有效避免流程栈溢出情形的发生,提高流程控制的可靠性。
图1是本发明实施例中的一种流程控制方法的流程图;
图2是本发明实施例中另一种流程控制方法的入栈和出栈操作的示意图;
图3是本发明实施例中的一种流程控制装置的结构示意图。
现有技术中,一般采用递归调用来进行同步阻塞流程的流程控制。但是,因各不同 操作系统分配给应用的栈空间是不确定且相对较小的,当递归调用层级太深时,易导致系 统栈溢出风险的发生,从而发生应用崩溃甚至系统出错的情况,存在着可靠性差的问题。
为解决现有技术中存在的上述问题,本发明实施例采用的技术方案基于流程中的 事件节点的数量,对对应的流程栈所占的存储空间进行调整,可以有效避免流程栈溢出情 形的发生,提高流程控制的可靠性。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明 的具体实施例做详细的说明。
在具体实施中,为了避免不同的应用在不同的操作系统环境下迁移时,发生栈溢 出的风险,
图1示出了本发明实施例中的一种流程控制方法的流程图。如图1所示的流程控制方 法,适于对同步阻塞流程中的事件节点进行控制,具体可以包括如下的操作:
步骤S101:当出现新增事件节点时,判断对应的流程栈是否已满;当判断结果为是时, 可以执行步骤S102;反之,则可以直接执行步骤S104。
在具体实施中,对于一个同步阻塞流程,当流程控制开始时,系统分配给对应的流 程栈的存储空间可以根据实际的需要进行设置。在本发明一实施例中,在流程控制刚开始 时,系统分配对对应的流程栈的存储空间为零,也即同步阻塞流程对应的流程栈的栈顶指 针和栈底指针指向同一个地址。
其中,在执行同步阻塞流程中的过程中,当产生一个新增事件节点需要压入流程 栈中等待处理时,需要首先判断对应的流程栈是否已满。其中,在判断对应的流程栈是否已 满时,可以通过流程栈的栈顶指针指向的地址和栈底指针指向的地址之间的差值进行判 断。具体而言,当栈顶指针指向的地址减去栈底指针指向的地址之间的差值小于系统当前 分配给流程栈的存储空间的大小时,可以确定流程栈未满;当栈顶指针指向的地址减去栈 底指针指向的地址之间的差值等于系统当前分配给流程栈的存储空间的大小时,可以确定 流程栈已满。
步骤S102:当确定所述流程栈已满时,为所述流程栈申请增加对应的存储空间。
在具体实施中,当确定对应的流程栈已满时,将出现的新增事件节点压入流程栈 的栈顶将会发生栈溢出的风险,为了避免此种情况的出现,可以首先向系统申请为流程栈 增加对应的存储空间,以存储新增事件节点。
其中,当确定所述流程栈已满时,向系统申请增加的存储空间的大小可以根据实 际的需要进行设置。
在本发明一实施例中,为了提高存储空间的利用效率,在每次确定流程栈已满时, 向系统申请增加的存储空间足够容纳新增事件节点即可,即每当产生一个新增事件节点 时,为所述新增事件节点申请一个事件节点对应的存储空间。
在本发明另一实施例中,为了提高流程控制的效率,可以在产生一个新增事件节 点时,向系统所申请增加的存储空间大于一个新增事件节点对应的存储空间,如申请5个事 件节点对应的存储空间。那么,在后续的4个事件节点产生时,将无需向系统再次申请存储 空间,可以直接进行入栈操作。
步骤S103:当对应的存储空间申请成功时,将所述新增事件节点压入所述流程栈 的栈顶。
在具体实施中,当对应的存储空间申请成功时,便可以将所述新增事件节点压缩 所述流程栈的栈顶,也即将所述新增事件节点作为流程栈的新的栈顶。
步骤S104:将所述新增事件节点压入所述流程栈的栈顶。
在具体实施中,当确定流程栈未满时,直接执行将新增事件节点的入栈操作,也即 将新增事件节点压入流程栈的栈顶,将不会发生栈溢出的情形。因此,直接将新增事件节点 压入所述流程栈的栈顶即可。
在本发明一实施例中,步骤S103和步骤S104中将所述新增事件节点压入所述流程 栈的栈顶的操作采用呼叫(CallFlow)流程执行。具体而言,阻塞调用另外一个流程的事件 节点,即CallFlow节点,在调用完成后等待CallFlow节点执行结束,CallFlow节点的返回值 作为[xg1] 的输入,并执行新增事件节点的入栈操作。[xg2]
在具体实施中,在对流程栈中的事件节点进行处理时,可以按照顺序首先取出所述流 程栈栈顶的事件节点并执行相应的处理操作。其中,可以采用返回(Return)流程执行流程 栈中的事件节点的出栈处理。
参见图2,假定流程栈中已有事件节点1至事件节点N,其中,N为大于等于1 的整 数。当新增事件节点N+1产生时,可以首先基于作为流程栈的栈底元素的事件节点1指向的 地址,以及作为流程栈的栈顶元素的事件节点N指向的地址,确定流程栈是否已满。当确定 流程栈是否已满时,向系统申请预设大小的存储空间,并将新增事件节点N+1压入流程栈的 栈顶,代替事件节点N作为流程栈的栈顶元素;反之,当确定流程栈未满时,则直接执行将新 增事件节点N+1压入流程栈的栈顶的操作即可。当对流程中的事件节点进行处理,也即出栈 时,首先取出栈顶的事件节点N+1进行处理。
这里需要指出的是,图1和图2所示的操作过程可以是即时的、接近即时的、渐进的 或者是处于任何适当速率执行。一旦上述的过程被激活,对应的过程进度可以由终端设备 进行自动控制,独立于用户;或者,也可以由用户对上述的过程进度进行控制。虽然上文描 述的过程包括以特定顺序执行的多个操作,但应该清楚了解,这些过程可以包括更多或更 少的操作,这些操作可以顺序执行或使用并行处理器或多线程环境并行执行。
上述对本发明实施中的流程控制方法进行了详细的描述,下面将对上述的方法对 应的装置进行介绍。
图3示出了本发明实施例中的一种流程控制装置的结构示意图。参见图3,本发明 实施例中的一种流程控制装置30,适于对同步阻塞流程中的时间节点进行控制,具体可以 包括判断子单元301、请求单元302和控制单元303,其中:
判断单元301,适于当出现新增事件节点时,判断对应的流程栈是否已满;
请求单元302,当确定所述流程栈已满时,为所述流程栈申请增加对应的存储空间;在 本发明一实施例中,所述对应的存储空间大于或等于所述新增事件节点所占的存储空间。
控制单元303,适于当对应的存储空间申请成功时,将所述新增事件节点压入所述 流程栈的栈顶。
在本发明一实施例中,所述装置30还可以包括处理单元304,其中:
处理单元304,适于取出所述流程栈栈顶的事件节点并进行处理。
本发明实施例还提供了一种计算机可读存储介质,所述计算机指令运行时执行上 述任一所述的流程控制方法的步骤。其中,流程控制方法的步骤请参见前述相关部分的介 绍,不再赘述。
本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上储存有能 够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述任一所 述的流程控制方法的步骤。其中,流程控制方法的步骤请参见前述相关部分的介绍,不再赘 述。
采用本发明实施例中的上述方案,基于流程中的事件节点的数量,对对应的流程 栈所占的存储空间进行调整,可以有效避免流程栈溢出情形的发生,提高流程控制的可靠 性。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介 质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例的方法及系统做了详细的介绍,本发明并不限于此。任何本 领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保 护范围应当以权利要求所限定的范围为准。
本文发布于:2023-04-15 08:10:21,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/87157.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |