首页> 中国专利> 流程系统中不确定分支与合并的解决方法

流程系统中不确定分支与合并的解决方法

摘要

流程系统中不确定分支与合并的解决方法,在系统流程存在不确定分支与合并时,对流程的每个节点设置一个分支记数器,由两个字段组成,一个用来保存收敛节点,默认为空;另一个保存分支记数,默认为0:流程创建起始节点A,最终收敛于一个环节E,起始节点与收敛环节是成对出现的节点与环节,将收敛环节的分支记数器设为1,表明收敛环节需要等待1个节点(A)的完成才能开始;流程中起始节点在分出2个节点即分出一个分支的时,将此节点记录的收敛节点的分支记数加1,此起始节点记录的终始或最终收敛节点是E;直到所有传递到终始收敛节点分支节点的流程均完成,再执行最终环节,整个流程结束。

著录项

  • 公开/公告号CN1808487A

    专利类型发明专利

  • 公开/公告日2006-07-26

    原文格式PDF

  • 申请/专利权人 南京联创科技股份有限公司;

    申请/专利号CN200610038376.7

  • 发明设计人 钱伊心;孟维;张辉;

    申请日2006-02-20

  • 分类号G06Q10/00(20060101);G06F17/30(20060101);

  • 代理机构32112 南京天翼专利代理有限责任公司;

  • 代理人汤志武;王鹏翔

  • 地址 210013 江苏省南京市定淮门12号16楼

  • 入库时间 2023-12-17 17:33:59

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-02-28

    未缴年费专利权终止 IPC(主分类):G06F17/00 专利号:ZL2006100383767 申请日:20060220 授权公告日:20100120

    专利权的终止

  • 2010-06-30

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F17/00 变更前: 变更后: 申请日:20060220

    专利权人的姓名或者名称、地址的变更

  • 2010-01-20

    授权

    授权

  • 2006-09-20

    实质审查的生效

    实质审查的生效

  • 2006-07-26

    公开

    公开

说明书

                          技术领域

本发明涉及流程系统方面的软件技术方法。

                          背景技术

目前流程系统或者叫工作流(Workflow)系统已开始得到广泛应用,无论在电子工单处理、软件开发管理、电子政务等等凡是涉及到流程的应用软件,都会用到这项技术。通常要能够实现诸如:顺序执行、并行执行、同步、循环、分支与合并等功能,不同的应用要求的功能会有所差异,根据对实际需求的研究摸索,国外已把这些功能归纳总结成了20个标准模板,可以说基本上涵盖了我们在Workflow实际应用中可能出现的功能需求。实际上,国际上对工作流是有一些标准的,如:XPDL(xml工作流定义语言)、UML(统一建模语言)、BPEL(商务处理执行语言)、XLANG、WSFL、BPML、WSCI等等,但尚没有哪个标准能够全部实现这些功能;对于不确定的分支与合并(MI without a PrioriRuntime Knowledge)尚无标准能实现。这里对所谓不确定分支做个解释,通常分支分为两种,一种是设计流程时(Design Time)即已确定在该环节会有多少个分支,这种情况是确定的,很容易实现,另一种是在流程运行时(Runtime)才知道会有多少分支,数量是事先不知道的。比如一个任务分配系统,上级会将任务分解成多个子任务分配到下级,待所有子任务完成后,再由上级审核。分解成多少个子任务是根据任务的需要决定的,在设计流程时是无法预知的。

这种情况下,通常的办法是:专门运行一个线程,对子任务进行记数,并不断去检查子任务的状态,判断所有子任务是否完成。其缺陷显而易见,一是耗资源,开线程要耗内存,不断检查状态要耗CPU;二是有延时,延时多少取决于状态检查的间隔时间长短。

                          发明内容

本发明的目的是:提出一种流程系统中不确定分支与合并的解决方法,就是针对不确定分支与合并这一特定情况提出的一种解决方法,本发明目的是解决流程系统中不确定分支与合并的一种方法,是独立于具体实现它的计算机程序语言和工具的。分支记数器由流程主控程序实现,不需另起进程,减少了资源消耗;合并动作由分支记数器触发,没有延时。

本发明的目的是这样实现的:流程系统中不确定分支与合并的解决方法,在系统流程存在不确定分支与合并时,对流程的发散节点、收敛节点和普通节点,为每个节点设置一个分支记数器,由两个字段组成,一个用来保存收敛节点,默认为空;另一个保存分支记数,默认为0:其特征是

