CN102254246A - 一种工作流管理方法及其系统 - Google Patents
一种工作流管理方法及其系统 Download PDFInfo
- Publication number
- CN102254246A CN102254246A CN201110168489XA CN201110168489A CN102254246A CN 102254246 A CN102254246 A CN 102254246A CN 201110168489X A CN201110168489X A CN 201110168489XA CN 201110168489 A CN201110168489 A CN 201110168489A CN 102254246 A CN102254246 A CN 102254246A
- Authority
- CN
- China
- Prior art keywords
- task
- arithmetical unit
- tau
- time
- flow
- 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.)
- Granted
Links
Images
Abstract
本发明提供了一种工作流管理方法及其系统,通过采用异步流程计算机制,提高系统处理效率和吞吐量,所述系统包括:流程定义模块、流程数据库、工作流执行服务模块、任务队列管理模块,其中,流程定义模块,用于设置业务流程中各个任务的实时性约束属性,以及将业务流程转化为流程图并以关系型数据结构保存在流程数据库中的流程定义表;工作流执行服务模块,用于将用户提交的任务保存到所述流程数据库中的工作任务表并向用户返回提交成功与否的信息;根据所述流程定义表中的数据对待计算任务进行路由计算产生下一个任务;任务队列管理模块,用于根据产生的任务的活动定义、机构信息和角色信息在内存中构建一个以上链式结构的任务队列供用户调用。
Description
技术领域
本发明涉及计算机信息处理技术,更为具体地,涉及一种工作流管理方法及其系统。
背景技术
工作流技术起源于二十世纪七十年代中期办公自动化领域的研究,随着个人计算机、网络技术的普及和推广,以及信息化建设的日益完善,使得工作流技术的研究与开发进入了一个新的热潮。1993年8月,第一个工作流技术标准化的工业组织——工作流管理联盟(Workflow Management Coalition,简称WFMC)成立。1994年,工作流管理联盟发布了用于工作流管理系统之间互操作的工作流参考模型,并相继制定了一系列工业标准。与此同时,关于工作流技术的学术研究也十分活跃,许多原型系统在实验室里开发出来。进入二十一世纪以来,工作流技术已被越来越多的人认可,与之相关的标准规范、工作流引擎及商业产品不胜枚举。人们在开发推广工作流产品的同时,更加注重工作流的理论研究,以推动该项技术走向成熟。
随着工作流技术的发展和走向成熟,并引起银行业关注,并将其引入构建了流程银行。流程银行是通过对银行的业务流程、组织流程、管理流程以及文化理念的完全再造,以达到提高效率、降低成本和化解风险的目的。
目前,业界主要的流程银行产品解决方案以工作流、影像处理和内容管理为基础,结合上层服务与业务应用模块,来构成完整的流程银行系统。其中所使用的通用流程运算器大多是伴随着业务信息化和办公自动化的过程而发展起来的,导致这些流程运算器在设计的过程中存在以下特征:顺序化计算(路由的计算是工作项提交的组成部分)、业务数据存放在流程运算器中、自由流、流程实例包含流程定义数据等特点。
当用户向流程运算器提交一个工作项(即任务)后,流程运算器将提交的数据保存到流程数据库后,启动路由计算策略产生下一个工作项,然后将提交成功与否的信息返回给用户,在此过程中用户处于等待状态,而不能进行其他操作,导致系统处理效率和吞吐量低。
现有流程银行平台解决方案中所采用的业务流程管理系统是针对企业活动中的通用流程而研制的,均没有针对银行后台业务的实时性特点进行相应的优化处理:既无法为业务流程添加实时性约束,又无法在流程执行过程中动态修改流程运行的优先级从而根据实际需要动态调整流程的运行顺序。所以,现有流程银行平台中的业务流程处理系统不能满足银行后台业务自动化处理的需要。
发明内容
本发明的目的在于提供一种工作流管理方法及其系统以解决上述技术问题。
一方面,本发明提供一种工作流管理系统,通过采用异步流程计算机制,提高系统处理效率和吞吐量,所述工作流管理系统包括流程定义模块、流程数据库、工作流执行服务模块、任务队列管理模块,其中:
流程定义模块,用于:设置业务流程中各个任务的实时性约束属性,以及将业务流程转化为流程图并以关系型数据结构保存在所述流程数据库中的流程定义表;
工作流执行服务模块,用于:将用户提交的任务保存到所述流程数据库中的工作任务表并向用户返回提交成功与否的信息;查询所述流程数据库中的工作任务表,获取待计算任务,根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
任务队列管理模块,用于:根据所述产生的任务的活动定义、机构信息和角色信息在内存中构建一个以上链式结构的任务队列供用户调用。
另一方面,本发明提供一种工作流管理系统,采用运算器组的控制方式,实现系统的负载均衡和多点备份,所述工作流管理系统包括上述的流程定义模块、流程数据库、工作流执行服务模块、任务队列管理模块,其中,所述工作流执行服务模块包括准入控制器、任务分配器以及一个以上运算器组,
其中,每一个所述运算器组包括一个以上运算器,启动所述运算器组以使所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
其中,所述准入控制器用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的任务进行准入控制;
所述任务分配器采用扩展的动态关键路径EDCP算法将准入控制器准入的任务分配给所述运算器。
再一方面,本发明还提供一种工作流管理系统,根据实时性约束属性动态调整业务流程的运行优先级,所述工作流管理系统包括上述的流程定义模块、流程数据库、工作流执行服务模块、任务队列管理模块,其中,所述工作流执行服务模块还包括一个以上与所述运算器分别对应的比例-积分-微分PID控制器和任务调度器,其中:
所述PID控制器采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果;
所述任务调度器根据所述PID控制器运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度。
相应地,本发明还提供了一种工作流管理方法,通过采用异步流程计算机制,提高系统处理效率和吞吐量,该方法包括:
设置业务流程中各个任务的实时性约束属性,以及将业务流程转化为流程图并以关系型数据结构保存在所述流程数据库中的流程定义表;
将用户提交的任务保存到所述流程数据库中的工作任务表并向用户返回提交成功与否的信息;查询所述流程数据库中的工作任务表,获取待计算任务,根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
根据所述产生的任务的活动定义、机构信息和角色信息在内存中构建一个以上链式结构的任务队列供用户调用。
进一步地,所述方法采用主要由准入控制器、任务分配器以及一个以上运算器组构成的工作流执行服务模块进行所述路由计算,
其中,每一个所述运算器组包括一个以上运算器,启动所述运算器组以使所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
其中,所述准入控制器用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的任务进行准入控制;
所述任务分配器采用扩展的动态关键路径EDCP算法将准入控制器准入的任务分配给所述运算器。
所述工作流执行服务模块还包括一个以上与所述运算器分别对应的比例-积分-微分PID控制器和任务调度器,所述方法还包括:
所述PID控制器采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果;
所述任务调度器根据所述PID控制器运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度。
实施本发明的一种工作流管理方法及其系统具有以下有益效果:
1、在本发明中,在运算器组启动的时候预先将内存中生产流程定义对象树,该运算器组下辖的运算器的路由计算全通过访问缓存中的流程定义数据来实现。这种数据与流程控制分离的模式减少了数据库访问的频率,避免了大对象数据序列化、反序列化的时间损耗,提高了系统的性能。
2、本发明采用异步流程计算机制把当前工作项(即任务)的提交动作和下一个工作项的生成动作分开,成为两个原子操作;当用户提交一个工作项时,只返回当前该工作项数据提交成功与否的结果,而不继续实时计算生成下一个工作项,下一个工作项的生成由后台引擎异步处理,这样避免了两个操作的串行,获得更高的吞吐量,更高的效率。
采用异步流程计算机制后,当用户提交给运算器一个工作项时,将不需要经过运算器计算经历长时间的等待,而是立即返回给用户提交成功与否的结果;运算器将通过后台的引擎来处理提交,从而产生新的工作项。异步流程运算器方式是典型的流水线、工厂化模式,它通过释放系统等待资源,获取了高吞吐量、高效率。
3、在本发明中,运算器被分成不同的运算器组,每个运算器组包含两个或以上的运算器。运算器组间负载均衡,组内多点备份,并通过任务分配器来完成流程在不同运算器组中的分配和调度,从而实现系统的高效、稳定和可扩展性。
4、本发明在流程定义中引入了实时性约束属性,由流程设计人员在定义流程时根据实际业务需求对业务流程的各个环节设定相应的实时性约束值(即该环节的最长完成时间)。此外,为了能够在流程执行过程中按需动态改变各个工作项的执行顺序,本发明为流程定义中的每个环节都引入了相应的优先级属性,由运算器在计算过程中根据需要动态修改各个工作项的优先级属性。最后,本发明通过自适应任务调度方法来根据各个工作项的优先级属性和实时性约束属性来确定当前系统中各个工作项的执行顺序,从而达到按需改变工作项执行顺序的目的。以满足在银行后台业务处理过程中业务流程的实时性和大量并发的特性。
附图说明
图1是根据本发明实施方式的一种工作流管理系统的结构框图;
图2是根据本发明实施方式的工作流执行服务模块的实施例1的结构框图;
图3是根据本发明实施方式的工作流执行服务模块的实施例2的结构框图;
图4是根据本发明实施方式的运算器的结构示意图;
图5是根据本发明实施方式的自适应调度方法的结构框图;
图6是根据本发明实施方式的一种工作流管理系统的另一结构框图;
图7是根据本发明实施方式的一种工作流管理方法的流程示意图;
图8是根据本发明实施方式的一种工作流管理方法中启动运算器组的流程示意图;
图9是根据本发明实施方式的一种工作流管理方法中产生下一个任务的流程示意图;
图10是根据本发明实施方式的一种工作流管理方法中准入控制的流程示意图;
图11是根据本发明实施方式的一种工作流管理方法中任务分配的流程示意图;
图12是根据本发明实施方式的一种工作流管理方法中PID控制的流程示意图;
图13是根据本发明实施方式的一种工作流管理方法中任务调度的流程示意图;
图14是根据本发明实施方式的一种队列管理示意图。
具体实施方式
为使本发明的实施例的目的、技术方案和优点更加清楚,下面将进一步结合附图对本发明作详细描述。
参见图1,示出了根据本发明实施方式的一种工作流管理系统的总体结构。由图可知,在本发明实施方式中,所述工作流管理系统包括流程定义模块100、工作流执行服务模块200、任务队列管理模块300、流程数据库400,其中:
流程定义模块100,用于:设置业务流程中各个任务的实时性约束属性,以及将业务流程转化为流程图并以关系型数据结构保存在所述流程数据库400中的流程定义表;
其中,所述流程定义表包括:活动定义表(如表1所示),将所述流程图中的节点作为活动,分别存储在数据库中;迁移定义表(如表2所示),将所述流程图中的节点之间的关联关系作为迁移,存储在数据库中。
工作流执行服务模块200,用于:将用户提交的任务保存到所述流程数据库中的工作任务表并向用户返回提交成功与否的信息;查询所述流程数据库中的工作任务表,获取待计算任务,根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
任务队列管理模块300,用于:根据所述产生的任务的活动定义、机构信息和角色信息在内存中构建一个以上链式结构的任务队列供用户调用。
表1活动定义表
字段名称 | 字段含义 |
ID | 编号 |
CODE | 编码 |
DESCRIPTION | 详细描述 |
ACT_TYPE | 类型 |
STATUS | 状态 |
PARENTID | 父节点 |
。。。。。。。 | 。。。。。。。 |
表2迁移定义表
字段名称 | 字段含义 |
ID | 编号 |
TRAN_TYPE | 迁移类型 |
FROM_ID | 前活动定义版本 |
TO_ID | 后活动定义版本 |
CONDITION_EXPRESSION | 迁移条件表达式 |
在本发明实施方式中,采用异步流程计算机制后,当用户提交给运算器一个工作项(即任务)时,将不需要经过运算器计算经历长时间的等待,而是立即返回给用户提交成功与否的结果;运算器将通过后台的引擎来处理提交,从而产生新的工作项(即下一个任务)。异步流程运算方式是典型的流水线、工厂化模式,它通过释放系统等待资源,获取了高吞吐量、高效率。
在本发明实施方式中,为了提高客户端获取任务的效率,根据不同的任务类型建立多个基于物理存储之上的任务队列。
1、队列组织
如图14所示,队列组织逻辑上采取三层结构的形式:任务队列引擎组包含并管理若干任务队列引擎,任务队列引擎通过索引管理若干个任务队列。
2、队列更新
每个任务队列引擎有一个轮询线程,判断当前队列的休眠时间是否大于最小休眠时间,如果这个时间大于上次设定的最小休眠时间,则需要更新队列。否则,队列继续休眠,并重新设定最小休眠时间。其中,队列更新过程具体如下:
获取当前任务队列引擎角色;
根据角色对应的活动定义列表,查询对应的数据库工作项表中查询状态为就绪的任务,并返回工作项列表;
获取系统当前时间与任务自身的时间属性进行计算,综合考虑任务类型等其它因素,按照初始优先级、截止时间与当前时间差值和工作项创建时间三个层次对工作项排序,返回有序的工作项列表。
按照任务用户标识(UserID)和二元组(定义ID、机构信息)两个维度,将有序的任务分别逐一分配到每个任务队列,完成队列的更新。
在一种实施方式中,所述工作流执行服务模块包括准入控制器201、任务分配器202以及一个以上运算器组203,如图2所示,每一个运算器组203包括一个以上运算器,启动所述运算器组以使所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
其中,准入控制器201用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的任务进行准入控制;
任务分配器202采用扩展的动态关键路径(EDCP)算法将准入控制器201准入的任务分配给所述运算器。
根据本发明实施方式,通过任务分配器202来实现每个运算器的计算任务的分配。系统采用运算器组,设置灵活,既可以支持“不同的组处理不同的业务”,相同组内的每个运算器之间实现负载均衡,也可以支持“不同的业务可以分配到相同的运算器组中”,这样系统中所有处于工作状态的运算器之间达到负载均衡。
同时,本发明的系统至少包含两个运算器组,组间通过共享流程数据库,解决单点失效问题。组间竞争通过令牌机制和超时(Timeout)机制来实现。如图4所示,每个运算器包括:
状态机,存储了流程实例的状态信息。
实例池,对流程的实例保存在内存中,实现流程实例的二级缓存(Cache),减少对数据库的输入输出(IO)操作。
根据本发明实施方式,一个运算器组(进程)包含一个流程定义对象树,其中所有的运算器(线程)共用此对象树。每个物理服务器可以部署多个运算器组;每个运算器组可以通过配置表来设置该运算器组的工作信息,如:数据库配置、应用路径配置、触发器配置、定时器配置、运算器服务地址等;
多台物理服务器上的运算器组之间通过令牌机制和Timeout机制实现实时监控和互备;当一个运算器组宕机时,备用运算器组通过监控运算器组表(core_wf_engine_group)发现宕机情况并获取服务令牌,启动互备的运算器提供计算服务,从而实现系统的高效、稳定和可扩展性。
运算器计算
在本发明实施方式中,启动所述运算器组包括:
将每个所述运算器组的进程的启动作为所述工作流管理系统运行的服务器的启动项;
根据所述流程定义表构造该运算器组的流程定义缓存;
启动所述运算器组进程后,查询core_wf_engine_group表中可绑定服务器字段(ip_binded)中是否存在包含所述服务器自身IP和端口号且已绑定服务器字段(valid_ip)为空的第一记录;
如果不存在所述第一记录,则查询core_wf_engine_group表中ip_binded字段中是否存在包含服务器自身IP和端口号,且心跳时间字段(heart_beat)数据与所述服务器的时间差大于配置时间间隔(t1)的第二记录;
如果不存在第二记录,则休眠预定时间(t2),然后返回查询所述第一记录或第二记录;
如果存在上述第一记录或第二记录,则利用所述服务器自身ip及所述服务器的时间更新对应记录的valid_ip、heart_beart字段,然后根据运算器组起始地址字段(index)字段和该运算器组下辖运算器个数字段(num)来启动运算器线程,并将运算器地址分配给各个线程。
进一步地,获得服务令牌的运算器组进程每隔时间(t3),更新heart_beat字段。
需要说明的是,本领域的技术人员可以根据实际需要设置t1、t2和t3为任意数值。
其中,所述运算器根据所述流程定义表中的数据进行路由计算产生下一个任务包括:
通过所述运算器接口批量获取任务,返回工作项列表;
轮询返回的工作项列表,对工作项列表中每个任务进行如下操作:
根据当前任务获取其所对应的流程定义缓存中的节点,
结合所述当前任务的流程控制数据(如:任务状态信息、路由上下文数据等),判断所述节点是否可进行路由计算,如果是,则继续后续操作,否则跳过该节点,
所述节点对应的动作类型为结束动作时,获取该节点的父节点,并执行父节点的路由计算,产生后续任务,否则执行该节点的路由计算,产生后续任务。
在本发明实施方式中,上述流程定义缓存包括:
流程定义节点树(rootMap),用于记录本系统所涉及的流程在内存中的入口地址;
流程定义子树(childrenMap),用于记录各个流程内部的活动之间的关联关系。
其中,根据所述流程定义表构造流程定义缓存包括:
创建rootMap;
从所述活动定义表中查询父节点为空的活动,返回活动列表(artdef_list);
轮询artdef_list,为每一个活动(artdef)进行如下操作:
创建childrenMap,
根据artdef在所述迁移定义表中查询该artdef对应的入向路由列表(intrans)和出向路由列表(outtrans),其中,所述intrans包括由入向节点(fromid)、表达式构成的二元组,所述outtrans包括由出向节点(outid)、表达式构成的二元组,
将由artdef、intrans和outtrans构建的三元组作为一个节点加入到childrenMap,
对childrenMap中的节点递归执行:遍历所述节点的入向路由列表,为每一个outid生成所述三元组,判断该三元组作为节点是否已经在childrenMap中,如果没有则将该节点加入到childrenMap中,
childrenMap创建完成后,将由artdef和childrenMap地址构成的二元组加入到所述rootMap中。
其中,路由计算过程如下:
根据当前节点ID在流程定义缓存中查询定义信息,返回其对应的三元组(artdef、intrans、outtrans),
轮询出向路由列表outtrans,为每一个出向节点(outid,表达式)进行如下操作:
将当前节点对应的工作项中的流程控制数据(如:路由上下文数据)带入表达式中,
计算结果为true,则为outid节点生成对应的工作项并将该工作项的状态设为待获取,
计算结果为false,则跳过。
由上述可知,在运算器组启动的时候预先将内存中生产流程定义对象树,该运算器组下辖的运算器的路由计算全通过访问缓存中的流程定义数据来实现。这种数据与流程控制分离的模式减少了数据库访问的频率,避免了大对象数据序列化、反序列化的时间损耗,提高了系统的性能。
准入控制器
在本发明实施方式中,准入控制器201用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的工作项进行准入控制包括:
设定所述工作流管理系统的截止期错过率(Deadline Miss Ratio,DMR)的期望值X0;
在第二个采样周期后,记录所述系统当前可以接受的任务到达速度λ2;
记录第k个采样周期内运算器组i的DMR采样值Xki,根据下式计算任务到达速度λ的增量Δλki:
Kp、Ti和Td分别为PID控制器的比例常数、积分时间和微分时间,T为采样周期,其中λ,λk、T、Kp、Ti和Td为正实数,k、i均为自然数,其余参数均为实数;
计算λ的平均增量
计算所述系统当前可以接受的任务到达速度λk=λk-1+Δλk;
根据λk计算所述系统当前可用的任务缓冲区大小ck=λk·T;
通过动态调节所述可用任务缓冲区的大小控制在一个采样周期内进入系统的任务的速度,从而对进入系统的任务进行准入控制。
任务分配器
在本发明实施方式中,任务分配器202采用EDCP算法将准入控制器201准入的任务分配给所述运算器包括:
按照下式计算各个任务的绝对执行时间(AET):
按照下式计算各个任务的绝对数据传输时间(ADTT):
其中,TAE(τ)表示任务τ的绝对执行时间,TADT(τ)表示任务τ的绝对数据传输时间,PC(Rk)为运算器k的处理能力,BW(Rk)为运算器k的传输带宽,TS(τ)为任务τ所需的计算量,TOS(τ)为任务τ的输出数据量,其中k、τ为自然数;
按照下式计算各个运算器上任务的最早开始时间(AEST):
计算出所有节点的最早开始时间TAES(τ,R)之后,按照下式计算整个业务流程的动态关键路径长度(DCPL):
其中,LDCP为整个业务流程的动态关键路径长度,n是业务流程对应的任务图(Task Graph,TG)中所有节点的总数,n为正整数;
计算出整个业务流程的动态关键路径长度之后,按照下式从流程结束节点开始逆向计算各个任务的绝对最晚开始时间(ALST):
其中,TALS(τ,R)表示第R个运算器上任务τ的绝对最晚开始时间,任务τ有c个子任务,τk是第k个子任务,其中R、c、τ为自然数;
如果任务的AEST和ALST相等,则该任务位于流程的关键路径上;
按照关键路径上AEST从小到大的顺序来选择任务,选择的任务确定为关键任务;
在确定了关键任务之后,选择能为该任务提供最小的执行时间AET的运算器来执行该任务。
在另一种实施方式中,所述工作流执行服务模块还包括一个以上与所述运算器分别对应的比例-积分-微分(PID)控制器205和任务调度器204,其中:
PID控制器205采样该PID控制器对应的运算器的性能参数,例如DMR、CPU利用率和网络利用率,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果;
任务调度器204根据PID控制器205运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度。
PID控制器
在该实施方式中,PID控制器205采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果包括:
设定待调度任务的DMR期望值X0;
在第一个采样周期内,记录各个任务DMR的采样值X1,计算该采样周期内X1与X0的差值e1,同时记录各个任务的当前优先级的当前值ui0;
在第二个采样周期内,记录各个任务DMR的采样值X2,计算该采样周期内X2与X0的差值e2;
在第三个采样周期内,记录各个任务DMR的采样值X3,计算该采样周期内X3与X0的差值e3;
根据下式计算各个任务的当前优先级的增量Δu3:
其中,Kp、Ti和Td分别为PID控制器的比例常数、积分时间和微分时间,T为采样周期,其中T、Kp、Ti和Td为正实数;
从第三个采样周期开始,假设在第k个采样周期内,记录各个任务DMR的采样值Xk,计算该采样周期内Xk与X0的差值ek(ek=Xk-X0),其中k均为自然数;
根据下式计算各个任务的当前优先级的增量Δuk:
从而得到在该采样周期内各个任务的初始优先级:
u′i(k+1)=uik+Δuk
其中,uik表示在第k个采样周期内,任务i的优先级;u′i(k+1)则表示在第k+1个采样周期内,任务i的初始优先级,其中k、i均为自然数。
任务调度器
在该实施方式中,任务调度器204根据PID控制器205运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度包括:
记录该运算器中当前所有未完成的任务的实时性约束属性,其中实时性约束属性为截止时间;
按照所述截止时间从前到后的顺序对任务赋优先级增量,截止时间越早,则任务被赋予的优先级增量越高;
如果存在截止时间相等的任务,则根据任务的获取时间早晚来确定优先级增量,获取时间越早的任务,其优先级增量越高;
对所述计算得出的各个任务的初始优先级和所述赋予的优先级增量进行累加,获得各个任务的当前优先级;
该运算器选择当前优先级最高的任务进行运算。
由上述可知,本发明在流程定义中引入了实时性约束属性,由流程设计人员在定义流程时根据实际业务需求对业务流程的各个环节设定相应的实时性约束值(即该环节的最长完成时间)。
此外,为了能够在流程执行过程中按需动态改变各个工作项的执行顺序,本发明为流程定义中的每个环节都引入了相应的优先级属性,由运算器在计算过程中根据需要动态修改各个工作项的优先级属性。
最后,本发明通过自适应任务调度方法(ASM)(即:如图5所示,上述的准入控制、任务分配、PID控制和任务调度构成的任务调度方法)来根据各个工作项的优先级属性和实时性约束属性来确定当前系统中各个工作项的执行顺序,从而达到按需改变工作项执行顺序的目的。以满足在银行后台业务处理过程中业务流程的实时性和大量并发的特性。
在本发明的其他实施方式中,提供了一种工作流管理系统,如图6所示,除了具有与上述相同的结构外,还包括任务抓取器模块、任务接收器模块、客户端模块、流程监控工具和考核管理(KPI)子模块。
其中,任务抓取器模块、任务接收器模块、客户端模块,作为流程运算器的对外接口,主要向第三方应用提供任务获取、提交接口,以及任务管理、流程实例管理的接口。此三个模块共同构成了WFMC模型中客户端应用模块。
流程监控工具模块主要通过对流程实行可视化界面的实时监控和管理,可以及时掌握业务处理的最新动态,及时发现长时间滞留未处理的任务;对发生异常的流程进行及时调整。KPI子模块的功能包括对机构信息采集,对操作员信息采集以及采集信息分析发布。
当然,本发明的工作流管理系统也不局限于上述实施方式,本领域的技术人员可以根据本发明权利要求书和上述实施方式的教导,对上述实施方式做各种变化,或根据实际需要在上述实施方式的基础上增加本领域公知的其他功能模块,这些变化和增加均在本发明的权利要求书涵盖的范围之内。
以上对本发明提供的一种工作流管理系统作了详细描述,下面结合附图具体阐述本发明的一种工作流管理方法的技术方案。
如图7所示,所述工作流管理方法包括:
S10,设置业务流程中各个任务的实时性约束属性,以及将业务流程转化为流程图并以关系型数据结构保存在所述流程数据库中的流程定义表,其中,所述流程定义表包括:活动定义表(如表1所示)和迁移定义表(如表2所示);
S20,将用户提交的任务保存到所述流程数据库中的工作任务表并向用户返回提交成功与否的信息;查询所述流程数据库中的工作任务表,获取待计算任务,根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
S30,根据所述产生的任务的活动定义、机构信息和角色信息在内存中构建一个以上链式结构的任务队列供用户调用。
在本发明实施例中,采用自适应任务调度方法(ASM)对用户交的任务进行调度和计算,所述自适应调度方法如图5所示,图5以其中一组运算器自适应任务调度为例,所述自适应调度方法采用准入控制器、任务分配器、PID控制器和任务调度器对到达的任务进行调度。
其中,每一个所述运算器组包括一个以上运算器,启动所述运算器组以使所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
其中,所述准入控制器用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的任务进行准入控制;
所述任务分配器采用EDCP算法将准入控制器准入的任务分配给所述运算器。
其中,所述PID控制器采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果;
所述任务调度器根据所述PID控制器运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度。
如图8所示,启动所述运算器组包括:
S81,将每个所述运算器组的进程的启动作为所述工作流管理系统运行的服务器的启动项;
S82,根据所述流程定义表构造该运算器组的流程定义缓存,其中,所述流程定义缓存包括:
流程定义节点树(rootMap),用于记录本系统所涉及的流程在内存中的入口地址;
流程定义子树(childrenMap),用于记录各个流程内部的活动之间的关联关系。
S83,启动所述运算器组进程后,查询core_wf_engine_group表中可绑定服务器字段ip_binded中是否存在包含所述服务器自身IP和端口号且已绑定服务器字段valid_ip为空的第一记录,如果不存在,则执行S94,否则执行S95;
S84,查询core_wf_engine_group表中ip_binded字段中是否存在包含所述服务器自身IP和端口号,且心跳时间字段heart_beat数据与所述服务器的时间差大于配置时间间隔(t1)的第二记录,如果存在,则执行S85,如果不存在,则休眠预定时间(t2),然后返回执行S84,继续查询;
S85,利用所述服务器自身ip及所述服务器的时间更新对应记录的valid_ip、heart_beart字段;
S86,根据运算器组起始地址字段index字段和该运算器组下辖运算器个数字段num来启动运算器线程,并将运算器地址分配给各个线程。
需要说明的是,在本发明其他实施方式中,步骤S84中,如果查询不存在第二记录,则休眠预定时间(t2),然后可以返回执行S85,继续查询第一记录。
其中,S82具体可以包括:
创建rootMap;
从所述活动定义表中查询父节点为空的活动,返回活动列表artdef_list;
轮询artdef_list,为每一个活动artdef进行如下操作:
创建childrenMap,
根据artdef在所述迁移定义表中查询该artdef对应的入向路由列表intrans和出向路由列表outtrans,其中,所述intrans包括由入向节点fromid、表达式构成的二元组,所述outtrans包括由出向节点outid、表达式构成的二元组,
将由artdef、intrans和outtrans构建的三元组作为一个节点加入到childrenMap,
对childrenMap中的节点递归执行:遍历所述节点的入向路由列表,为每一个outid生成所述三元组,判断该三元组作为节点是否已经在childrenMap中,如果没有则将该节点加入到childrenMap中,
childrenMap创建完成后,将由artdef和childrenMap地址构成的二元组加入到所述rootMap中。
其中,如图9所示,所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务包括:
S901,通过所述运算器接口批量获取任务,返回工作项列表;
S902,轮询返回的工作项列表,获取其中一个任务,称为当前任务
S903,根据当前任务获取其所对应的流程定义缓存中的节点,
S904,结合所述当前任务的流程控制数据,判断所述节点是否可进行路由计算,如果是,则执行S907,否则执行S905,
S905-906,跳过该节点,获取下一节点,返回执行S904,
S907,所述节点对应的动作类型是否为结束动作,如果是,执行S908,否则执行S909,
S808,获取该节点的父节点,并执行父节点的路由计算,产生后续任务,然后执行S910,
S909,执行该节点的路由计算,产生后续任务,然后执行S910,
S910,轮询返回的工作项列表,获取下一任务,返回执行S903,直至轮询完整个工作项列表。
准入控制
如图10所示,所述准入控制器用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的工作项进行准入控制包括:
S101,设定所述工作流管理系统的截止期错过率DMR的期望值X0;
S102,在第二个采样周期后,记录所述系统当前可以接受的任务到达速度λ2;
S103,记录第k个采样周期内运算器组i的DMR采样值Xki,根据下式计算任务到达速度λ的增量Δλki:
Kp、Ti和Td分别为PID控制器的比例常数、积分时间和微分时间,T为采样周期;
S104,计算λ的平均增量
S105,计算所述系统当前可以接受的任务到达速度λk=λk-1+Δλk;
S106,根据λk计算所述系统当前可用的任务缓冲区大小ck=λk·T;
S107,通过动态调节所述可用任务缓冲区的大小控制在一个采样周期内进入系统的任务的速度。
EDCP任务分配
如图11所示,所述任务分配器采用扩展的动态关键路径EDCP算法将准入控制器准入的任务分配给所述运算器包括:
S111,按照下式计算各个任务的绝对执行时间(AET):
S112,按照下式计算各个任务的绝对数据传输时间(ADTT):
其中,TAE(τ)表示任务τ的AET,TADT(τ)表示任务τ的ADTT,PC(Rk)为运算器k的处理能力,BW(Rk)为运算器k的传输带宽,TS(τ)为任务τ所需的计算量,TOS(τ)为任务τ的输出数据量;
S113,按照下式计算各个运算器上任务的最早开始时间(AEST):
S114,计算出所有节点的最早开始时间TAES(τ,R)之后,按照下式计算整个业务流程的动态关键路径长度(DCPL):
其中,LDCP为整个业务流程的动态关键路径长度,n是业务流程对应的TG中所有节点的总数;
S115,计算出整个业务流程的动态关键路径长度之后,按照下式从流程结束节点开始逆向计算各个任务的绝对最晚开始时间(ALST):
其中,TALS(τ,R)表示第R个运算器上任务τ的绝对最晚开始时间,任务τ有c个子任务,τk是第k个子任务;
S116,如果任务的AEST和ALST相等,则该任务位于流程的关键路径上;
S117,按照关键路径上AEST从小到大的顺序来选择任务,选择的任务确定为关键任务;
S118,在确定了关键任务之后,选择能为该任务提供最小的执行时间AET的运算器来执行该任务。
PID控制
如图12所示,所述PID控制器采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果包括:
S121,设定待调度任务的DMR期望值X0;
S122,在第一个采样周期内,记录各个任务DMR的采样值X1,计算该采样周期内X1与X0的差值e1,同时记录各个任务的当前优先级的当前值ui0;
S123,在第二个采样周期内,记录各个任务DMR的采样值X2,计算该采样周期内X2与X0的差值e2;
S124,在第三个采样周期内,记录各个任务DMR的采样值X3,计算该采样周期内X3与X0的差值e3;
S125,根据下式计算各个任务的当前优先级的增量Δu3:
其中,Kp、Ti和Td分别为PID控制器的比例常数、积分时间和微分时间,T为采样周期;
S126,从第三个采样周期开始,假设在第k个采样周期内,记录各个任务DMR的采样值Xk,计算该采样周期内Xk与X0的差值ek(ek=Xk-X0);
S127,根据下式计算各个任务的当前优先级的增量Δuk:
S128,从而得到在该采样周期内各个任务的初始优先级:
u′i(k+1)=uik+Δuk
其中,uik表示在第k个采样周期内,任务i的优先级;u′i(k+1)则表示在第k+1个采样周期内,任务i的初始优先级。
任务调度
如图13所示,所述任务调度器根据所述PID控制器运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度包括:
S131,记录该运算器中当前所有未完成的任务的实时性约束属性,其中实时性约束属性为截止时间;
S132,按照所述截止时间从前到后的顺序对任务赋优先级增量,截止时间越早,则任务被赋予的优先级增量越高;
S133,如果存在截止时间相等的任务,则根据任务的获取时间早晚来确定优先级增量,获取时间越早的任务,其优先级增量越高;
S134,对所述计算得出的各个任务的初始优先级和所述赋予的优先级增量进行累加,获得各个任务的当前优先级;
S135,该运算器选择当前优先级最高的任务进行运算。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所公开的仅为本发明的具体实施方式,仅用于对本发明进行举例说明,不能以此限定本发明之保护范围,本领域技术人员在不脱离本发明实质的前提下可以进行各种修改、变化或替换,因此,依照本发明所作的各种等同变化,仍属于本发明所涵盖的范围。
Claims (24)
1.一种工作流管理系统,其特征在于,包括流程定义模块、流程数据库、工作流执行服务模块、任务队列管理模块,其中:
流程定义模块,用于:设置业务流程中各个任务的实时性约束属性,以及将业务流程转化为流程图并以关系型数据结构保存在所述流程数据库中的流程定义表;
工作流执行服务模块,用于:将用户提交的任务保存到所述流程数据库中的工作任务表并向用户返回提交成功与否的信息;查询所述流程数据库中的工作任务表,获取待计算任务,根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
任务队列管理模块,用于:根据所述产生的任务的活动定义、机构信息和角色信息在内存中构建一个以上链式结构的任务队列供用户调用。
2.根据权利要求1所述的工作流管理系统,其特征在于,所述工作流执行服务模块包括准入控制器、任务分配器以及一个以上运算器组,
其中,每一个所述运算器组包括一个以上运算器,启动所述运算器组以使所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
其中,所述准入控制器用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的任务进行准入控制;
所述任务分配器采用扩展的动态关键路径EDCP算法将准入控制器准入的任务分配给所述运算器。
3.根据权利要求2所述的工作流管理系统,其特征在于,所述工作流执行服务模块还包括一个以上与所述运算器分别对应的比例-积分-微分PID控制器和任务调度器,其中:
所述PID控制器采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果;
所述任务调度器根据所述PID控制器运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度。
4.根据权利要求2所述的工作流管理系统,其特征在于,所述流程定义表包括:
活动定义表,将所述流程图中的节点作为活动,分别存储在数据库中;
迁移定义表,将所述流程图中的节点之间的关联关系作为迁移,存储在数据库中。
5.根据权利要求4所述的工作流管理系统,其特征在于,启动所述运算器组包括:
将每个所述运算器组的进程的启动作为所述工作流管理系统运行的服务器的启动项;
根据所述流程定义表构造该运算器组的流程定义缓存;
启动所述运算器组进程后,查询运算器组core_wf_engine_group表中可绑定服务器字段ip_binded中是否存在包含所述服务器自身IP和端口号且已绑定服务器字段valid_ip为空的第一记录;
如果不存在所述第一记录,则查询core_wf_engine_group表中ip_binded字段中是否存在包含服务器自身IP和端口号,且心跳时间字段heart_beat数据与所述服务器的时间差大于配置时间间隔的第二记录;
如果不存在第二记录,则休眠预定时间,然后返回查询所述第一记录或第二记录;
如果存在上述第一记录或第二记录,则利用所述服务器自身ip及所述服务器的时间更新对应记录的valid_ip、heart_beart字段,然后根据运算器组起始地址字段index字段和该运算器组下辖运算器个数字段num来启动运算器线程,并将运算器地址分配给各个线程。
6.根据权利要求5所述的工作流管理系统,其特征在于,所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务包括:
通过所述运算器接口批量获取任务,返回工作项列表;
轮询返回的工作项列表,对工作项列表中每个任务进行如下操作:
根据当前任务获取其所对应的流程定义缓存中的节点,
结合所述当前任务的流程控制数据,判断所述节点是否可进行路由计算,如果是,则继续后续操作,否则跳过该节点,
所述节点对应的动作类型为结束动作时,获取该节点的父节点,并执行父节点的路由计算,产生后续任务,否则执行该节点的路由计算,产生后续任务。
7.根据权利要求5所述的工作流管理系统,其特征在于,所述流程定义缓存包括:
流程定义节点树rootMap,用于记录本系统所涉及的流程在内存中的入口地址;
流程定义子树childrenMap,用于记录各个流程内部的活动之间的关联关系。
8.根据权利要求7所述的工作流管理系统,其特征在于,根据所述流程定义表构造流程定义缓存包括:
创建rootMap;
从所述活动定义表中查询父节点为空的活动,返回活动列表artdef_list;
轮询artdef_list,为每一个活动artdef进行如下操作:
创建childrenMap,
根据artdef在所述迁移定义表中查询该artdef对应的入向路由列表intrans和出向路由列表outtrans,其中,所述intrans包括由入向节点fromid、表达式构成的二元组,所述outtrans包括由出向节点outid、表达式构成的二元组,
将由artdef、intrans和outtrans构建的三元组作为一个节点加入到childrenMap,
对childrenMap中的节点递归执行:遍历所述节点的入向路由列表,为每一个outid生成所述三元组,判断该三元组作为节点是否已经在childrenMap中,如果没有则将该节点加入到childrenMap中,
childrenMap创建完成后,将由artdef和childrenMap地址构成的二元组加入到所述rootMap中。
9.根据权利要求2所述的工作流管理系统,其特征在于,所述准入控制器用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的工作项进行准入控制包括:
设定所述工作流管理系统的截止期错过率DMR的期望值X0;
在第二个采样周期后,记录所述系统当前可以接受的任务到达速度λ2;
记录第k个采样周期内运算器组i的DMR采样值Xki,根据下式计算任务到达速度λ的增量Δλki:
Kp、Ti和Td分别为PID控制器的比例常数、积分时间和微分时间,T为采样周期,其中λ,λk、T、Kp、Ti和Td为正实数,k、i均为自然数;
计算λ的平均增量
计算所述系统当前可以接受的任务到达速度λk=λk-1+Δλk;
根据λk计算所述系统当前可用的任务缓冲区大小ck=λk·T;
通过动态调节所述可用任务缓冲区的大小控制在一个采样周期内进入系统的任务的速度。
10.根据权利要求2所述的工作流管理系统,其特征在于,所述任务分配器采用扩展的动态关键路径EDCP算法将准入控制器准入的任务分配给所述运算器包括:
按照下式计算各个任务的绝对执行时间AET:
按照下式计算各个任务的绝对数据传输时间ADTT:
其中,TAE(τ)表示任务τ的绝对执行时间,TADT(τ)表示任务τ的绝对数据传输时间,PC(Rk)为运算器k的处理能力,BW(Rk)为运算器k的传输带宽,TS(τ)为任务τ所需的计算量,TOS(τ)为任务τ的输出数据量,其中k、τ为自然数;
按照下式计算各个运算器上任务的最早开始时间AEST:
计算出所有节点的最早开始时间TAES(τ,R)之后,按照下式计算整个业务流程的动态关键路径长度DCPL:
其中,LDCP为整个业务流程的动态关键路径长度,n是业务流程对应的任务图TG中所有节点的总数,n为正整数;
计算出整个业务流程的动态关键路径长度之后,按照下式从流程结束节点开始逆向计算各个任务的绝对最晚开始时间ALST:
其中,TALS(τ,R)表示第R个运算器上任务τ的绝对最晚开始时间,任务τ有c个子任务,τk是第k个子任务,其中R、c、τ为自然数;
如果任务的AEST和ALST相等,则该任务位于流程的关键路径上;
按照关键路径上AEST从小到大的顺序来选择任务,选择的任务确定为关键任务;
在确定了关键任务之后,选择能为该任务提供最小的执行时间AET的运算器来执行该任务。
11.根据权利要求3所述的工作流管理系统,其特征在于,所述PID控制器采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果包括:
设定待调度任务的DMR期望值X0;
在第一个采样周期内,记录各个任务DMR的采样值X1,计算该采样周期内X1与X0的差值e1,同时记录各个任务的当前优先级的当前值ui0;
在第二个采样周期内,记录各个任务DMR的采样值X2,计算该采样周期内X2与X0的差值e2;
在第三个采样周期内,记录各个任务DMR的采样值X3,计算该采样周期内X3与X0的差值e3;
根据下式计算各个任务的当前优先级的增量Δu3:
其中,Kp、Ti和Td分别为PID控制器的比例常数、积分时间和微分时间,T为采样周期,其中T、Kp、Ti和Td为正实数;
从第三个采样周期开始,假设在第k个采样周期内,记录各个任务DMR的采样值Xk,计算该采样周期内Xk与X0的差值ek(ek=Xk-X0),其中k均为自然数;
根据下式计算各个任务的当前优先级的增量Δuk:
从而得到在该采样周期内各个任务的初始优先级:
u′i(k+1)=uik+Δuk
其中,uik表示在第k个采样周期内,任务i的优先级;u′i(k+1)则表示在第k+1个采样周期内,任务i的初始优先级,其中k、i均为自然数。
12.根据权利要求11所述的工作流管理系统,其特征在于,所述任务调度器根据所述PID控制器运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度包括:
记录该运算器中当前所有未完成的任务的实时性约束属性,其中实时性约束属性为截止时间;
按照所述截止时间从前到后的顺序对任务赋优先级增量,截止时间越早,则任务被赋予的优先级增量越高;
如果存在截止时间相等的任务,则根据任务的获取时间早晚来确定优先级增量,获取时间越早的任务,其优先级增量越高;
对所述计算得出的各个任务的初始优先级和所述赋予的优先级增量进行累加,获得各个任务的当前优先级;
该运算器选择当前优先级最高的任务进行运算。
13.一种工作流管理方法,其特征在于,包括:
设置业务流程中各个任务的实时性约束属性,以及将业务流程转化为流程图并以关系型数据结构保存在所述流程数据库中的流程定义表;
将用户提交的任务保存到所述流程数据库中的工作任务表并向用户返回提交成功与否的信息;查询所述流程数据库中的工作任务表,获取待计算任务,根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
根据所述产生的任务的活动定义、机构信息和角色信息在内存中构建一个以上链式结构的任务队列供用户调用。
14.根据权利要求13所述的方法,其特征在于,采用主要由准入控制器、任务分配器以及一个以上运算器组构成的工作流执行服务模块进行所述路由计算,
其中,每一个所述运算器组包括一个以上运算器,启动所述运算器组以使所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务;
其中,所述准入控制器用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的任务进行准入控制;
所述任务分配器采用扩展的动态关键路径EDCP算法将准入控制器准入的任务分配给所述运算器。
15.根据权利要求14所述的方法,其特征在于,所述工作流执行服务模块还包括一个以上与所述运算器分别对应的比例-积分-微分PID控制器和任务调度器,所述方法还包括:
所述PID控制器采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果;
所述任务调度器根据所述PID控制器运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度。
16.根据权利要求14所述的方法,其特征在于,所述流程定义表包括:
活动定义表,将所述流程图中的节点作为活动,分别存储在数据库中;
迁移定义表,将所述流程图中的节点之间的关联关系作为迁移,存储在数据库中。
17.根据权利要求16所述的方法,其特征在于,启动所述运算器组包括:
将每个所述运算器组的进程的启动作为所述工作流管理系统运行的服务器的启动项;
根据所述流程定义表构造该运算器组的流程定义缓存;
启动所述运算器组进程后,查询运算器组core_wf_engine_group表中可绑定服务器字段ip_binded中是否存在包含所述服务器自身IP和端口号且已绑定服务器字段valid_ip为空的第一记录;
如果不存在所述第一记录,则查询core_wf_engine_group表中ip_binded字段中是否存在包含所述服务器自身IP和端口号,且心跳时间字段heart_beat数据与所述服务器的时间差大于配置时间间隔的第二记录;
如果不存在第二记录,则休眠预定时间,然后返回查询所述第一记录或第二记录;
如果存在上述第一记录或第二记录,则利用所述服务器自身ip及所述服务器的时间更新对应记录的valid_ip、heart_beart字段,然后根据运算器组起始地址字段index字段和该运算器组下辖运算器个数字段num来启动运算器线程,并将运算器地址分配给各个线程。
18.根据权利要求17所述的方法,其特征在于,所述运算器根据所述流程定义表中的数据对所述待计算任务进行路由计算产生下一个任务包括:
通过所述运算器接口批量获取任务,返回工作项列表;
轮询返回的工作项列表,对工作项列表中每个任务进行如下操作:
根据当前任务获取其所对应的流程定义缓存中的节点,
结合所述当前任务的流程控制数据,判断所述节点是否可进行路由计算,如果是,则继续后续操作,否则跳过该节点,
所述节点对应的动作类型为结束动作时,获取该节点的父节点,并执行父节点的路由计算,产生后续任务,否则执行该节点的路由计算,产生后续任务。
19.根据权利要求18所述的方法,其特征在于,所述流程定义缓存包括:
流程定义节点树rootMap,用于记录本系统所涉及的流程在内存中的入口地址;
流程定义子树childrenMap,用于记录各个流程内部的活动之间的关联关系。
20.根据权利要求19所述的方法,其特征在于,根据所述流程定义表构造流程定义缓存包括:
创建rootMap;
从所述活动定义表中查询父节点为空的活动,返回活动列表artdef_list;
轮询artdef_list,为每一个活动artdef进行如下操作:
创建childrenMap,
根据artdef在所述迁移定义表中查询该artdef对应的入向路由列表intrans和出向路由列表outtrans,其中,所述intrans包括由入向节点fromid、表达式构成的二元组,所述outtrans包括由出向节点outid、表达式构成的二元组,
将由artdef、intrans和outtrans构建的三元组作为一个节点加入到childrenMap,
对childrenMap中的节点递归执行:遍历所述节点的入向路由列表,为每一个outid生成所述三元组,判断该三元组作为节点是否已经在childrenMap中,如果没有则将该节点加入到childrenMap中,
childrenMap创建完成后,将由artdef和childrenMap地址构成的二元组加入到所述rootMap中。
21.根据权利要求14所述的方法,其特征在于,所述准入控制器用于采样所述运算器的负载数据,根据所述负载数据计算各个运算器的负载性能,然后根据计算结果实时地对用户提交的工作项进行准入控制包括:
设定所述工作流管理系统的截止期错过率DMR的期望值X0;
在第二个采样周期后,记录所述系统当前可以接受的任务到达速度λ2;
记录第k个采样周期内运算器组i的DMR采样值Xki,根据下式计算任务到达速度λ的增量Δλki:
Kp、Ti和Td分别为PID控制器的比例常数、积分时间和微分时间,T为采样周期,其中λ,λk、T、Kp、Ti和Td为正实数,k、i均为自然数;
计算λ的平均增量
计算所述系统当前可以接受的任务到达速度λk=λk-1+Δλk;
根据λk计算所述系统当前可用的任务缓冲区大小ck=λk·T;
通过动态调节所述可用任务缓冲区的大小控制在一个采样周期内进入系统的任务的速度。
22.根据权利要求14所述的方法,其特征在于,所述任务分配器采用扩展的动态关键路径EDCP算法将准入控制器准入的任务分配给所述运算器包括:
按照下式计算各个任务的绝对执行时间AET:
按照下式计算各个任务的绝对数据传输时间ADTT:
其中,TAE(τ)表示任务τ的绝对执行时间,TADT(τ)表示任务τ的绝对数据传输时间,PC(Rk)为运算器k的处理能力,BW(Rk)为运算器k的传输带宽,TS(τ)为任务τ所需的计算量,TOS(τ)为任务τ的输出数据量,其中k、τ为自然数;
按照下式计算各个运算器上任务的最早开始时间AEST:
计算出所有节点的最早开始时间TAES(τ,R)之后,按照下式计算整个业务流程的动态关键路径长度DCPL:
其中,LDCP为整个业务流程的动态关键路径长度,n是业务流程对应的任务图TG中所有节点的总数;
计算出整个业务流程的动态关键路径长度之后,按照下式从流程结束节点开始逆向计算各个任务的绝对最晚开始时间ALST:
其中,TALS(τ,R)表示第R个运算器上任务τ的绝对最晚开始时间,任务τ有c个子任务,τk是第k个子任务,其中R、c、τ为自然数;
如果任务的AEST和ALST相等,则该任务位于流程的关键路径上;
按照关键路径上AEST从小到大的顺序来选择任务,选择的任务确定为关键任务;
在确定了关键任务之后,选择能为该任务提供最小的执行时间AET的运算器来执行该任务。
23.根据权利要求15所述的方法,其特征在于,所述PID控制器采样该PID控制器对应的运算器的性能参数,并对所述运算器的性能参数进行比例、积分、微分运算得到任务池中待调度任务的初始优先级调整结果包括:
设定待调度任务的DMR期望值X0;
在第一个采样周期内,记录各个任务DMR的采样值X1,计算该采样周期内X1与X0的差值e1,同时记录各个任务的当前优先级的当前值ui0;
在第二个采样周期内,记录各个任务DMR的采样值X2,计算该采样周期内X2与X0的差值e2;
在第三个采样周期内,记录各个任务DMR的采样值X3,计算该采样周期内X3与X0的差值e3;
根据下式计算各个任务的当前优先级的增量Δu3:
其中,Kp、Ti和Td分别为PID控制器的比例常数、积分时间和微分时间,T为采样周期,其中T、Kp、Ti和Td为正实数;
从第三个采样周期开始,假设在第k个采样周期内,记录各个任务DMR的采样值Xk,计算该采样周期内Xk与X0的差值ek(ek=Xk-X0),其中k均为自然数;
根据下式计算各个任务的当前优先级的增量Δuk:
从而得到在该采样周期内各个任务的初始优先级:
u′i(k+1)=uik+Δuk
其中,uik表示在第k个采样周期内,任务i的优先级;u′i(k+1)则表示在第k+1个采样周期内,任务i的初始优先级,其中k、i均为自然数。
24.根据权利要求23所述的方法,其特征在于,所述任务调度器根据所述PID控制器运算得到的初始优先级调整结果和实时性约束属性对到达该运算器的任务进行调度包括:
记录该运算器中当前所有未完成的任务的实时性约束属性,其中实时性约束属性为截止时间;
按照所述截止时间从前到后的顺序对任务赋优先级增量,截止时间越早,则任务被赋予的优先级增量越高;
如果存在截止时间相等的任务,则根据任务的获取时间早晚来确定优先级增量,获取时间越早的任务,其优先级增量越高;
对所述计算得出的各个任务的初始优先级和所述赋予的优先级增量进行累加,获得各个任务的当前优先级;
该运算器选择当前优先级最高的任务进行运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110168489.XA CN102254246B (zh) | 2011-06-17 | 2011-06-17 | 一种工作流管理方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110168489.XA CN102254246B (zh) | 2011-06-17 | 2011-06-17 | 一种工作流管理方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102254246A true CN102254246A (zh) | 2011-11-23 |
CN102254246B CN102254246B (zh) | 2014-09-17 |
Family
ID=44981493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110168489.XA Active CN102254246B (zh) | 2011-06-17 | 2011-06-17 | 一种工作流管理方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102254246B (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629345A (zh) * | 2012-02-28 | 2012-08-08 | 深圳市汉普电子技术开发有限公司 | 链式沟通协作方法、装置及系统 |
CN103208046A (zh) * | 2012-12-31 | 2013-07-17 | 广州奥凯信息咨询有限公司 | 基于交互式动态流程图的工作流引擎架构方法和系统 |
CN103426051A (zh) * | 2012-05-23 | 2013-12-04 | 瑞穗情报综研株式会社 | 核准管理系统和核准管理方法 |
CN103838621A (zh) * | 2012-11-27 | 2014-06-04 | 中国电信股份有限公司 | 用于调度例行作业的方法和系统、调度节点 |
CN103971196A (zh) * | 2013-02-04 | 2014-08-06 | 波音公司 | 过程规划中的总排序 |
CN104036335A (zh) * | 2013-03-04 | 2014-09-10 | 富士通株式会社 | 数据处理方法和数据处理装置 |
CN104361134A (zh) * | 2014-12-10 | 2015-02-18 | 用友软件股份有限公司 | 关系层次计算装置和方法 |
CN106155769A (zh) * | 2015-03-26 | 2016-11-23 | 北大方正集团有限公司 | 一种工作流处理方法、装置及工作流引擎 |
CN106603708A (zh) * | 2016-12-30 | 2017-04-26 | 中国建设银行股份有限公司 | 一种业务处理方法及装置 |
CN106775963A (zh) * | 2016-10-28 | 2017-05-31 | 武汉开目信息技术股份有限公司 | 一种任务中工作对象约束的方法 |
CN107305658A (zh) * | 2016-04-21 | 2017-10-31 | 北京京东尚科信息技术有限公司 | 用于信息系统中管理工作流的方法及系统 |
CN107437140A (zh) * | 2017-07-14 | 2017-12-05 | 清华大学 | 一种业务流程动态的迁移方法及系统 |
CN107515864A (zh) * | 2016-06-15 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 监控工作流的方法及设备 |
CN107861765A (zh) * | 2017-06-26 | 2018-03-30 | 平安普惠企业管理有限公司 | 产品配置方法、设备和计算机可读存储介质 |
CN108134851A (zh) * | 2018-03-16 | 2018-06-08 | 浙江远算云计算有限公司 | 数据传输的服务质量控制方法及装置 |
CN108255467A (zh) * | 2016-12-27 | 2018-07-06 | 北京京东尚科信息技术有限公司 | 按照工作流顺序执行服务的方法、装置及系统 |
CN108268319A (zh) * | 2016-12-31 | 2018-07-10 | 中国移动通信集团河北有限公司 | 任务调度方法、装置及系统 |
CN108701052A (zh) * | 2016-03-15 | 2018-10-23 | 英特尔公司 | 发送事务而不跟踪的方法、设备和系统 |
CN109409824A (zh) * | 2018-09-27 | 2019-03-01 | 张家口浩扬科技有限公司 | 一种基于改变请求的工作流处理方法及其处理系统 |
CN109460418A (zh) * | 2018-10-22 | 2019-03-12 | 武汉达梦数据库有限公司 | 一种基于数据库的查询业务执行方法 |
CN109615319A (zh) * | 2018-11-30 | 2019-04-12 | 象山邱工联信息技术有限公司 | 基于云数据管理的流程构建系统 |
CN109634989A (zh) * | 2018-11-16 | 2019-04-16 | 百度在线网络技术(北京)有限公司 | 一种hive任务执行引擎选择方法和系统 |
CN109726995A (zh) * | 2019-01-03 | 2019-05-07 | 中国银行股份有限公司 | 业务功能执行方法和装置 |
CN109978486A (zh) * | 2017-12-28 | 2019-07-05 | 北京京东尚科信息技术有限公司 | 用于流程控制的方法、装置、系统及介质 |
CN110580019A (zh) * | 2019-07-24 | 2019-12-17 | 浙江双一智造科技有限公司 | 一种面向边缘计算的设备调取方法与装置 |
CN110766341A (zh) * | 2019-10-31 | 2020-02-07 | 北京东软望海科技有限公司 | 优化作业调度的控制方法、装置、计算机设备及存储介质 |
CN111414198A (zh) * | 2020-03-18 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种请求处理方法及装置 |
CN112579057A (zh) * | 2020-12-23 | 2021-03-30 | 杭州电子科技大学 | 支持组织架构变更的自适应业务流程引擎设计方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020194181A1 (en) * | 2001-03-26 | 2002-12-19 | Wachtel David C. | Method and apparatus for intelligent data assimilation |
CN1698057A (zh) * | 2003-03-01 | 2005-11-16 | 国际商业机器公司 | 用于自动启动工作流进程上的文档的系统和方法 |
CN1858783A (zh) * | 2006-06-05 | 2006-11-08 | 上海宏迅软件有限公司 | 工作流管理系统中数据驱动的方法 |
CN1926563A (zh) * | 2005-01-28 | 2007-03-07 | 三菱电机株式会社 | 工作流管理装置、工作流管理系统以及测试方案生成方法 |
CN101226612A (zh) * | 2007-12-29 | 2008-07-23 | 中国建设银行股份有限公司 | 一种面向流程的数据处理管理系统 |
CN101243465A (zh) * | 2005-08-22 | 2008-08-13 | 瑞士银行股份有限公司 | 基于工作流的数据处理用的系统、方法和计算机程序产品 |
-
2011
- 2011-06-17 CN CN201110168489.XA patent/CN102254246B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020194181A1 (en) * | 2001-03-26 | 2002-12-19 | Wachtel David C. | Method and apparatus for intelligent data assimilation |
CN1698057A (zh) * | 2003-03-01 | 2005-11-16 | 国际商业机器公司 | 用于自动启动工作流进程上的文档的系统和方法 |
CN1926563A (zh) * | 2005-01-28 | 2007-03-07 | 三菱电机株式会社 | 工作流管理装置、工作流管理系统以及测试方案生成方法 |
CN101243465A (zh) * | 2005-08-22 | 2008-08-13 | 瑞士银行股份有限公司 | 基于工作流的数据处理用的系统、方法和计算机程序产品 |
CN1858783A (zh) * | 2006-06-05 | 2006-11-08 | 上海宏迅软件有限公司 | 工作流管理系统中数据驱动的方法 |
CN101226612A (zh) * | 2007-12-29 | 2008-07-23 | 中国建设银行股份有限公司 | 一种面向流程的数据处理管理系统 |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629345B (zh) * | 2012-02-28 | 2016-06-08 | 深圳市汉普电子技术开发有限公司 | 链式沟通协作方法、装置及系统 |
CN102629345A (zh) * | 2012-02-28 | 2012-08-08 | 深圳市汉普电子技术开发有限公司 | 链式沟通协作方法、装置及系统 |
CN103426051A (zh) * | 2012-05-23 | 2013-12-04 | 瑞穗情报综研株式会社 | 核准管理系统和核准管理方法 |
CN103426051B (zh) * | 2012-05-23 | 2018-05-29 | 瑞穗情报综研株式会社 | 核准管理系统和核准管理方法 |
CN103838621A (zh) * | 2012-11-27 | 2014-06-04 | 中国电信股份有限公司 | 用于调度例行作业的方法和系统、调度节点 |
CN103838621B (zh) * | 2012-11-27 | 2017-05-10 | 中国电信股份有限公司 | 用于调度例行作业的方法和系统、调度节点 |
CN103208046B (zh) * | 2012-12-31 | 2016-12-28 | 南方电网科学研究院有限责任公司 | 基于交互式动态流程图的工作流引擎架构方法和系统 |
CN103208046A (zh) * | 2012-12-31 | 2013-07-17 | 广州奥凯信息咨询有限公司 | 基于交互式动态流程图的工作流引擎架构方法和系统 |
CN103971196A (zh) * | 2013-02-04 | 2014-08-06 | 波音公司 | 过程规划中的总排序 |
CN104036335A (zh) * | 2013-03-04 | 2014-09-10 | 富士通株式会社 | 数据处理方法和数据处理装置 |
CN104361134A (zh) * | 2014-12-10 | 2015-02-18 | 用友软件股份有限公司 | 关系层次计算装置和方法 |
CN104361134B (zh) * | 2014-12-10 | 2018-10-19 | 用友网络科技股份有限公司 | 关系层次计算装置和方法 |
CN106155769A (zh) * | 2015-03-26 | 2016-11-23 | 北大方正集团有限公司 | 一种工作流处理方法、装置及工作流引擎 |
CN106155769B (zh) * | 2015-03-26 | 2019-10-15 | 北大方正集团有限公司 | 一种工作流处理方法、装置及工作流引擎 |
CN108701052A (zh) * | 2016-03-15 | 2018-10-23 | 英特尔公司 | 发送事务而不跟踪的方法、设备和系统 |
CN107305658A (zh) * | 2016-04-21 | 2017-10-31 | 北京京东尚科信息技术有限公司 | 用于信息系统中管理工作流的方法及系统 |
CN107515864B (zh) * | 2016-06-15 | 2021-06-22 | 阿里巴巴集团控股有限公司 | 监控工作流的方法及设备 |
CN107515864A (zh) * | 2016-06-15 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 监控工作流的方法及设备 |
CN106775963A (zh) * | 2016-10-28 | 2017-05-31 | 武汉开目信息技术股份有限公司 | 一种任务中工作对象约束的方法 |
CN108255467A (zh) * | 2016-12-27 | 2018-07-06 | 北京京东尚科信息技术有限公司 | 按照工作流顺序执行服务的方法、装置及系统 |
CN106603708A (zh) * | 2016-12-30 | 2017-04-26 | 中国建设银行股份有限公司 | 一种业务处理方法及装置 |
CN106603708B (zh) * | 2016-12-30 | 2019-10-18 | 中国建设银行股份有限公司 | 一种业务处理方法及装置 |
CN108268319A (zh) * | 2016-12-31 | 2018-07-10 | 中国移动通信集团河北有限公司 | 任务调度方法、装置及系统 |
CN107861765B (zh) * | 2017-06-26 | 2020-11-17 | 平安普惠企业管理有限公司 | 产品配置方法、设备和计算机可读存储介质 |
CN107861765A (zh) * | 2017-06-26 | 2018-03-30 | 平安普惠企业管理有限公司 | 产品配置方法、设备和计算机可读存储介质 |
CN107437140A (zh) * | 2017-07-14 | 2017-12-05 | 清华大学 | 一种业务流程动态的迁移方法及系统 |
CN109978486A (zh) * | 2017-12-28 | 2019-07-05 | 北京京东尚科信息技术有限公司 | 用于流程控制的方法、装置、系统及介质 |
CN108134851A (zh) * | 2018-03-16 | 2018-06-08 | 浙江远算云计算有限公司 | 数据传输的服务质量控制方法及装置 |
CN108134851B (zh) * | 2018-03-16 | 2019-07-23 | 浙江远算云计算有限公司 | 数据传输的服务质量控制方法及装置 |
CN109409824A (zh) * | 2018-09-27 | 2019-03-01 | 张家口浩扬科技有限公司 | 一种基于改变请求的工作流处理方法及其处理系统 |
CN109460418A (zh) * | 2018-10-22 | 2019-03-12 | 武汉达梦数据库有限公司 | 一种基于数据库的查询业务执行方法 |
CN109634989A (zh) * | 2018-11-16 | 2019-04-16 | 百度在线网络技术(北京)有限公司 | 一种hive任务执行引擎选择方法和系统 |
CN109634989B (zh) * | 2018-11-16 | 2022-03-25 | 百度在线网络技术(北京)有限公司 | 一种hive任务执行引擎选择方法和系统 |
CN109615319A (zh) * | 2018-11-30 | 2019-04-12 | 象山邱工联信息技术有限公司 | 基于云数据管理的流程构建系统 |
CN109726995A (zh) * | 2019-01-03 | 2019-05-07 | 中国银行股份有限公司 | 业务功能执行方法和装置 |
CN110580019A (zh) * | 2019-07-24 | 2019-12-17 | 浙江双一智造科技有限公司 | 一种面向边缘计算的设备调取方法与装置 |
CN110766341A (zh) * | 2019-10-31 | 2020-02-07 | 北京东软望海科技有限公司 | 优化作业调度的控制方法、装置、计算机设备及存储介质 |
CN111414198A (zh) * | 2020-03-18 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种请求处理方法及装置 |
CN111414198B (zh) * | 2020-03-18 | 2023-05-02 | 北京字节跳动网络技术有限公司 | 一种请求处理方法及装置 |
CN112579057A (zh) * | 2020-12-23 | 2021-03-30 | 杭州电子科技大学 | 支持组织架构变更的自适应业务流程引擎设计方法 |
CN112579057B (zh) * | 2020-12-23 | 2022-05-13 | 杭州电子科技大学 | 支持组织架构变更的自适应业务流程引擎设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102254246B (zh) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102254246B (zh) | 一种工作流管理方法及其系统 | |
Chang et al. | Scheduling in mapreduce-like systems for fast completion time | |
CN103309738B (zh) | 用户作业调度方法及装置 | |
Huang et al. | Rlsk: a job scheduler for federated kubernetes clusters based on reinforcement learning | |
CN108268319A (zh) | 任务调度方法、装置及系统 | |
CN106371924B (zh) | 一种最小化MapReduce集群能耗的任务调度方法 | |
Han et al. | A Qos Guided task Scheduling Model in cloud computing environment | |
CN102207883A (zh) | 异构分布式实时系统的事务调度方法 | |
CN109445386A (zh) | 一种基于onba的云制造任务最短生产时间调度方法 | |
Zhao et al. | The resource allocation model for multi-process instances based on particle swarm optimization | |
CN105005503B (zh) | 基于元胞自动机的云计算负载均衡任务调度方法 | |
Li et al. | Efficient online scheduling for coflow-aware machine learning clusters | |
CN104156505B (zh) | 一种基于用户行为分析的Hadoop集群作业调度方法及装置 | |
CN106327053B (zh) | 一种基于多模式集合的纺织工艺推荐模型的构建方法 | |
Xie et al. | A two-workshop collaborative, integrated scheduling algorithm considering the prescheduling of the root-subtree processes | |
CN102760073A (zh) | 一种任务调度方法、系统及装置 | |
Zhao et al. | A parallel-batch multi-objective job scheduling algorithm in edge computing | |
Li et al. | Cost-aware scheduling for ensuring software performance and reliability under heterogeneous workloads of hybrid cloud | |
Li et al. | ACO-based multi-objective scheduling of parallel batch processing machines with advanced process control constraints | |
Zhang et al. | Randomized selection algorithm for online stochastic unrelated machines scheduling | |
CN109783189A (zh) | 一种静态工作流调度方法与装置 | |
CN101071489A (zh) | 工作流管理系统及实现工作过程自动化的方法 | |
Nomden et al. | Family-based dispatching: anticipating future jobs | |
Teng et al. | A flexible integrated scheduling algorithm for dynamic determination processing equipment considering the root-subtree vertical and horizontal pre-scheduling | |
Wan et al. | Utility-driven share scheduling algorithm in hadoop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |