流程中节点激活的方法及装置与流程

文档序号:11200720阅读:516来源:国知局
流程中节点激活的方法及装置与流程

本发明涉及计算机应用领域,具体而言,涉及一种流程中节点激活的方法及装置。



背景技术:

流程是由一系列的流程节点组成,流程节点是流程处理者操作的对象,根据流程处理者的不同操作和运行数据,来决定是否激活后续的一个或多个环节。目前,常见的对流程建模的方式是以流程节点为中心,判断下一个流程节点是否激活的条件也是以节点间的逻辑关系为依据。但是,这种实现方式下,流程节点之间的关系很复杂,导致后续流程节点激活的条件也很复杂,容易出错。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种流程中节点激活的方法及装置,以解决上述问题。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种流程中节点激活的方法,应用于流程模型,所述流程模型包括多个流程节点及多根连接线,每个所述流程节点对应一个入线集合及一个出线集合,每个所述流程节点对应的入线集合是由将所述流程节点作为终点的连接线构成,每个所述流程节点对应的出线集合是由将所述流程节点作为起点的连接线构成,每根所述连接线包括起点、终点及对应的逻辑处理方法,所述方法包括:当前流程节点分别激活其出线集合中的各个连接线对应的逻辑处理方式;各个所述连接线分别根据其对应的逻辑处理方式,判断各个所述连接线是否满足激活条件;若所述连接线判断出其满足激活条件,则将所述连接线的状态变为激活状态,并发送激活通知到所述连接线的终点对应的流程节点;当所述连接线的终点对应的流程节点接收到所述激活通知后,根据其入线集合的当前状态,确定其是否激活。

第二方面,本发明实施例提供了一种流程中节点激活的装置,应用于流程模型,所述流程模型包括多个流程节点及多根连接线,每个所述流程节点对应一个入线集合及一个出线集合,每个所述流程节点对应的入线集合是由将所述流程节点作为终点的连接线构成,每个所述流程节点对应的出线集合是由将所述流程节点作为起点的连接线构成,每根所述连接线包括起点、终点及对应的逻辑处理方法,所述装置包括:激活模块,用于当前流程节点分别激活其出线集合中的各个连接线对应的逻辑处理方式;判断模块,用于各个所述连接线分别根据其对应的逻辑处理方式,判断各个所述连接线是否满足激活条件;第一处理模块,用于若所述连接线判断出其满足激活条件,则将所述连接线的状态变为激活状态,并发送激活通知到所述连接线的终点对应的流程节点;第二处理模块,用于当所述连接线的终点对应的流程节点接收到所述激活通知后,根据其入线集合的当前状态,确定其是否激活。

与现有技术相比,本发明实施例提供的一种流程中节点激活的方法及装置,通过当前流程节点分别激活其出线集合中的各个连接线对应的逻辑处理方式;各个所述连接线分别根据其对应的逻辑处理方式,判断各个所述连接线是否满足激活条件;若所述连接线判断出其满足激活条件,则将所述连接线的状态变为激活状态,并发送激活通知到所述连接线的终点对应的流程节点;当所述连接线的终点对应的流程节点接收到所述激活通知后,根据其入线集合的当前状态,确定其是否激活,本方案抛弃了传统的面向流程节点的方式,采用以“连接线”为中心的设计,可以大大简化流程的设计和实现的复杂度。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1是本发明实施例提供的一种用户终端的结构框图。

图2是本发明实施例提供的一种流程模型的示意图。

图3是本发明第一实施例提供的一种流程中节点激活的方法的流程图。

图4是本发明第一实施例提供的一种流程节点的入线集合和出线集合的示意图。

图5是本发明第一实施例提供的一种流程中节点激活的方法的第一流程图。

图6是本发明第一实施例提供的一种流程中节点激活的方法的第二流程图。

图7是本发明第二实施例提供的一种流程中节点激活的装置的结构框图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

图1示出了一种可应用于本发明实施例中的用户终端100的结构框图。如图1所示,用户终端100包括存储器102、存储控制器104,一个或多个(图中仅示出一个)处理器106、外设接口108、射频模块110、音频模块112、触控屏幕114等。这些组件通过一条或多条通讯总线/信号线116相互通讯。

存储器102可用于存储软件程序以及模块,如本发明实施例中的流程中节点激活的方法以及装置对应的程序指令/模块,处理器106通过运行存储在存储器102内的软件程序以及模块,从而执行各种功能应用以及数据处理,如本发明实施例提供的流程中节点激活的方法。

存储器102可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。处理器106以及其他可能的组件对存储器102的访问可在存储控制器104的控制下进行。

外设接口108将各种输入/输入装置耦合至处理器106以及存储器102。在一些实施例中,外设接口108,处理器106以及存储控制器104可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

射频模块110用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。

音频模块112向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。

触控屏幕114在用户终端100与用户之间同时提供一个输出及输入界面。具体地,触控屏幕114向用户显示视频输出,这些视频输出的内容可包括文字、图形、视频及其任意组合。

可以理解,图1所示的结构仅为示意,用户终端100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

请参见图2,图2示出了一个流程模型的示意图。该流程模型中包括了10个流程节点,分别为{a,b,...,h},申请人发现在该模型中,若以流程节点作为处理对象,必须记录所有流程节点之间的关系,如对a来说,要记录a和b、c、d的关系,对h,记录h和e、f、i的关系。

进一步,各个流程节点之间的关系可能是复杂的:

(1)存在不同流程节点之间的“与”和“或”的排列组合关系。例如,h节点要激活,则需要记录“e节点执行完成或者(f节点执行完成并且i节点执行完成)”这种关系。同样,对于a节点要记录“激活b、c、d的启动条件”。

(2)每个流程节点需要记录前序流程节点和后续流程节点的信息,即方向关系。

(3)流程模型可能是网的结构,并不单纯是一棵树。例如c节点的后续节点可能是g节点,即对应发生跳转的场景。

进一步的,考虑到流程节点还要记录流程节点本身的数据,例如,该流程节点的处理人、表单数据、处理时限、处理逻辑等,因此,面向流程节点设计的流程数据结构注定是复杂的,对设计、算法、维护都是巨大的挑战。

本发明实施例提供的流程中节点激活的方法可以运行于图1所示的用户终端100中。该方法通过当前流程节点分别激活其出线集合中的各个连接线对应的逻辑处理方式;各个所述连接线分别根据其对应的逻辑处理方式,判断各个所述连接线是否满足激活条件;若所述连接线判断出其满足激活条件,则将所述连接线的状态变为激活状态,并发送激活通知到所述连接线的终点对应的流程节点;当所述连接线的终点对应的流程节点接收到所述激活通知后,根据其入线集合的当前状态,确定其是否激活,本方案抛弃了传统的面向流程节点的方式,采用以“连接线”为中心的设计,可以大大简化流程的设计和实现的复杂度。

下面对该流程中节点激活的方法进行详细说明。该流程中节点激活的方法应用于流程模型,所述流程模型包括多个流程节点及多根连接线,每个所述流程节点对应一个入线集合及一个出线集合,每个所述流程节点对应的入线集合是由将所述流程节点作为终点的连接线构成,每个所述流程节点对应的出线集合是由将所述流程节点作为起点的连接线构成,每根所述连接线包括起点、终点及对应的逻辑处理方法。其中,每根连接线将该连接线的起点、连接线的终点及对应的逻辑处理方法封装起来,自己的逻辑处理方式由自己内部运算完成,不向外暴露,使得业务逻辑更加清晰,每个连接线只处理自己本身的业务逻辑,不用考虑和其他的“连接”的关系,实现了更好的封装。对于流程在任意流程节点中增加、修改、删除诸如跳转、回退等业务非常方便,只需建立一条新的“连接”,修改、删除相对应的“连接”即可。

图3示出了本发明第一实施例提供的一种流程中节点激活的方法的流程图,请参阅图3,该流程中节点激活的方法运行于上述用户终端中,该方法包括:

步骤s210,当前流程节点分别激活其出线集合中的各个连接线对应的逻辑处理方式。

请参见图4,若当前流程节点为n,则当前流程节点n的出线集合为{连接线nd,连接线ne,...,连接线nf},每个连接线都对应一个逻辑处理方式,此时,激活出线集合为{连接线nd,连接线ne,...,连接线nf}中各个连接线对应的逻辑处理方式。

当前流程节点分别激活其出线集合中的各个连接线对应的逻辑处理方式的实施方式有多种,例如,可以是当前流程节点同时激活其出线集合中的各个连接线对应的逻辑处理方式;也可以是当前流程节点依次激活其出线集合中的各个连接线对应的逻辑处理方式。

作为一种实施方式,若当前流程节点对应的出线集合为空,则所述流程节点结束。

步骤s220,各个所述连接线分别根据其对应的逻辑处理方式,判断各个所述连接线是否满足激活条件。

步骤s230,若所述连接线判断出其满足激活条件,则将所述连接线的状态变为激活状态,并发送激活通知到所述连接线的终点对应的流程节点。

继续以图4进行说明,依次根据出线集合{连接线nd,连接线ne,...,连接线nf}中各个连接线对应的逻辑处理方式,判断各个连接线是否满足激活条件,假设连接线nd满足了激活条件,则此时将连接线nd的终点对应的流程节点d的状态变为激活状态,并发送激活通知到所述连接线的终点对应的流程节点d。可以理解的是,此时,流程节点d只是接收到了连接线nd被激活的通知,并不等于此时流程节点d已经被激活,流程节点d是否被激活,需要进一步的进行判断。

步骤s240,当所述连接线的终点对应的流程节点接收到所述激活通知后,根据其入线集合的当前状态,确定其是否激活。

继续以图4进行说明,流程节点d接收到了连接线nd被激活的通知,由于流程节点d此时的入线集合中只有一条连接线nd,此时,流程节点d被激活。

进一步的,当连接线的终点对应的流程节点对应入线集合中的连接线不止一个时,作为一种实施方式,请参阅图5,所述根据其入线集合的当前状态,确定其是否激活,包括:

步骤s250,根据所述入线集合中各个连接线的状态,及各个连接线间的逻辑运算关系,确定所述入线集合的当前状态。

作为一种实施方式,请参阅图6,步骤s250可以包括:

步骤s260,将所述入线集合中各个连接线分组。

可以将入线集合中各个连接线分组,其中,该分组可以是“或”组和“与”组。组也可以包含组,是一种递归的关系。

“或”组状态定义为“激活”的条件为:只要该组中有一条线(或组)对应状态为“激活”,则该组的状态为激活。

“与”组状态定义为“激活”的条件为:当且仅当组内所有线(或组)对应的连接状态为“激活”,则该组的状态为激活。

例如,假设节点1的入线集合中包括{l1,l2,l3,l4,l5,l6,l7,l8},其中,要激活节点1的条件为:[l1&&l2)||l3]&&[(l4&&l5&&l6)||l7]&&l8,其中,&&表示“与”关系,||表示“或”关系。

可以根据该激活条件,将入线集合的各个连接线分组,分为3组,分别为:

go1:[(l1&&l2)||l3]

go2:[(l4&&l5&&l6)||l7]

go3:l8

可以发现,此时,go1,go2,go3这三个分组间的关系为逻辑运算关系为与关系,即入线集合为“与”组,“与”组状态定义为“激活”的条件为:只要组中有一条线(或组)对应状态为“激活”,则该组激活;

进一步的,这3个分组内部,又可以进一步的进行划分,划分出各个子分组。例如,go1又可以进一步划分为ga1和ga2:

ga1:(l1&&l2)

ga2:l3

其中,ga1和ga2之间的逻辑运算关系为或关系,该go1组为“或”组,“或”组状态定义为“激活”的条件为:只要组中有一条线(或组)对应状态为“激活”,则该组激活。

同理,go2又可以进一步划分为ga3和ga4:

ga3:(l4&&l5&&l6)

ga4:l7

其中,ga3和ga4之间的逻辑运算关系为或关系。

依次类推,可以将ga1,ga3再次进行划分。并最终获得各个分组所包含的各个连接线的状态及各个连接线间的逻辑关系:

1)ga1:“与”组,包括l1和l2,当l1和l2状态同时为“激活”时,ga1状态设为“激活”;

2)ga3:“与”组,包括l4、l5、l6,当l4、l5、l6状态同时为“激活”时,ga3状态设为“激活”;

3)go1:“或”组,包括组ga1和ga2,只要ga1和ga2任一个状态为“激活”,go1状态为“激活”;

4)go2:“或”组,包括组ga3和ga4,只要ga3和ga4任一个状态为“激活”,go2状态为“激活”。

5)入线集合激活的条件最后变成了go1、go2和go3必须同时是激活状态,同时这也决定了该入线集合对应的流程节点是否激活。

步骤s270,分别根据每个分组所包含的各个连接线的状态及各个连接线间的逻辑关系,计算每个分组的状态。

当获得每个分组所包含的各个连接线的状态及各个连接线间的逻辑关系后,只需要在流程节点收到连接线的激活通知时,计算该连接线所在分组的激活条件是否满足,若该分组激活条件满足,则进一步判断该流程节点的入线集合的激活条件是否满足。

步骤s280,根据每个分组的状态,确定所述入线集合的当前状态。

若将入线集合划分为了“或”组,则该“或”组中有一条线(或组)对应状态为“激活”,则该入线集合的当前状态为激活;

若将入线集合划分为了“与”组,则当且仅当该“与”组内所有线(或组)对应的连接状态为“激活”,则该入线集合的当前状态为激活。

步骤s260,若所述入线集合的当前状态为激活状态,则将所述连接线的终点对应的流程节点激活。

可以理解的是,采用这种组递归的方法,可以很好地解决流程节点对应的入线集合中各个连接线之间任意排列组合的关系,并且递归是种很成熟的算法,不存在实现难点,例如,使用面向对象设计模式中的composition模式便可轻松实现。

作为一种实施方式,所述方法还包括:根据不同的业务场景,将各个业务节点抽象为所述流程节点,将各个业务节点之间的前后执行顺序抽象为所述连接线。

例如,对于oa(officeautomation)办公系统,可以将每个审批节点都抽象为一个流程节点,各个审批节点的前后顺序,可以抽象为各个流程节点间的连接线。同理,其它应用场景也可以抽象为该流程节点模型,并采用上述流程中节点激活的方法来判断流程中的各个节点是否激活。通过这种方式,能够进一步增加该流程中节点激活的方法的使用范围。

本发明实施例提供的流程中节点激活的方法,通过当前流程节点分别激活其出线集合中的各个连接线对应的逻辑处理方式;各个所述连接线分别根据其对应的逻辑处理方式,判断各个所述连接线是否满足激活条件;若所述连接线判断出其满足激活条件,则将所述连接线的状态变为激活状态,并发送激活通知到所述连接线的终点对应的流程节点;当所述连接线的终点对应的流程节点接收到所述激活通知后,根据其入线集合的当前状态,确定其是否激活,本方案抛弃了传统的面向流程节点的方式,采用以“连接线”为中心的设计,可以大大简化流程的设计和实现的复杂度。

请参阅图7,是本发明第二实施例提供的流程中节点激活的装置300的功能模块示意图。所述流程中节点激活的装置300包括激活模块310,判断模块320、第一处理模块330、第二处理模块340。

激活模块310,用于当前流程节点分别激活其出线集合中的各个连接线对应的逻辑处理方式;

判断模块320,用于各个所述连接线分别根据其对应的逻辑处理方式,判断各个所述连接线是否满足激活条件;

第一处理模块330,用于若所述连接线判断出其满足激活条件,则将所述连接线的状态变为激活状态,并发送激活通知到所述连接线的终点对应的流程节点;

第二处理模块340,用于当所述连接线的终点对应的流程节点接收到所述激活通知后,根据其入线集合的当前状态,确定其是否激活。

作为一种实施方式,所述第二处理模块340,还用于根据所述入线集合中各个连接线的状态,及各个连接线间的逻辑运算关系,确定所述入线集合的当前状态;若所述入线集合的当前状态为激活状态,则将所述连接线的终点对应的流程节点激活。

作为一种实施方式,所述第二处理模块340,还用于将所述入线集合中各个连接线分组;分别根据每个分组所包含的各个连接线的状态及各个连接线间的逻辑关系,计算每个分组的状态;根据每个分组的状态,确定所述入线集合的当前状态。

作为一种实施方式,所述装置还包括第三处理模块350,用于若当前流程节点对应的出线集合为空,则所述流程节点结束。

作为一种实施方式,所述装置还包括抽象模块360,用于根据不同的业务场景,将各个业务节点抽象为所述流程节点,将各个业务节点之间的前后执行顺序抽象为所述连接线。

以上各模块可以是由软件代码实现,此时,上述的各模块可存储于用户终端的存储器102内。以上各模块同样可以由硬件例如集成电路芯片实现。

本发明实施例所提供的流程中节点激活的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第三等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1