1)流程首先创建起始节点A,最终收敛于一个环节E,起始节点与收敛环节是成对出现的节点与环节,将收敛环节的分支记数器设为1,表明收敛环节需要等待1个节点(A)的完成才能开始;2).流程中起始节点在分出2个节点即分出一个分支的时,将此节点记录的收敛节点的分支记数加1,此时此起始节点记录的终始或最终收敛节点是E,经过本环节的分支,终始收敛节点E的分支记数器的值是1加所有传递到终始收敛节点分支节点的数目;同时将起始节点A中记录的收敛节点“E”传递给流程中间的起始节点(B1)和(B2),即将(B1)和(B2)的字段1也设置成“E”;3).当起始节点A完成时,则将起始节点A对应的收敛节点E的分支记数器减1,并判断是否为0;此时收敛节点E的分支记数器的值减1;当终始收敛E的分支记数器变为0时,则表明E所等待的任务均已完成;即成为活动节点,反之则不能开始,仍然是非活动节点;4).起始节点与收敛环节是成对出现,流程中间的起始节点(B1)和(B2)与中间收敛环节(D1)和(D2),并且将流程中间的起始节点B记录的收敛节点遗传给收敛环节D,因此收敛环节D1和D2中字段1也变为收敛节点“E”;此时由于流程中间B环收敛于收敛节点D环节,随即将流程中间起始节点B1的收敛节点修改为D1,B2环节也一样;5).在先起始节点和流程中分支逐步完成,直到所有传递到终始收敛节点分支节点的流程均完成,再执行最终环节的任务,整个流程结束;在完成过程中,收敛节点“D1”被遗传给在先起始节点。

本发明的特点是:相对于通常的方法,其主要优势在于:分支记数器由流程主控程序实现,不需另起进程,减少了资源消耗;合并动作由分支记数器触发,没有延时。

                          附图说明

图1是本发明所示的典型的对称的分支收敛流程,

图2是本发明所示的非对称的分支收敛流程。

                        具体实施方式

图1中所示流程是一个典型的分支合并流程,从A开始,到E结束,共5个环节。其中A、B1、B2是发散节点,D1、D2、E是收敛节点,C1、C2、C3是普通节点,我们为每个节点设置一个分支记数器,由两个字段组成,一个用来保存收敛节点,默认为空;另一个保存分支记数,默认为0。下面开始描述整个过程。

1.流程首先创建起始节点A,此时我们知道无论它产生多少个分支,必然最终收敛于E环节,在此我们定义一种成对出现的环节,如A与E、B与D,因此我们同时创建E节点,并在A节点字段1中记录“E”,将E的分支记数器设为1,表明E需要等待1个节点(A)的完成才能开始。

2.流程执行到B环节,由A节点分出2个节点即B1和B2,在分出一个分支的时候,我们会将A节点记录的收敛节点的分支记数加1,此时A记录的收敛节点是E,因此经过本环节的分支,E的分支记数器的值变为3。同时将A中记录的收敛节点“E”传递给B1和B2,即将B1和B2的字段1也设置成“E”,我们将这一特点称为遗传。

3.当节点A完成时,将A对应的收敛节点E的分支记数器减1,并判断是否为0。此时E的分支记数器的值变为2,当E的分支记数器变为0时,则表明E所等待的任务均已完成,可以开始执行了,即成为活动节点,反之则不能开始,仍然是非活动节点。

4.与A环节与E环节成对出现一样,在创建B1和B2的时候也同时创建D1和D2,并且将B环节中记录的收敛节点遗传给D,因此D1和D2中字段1也变为“E”。此时由于B环节收敛于D环节,因此我们在遗传动作之后随即将B1的收敛节点修改为D1,B2环节也一样。

5.由B1和B2分别分支出C1、C2、C3,与第2步一样,D1的分支记数是3,D2的分支记数是2,表明D1需要等待3个任务完成才可执行,D2需要等待2个任务完成才可执行。同样B1的收敛节点“D1”被遗传给C1和C2,B2的收敛节点“D2”被遗传给C3,

6.B1完成,D1记数器变为2,C1、C2完成,D1记数器变为0,此时D1节点可以开始,同样当B2、C3完成,D2记数器变为0,D2可以开始。

7.由于D1记录的收敛节点是“E”,因此当D1完成时,E的分支记数器要减1,变为1。同样当D2完成时,E记数器变为0,表明流程已经流到节点E,E可以开始执行。

8.当E执行完毕,整个流程结束。

通过上述过程的描述,阐明了具体的原理和方法,本方法有几个特性:

a.成对创建--即有对应关系的开始结束环节,在开始节点创建的同时就创建结束节点,而不管中间环节会创建哪些节点。

b.目标遗传--即收敛节点遗传。

c.记数器后置--即分支记数放在收敛节点中计算。

这几点是本方法的关键所在。

我们在这里画一个表格,列出在上述过程中各节点记数器状态变化,以便使人更清晰地理解:

1

节点字段1(收敛节点)字段2(分支记数)状态A E 0活动E 1非活动

2,3,4

节点字段1(收敛节点)字段2(分支记数)状态AE 0完成E 2非活动B1E(注:开始为E,创建D1后变为D1) 0活动D1E 1非活动B2E(注:开始为E,创建D2后变为D2) 0活动D2E 1非活动

5

节点字段1(收敛节点)字段2(分支记数)状态A E 0完成E 2非活动B1 D1 0活动D1 E 3非活动B2 D2 0活动D2 E 2非活动C1 D1 0活动C2 D1 0活动C3 D2 0活动

6

节点字段1(收敛节点)字段2(分支记数)状态  A  E  0完成  E  2非活动  B1  D1  0完成  D1  E  0活动  B2  D2  0完成  D2  E  0活动  C1  D1  0完成  C2  D1  0完成  C3  D2  0完成

7,8

节点字段1(收敛节点)字段2(分支记数)状态A E 0完成E 0活动(注:到第8步,状态为完成)B1 D1 0完成D1 E 0完成B2 D2 0完成D2 E 0完成C1 D1 0完成C2 D1 0完成C3 D2 0完成

本方法不仅对与图1所示的典型的对称的分支收敛流程适用,对于象图2所示的非对称的分支收敛流程同样适用。推导过程与图1类似,区别在创建B1,B2时不会成对创建D1、D2,而是直接将收敛节点“E”遗传给C1、C2、C3。

流程系统中不确定分支与合并的解决方法,是解决流程系统中不确定分支与合并的一种通用方法,不依赖于具体实现语言和工具,C/C++,Java等均可实现。

具体方法介绍如下:

图1中所示流程是一个典型的分支合并流程,从A开始,到E结束,共5个环节。其中A、B1、B2是发散节点,D1、D2、E是收敛节点,C1、C2、C3是普通节点,我们为每个节点设置一个分支记数器,由两个字段组成,一个用来保存收敛节点,默认为空;另一个保存分支记数,默认为0。下面开始描述整个过程。

1.流程首先创建起始节点A,此时我们知道无论它产生多少个分支,必然最终收敛于E环节,在此我们定义一种成对出现的环节,如A与E、B与D,因此我们同时创建E节点,并在A节点字段1中记录“E”,将E的分支记数器设为1,表明E需要等待1个节点(A)的完成才能开始。

2.流程执行到B环节,由A节点分出2个节点即B1和B2,在分出一个分支的时候,我们会将A节点记录的收敛节点的分支记数加1,此时A记录的收敛节点是E,因此经过本环节的分支,E的分支记数器的值变为3。同时将A中记录的收敛节点“E”传递给B1和B2,即将B1和B2的字段1也设置成“E”,我们将这一特点称为遗传。

3.当节点A完成时,将A对应的收敛节点E的分支记数器减1,并判断是否为0。此时E的分支记数器的值变为2,当E的分支记数器变为0时,则表明E所等待的任务均已完成,可以开始执行了,即成为活动节点,反之则不能开始,仍然是非活动节点。

4.与A环节与E环节成对出现一样,在创建B1和B2的时候也同时创建D1和D2,并且将B环节中记录的收敛节点遗传给D,因此D1和D2中字段1也变为“E”。此时由于B环节收敛于D环节,因此我们在遗传动作之后随即将B1的收敛节点修改为D1,B2环节也一样。

5.由B1和B2分别分支出C1、C2、C3,与第2步一样,D1的分支记数是3,D2的分支记数是2,表明D1需要等待3个任务完成才可执行,D2需要等待2个任务完成才可执行。同样B1的收敛节点“D1”被遗传给C1和C2,B2的收敛节点“D2”被遗传给C3,

6.B1完成,D1记数器变为2,C1、C2完成,D1记数器变为0,此时D1节点可以开始,同样当B2、C3完成,D2记数器变为0,D2可以开始。

7.由于D1记录的收敛节点是“E”,因此当D1完成时,E的分支记数器要减1,变为1。同样当D2完成时,E记数器变为0,表明流程已经流到节点E,E可以开始执行。

8.当E执行完毕,整个流程结束。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号