一种工作流队列服务器、工作流调度系统及其方法

文档序号:7855198阅读:280来源:国知局
专利名称:一种工作流队列服务器、工作流调度系统及其方法
技术领域
本发明涉及工作流任务调度技术领域,尤其涉及一种工作流队列服务器、工作流调度系统及其方法。
背景技术
任务调度是高并发工作流系统的关键技术,直接影响到大型流程管理系统的可用性。传统的工作流任务队列只对任务队列进行一次散列,一般形成一个不同机构和不同任务类型混杂的任务列表。这种任务调度方法存在下述不足I)客户端连接到队列服务后,在请求任务时,队列服务还要在一个二维数据表里 查询任务并排序,然后再把计算结果返回给客户端,计算开销较大,响应时间比较长,客户体验不好;2)队列服务也是按照机构和任务类型两个维度从数据库查询任务,对数据库的索引开销也较大,查询复杂度也高,在大并发下访问下,数据库系统压力过大。

发明内容
本发明的目的在于提出一种工作流队列服务器、一种工作流调度系统和一种工作流调度方法,能够减轻数据库的访问压力,降低数据库索引空间占用,提高客户端的响应速度。为达此目的,本发明包括一种工作流队列服务器,用于存储一个或一个以上机构的任务,定期从数据库中装载符合所述机构条件的任务,当所述工作流队列服务器收到客户端请求时将存储的符合请求条件的任务返回给所述客户端。进一步地,所述工作流队列服务器将存储的任务按机构和任务类型散列在不同任务队列中,所述工作流队列服务器对各所述任务队列中的任务按照任务优先级从高到低排序,所述工作流队列服务器所散列的队列的个数等于该工作流队列服务器所属机构数与任务类型数的乘积。本发明还包括一种工作流调度系统,包括工作流队列服务器布告板和至少一个如上所述的工作流队列服务器,每个机构最多对应一个所述工作流队列服务器,所述工作流队列服务器布告板用于发布系统中工作流队列服务器的信息,所述信息包括工作流队列服务器的地址信息和所述工作流队列服务器对应的机构信息,使得所述系统能将作业任务按照任务所属机构散列到多个所述工作流队列服务器。进一步地,各客户端应用系统均具有所属机构,均通过所述工作流队列服务器布告板查找所属机构对应的工作流队列服务器信息,然后通过查找到的工作流队列服务器调用任务。进一步地,各所述客户端均维护一个到该客户端的所述所属机构的工作流队列服务器的连接池,用于减少连接开销。
进一步地,所述工作流队列服务器收到客户端请求后根据请求的机构和任务类型将所述机构和类型的任务队列中的最优先任务返回所述客户端。本发明还包括一种工作流调度方法,包括SI、启动各个工作流队列服务器;S2、各工作流队列服务器定期从数据库中装载对应机构的任务到本地;S3、客户端连接一个工作流队列服务器;S4、所述客户端请求调用所述工作流队列服务器中的任务;S5、所述工作流队列服务器将符合请求条件的最优先的任务返回给所述客户端。进一步地,所述各工作流队列服务器均为本发明所述的工作流队列服务器。 进一步地,所述步骤S5包括,所述工作流队列服务器收到所述客户端请求后根据请求的机构和任务类型将所述机构和所述类型的任务队列中的最优先任务返回所述客户端。进一步地,所述步骤S3具体为,客户端通过查询工作流队列服务器布告板查找所述工作流队列服务器地址,通过所述地址连接所述工作流队列服务器,其中所述工作流队列服务器布告板是存储在数据库中或每个工作流队列服务器中的数据表或文件,用于记录各个工作流队列服务器的信息,所述信息包括队列服务器的地址信息。本发明有益技术效果是把工作流中大部分任务检索的计算从数据库转移到一个或多个服务器中,减轻了数据库的访问压力,降低了数据库索引空间占用,而且提高了客户端的响应速度。


图I为本发明的实施例一的工作流调度系统结构示意图;图2为本发明的实施例一的机构业务独立情况下的工作流调度系统结构示意图;图3为本发明的实施例二的工作流调度方法流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例一本发明实施例提供了一种工作流调度系统,系统包括至少一个工作流队列服务器,每个所述工作流队列服务器对应一个或一个以上机构,存储对应的一个或一个以上机构的任务。所述机构指政府或企业的职能部门,如A跨国企业的中国办事处,B专利代理所的电学部等。如任务量比较少、任务类型比较单一的几个机构可以共用一个工作流队列服务器,也可以为每个工作流队列服务器仅对应一个机构,实现不同机构拥有各自独立的专用工作流队列服务器,各工作流队列服务器负责对应机构的所述机构的任务的存储、管理和分配,图2即为机构业务独立情况下的工作流调度系统结构示意图,后面将详述其实施方式,在此不作赘述。但是,为了防止任务的重复存储和分配,必须保证每个机构最多对应一个所述工作流队列服务器,不能出现一个机构对应两个或多个工作流队列服务器的情况。每个所述工作流队列服务器周期性地从数据库中装载符合机构条件的任务到本地,装载方式可为数据库中所有任务可包含布尔型的装载标记字段用于标识该任务是否被队列服务器装载,当有工作流队列服务器提出任务装载请求时,通过它所对应的机构对数据库中所有未装载标记的任务进行一维检索,将所有符合条件的任务下载到所述工作流队列服务器本地,同时将这些任务的装载标记修改为已装载状态,所述任务在本地的存储方式可为内存、硬盘等,也可以存储在本地数据库中。所述工作流队列服务器周期性地从数据库中装载任务的过程可为同步也可为异步,同步为所有的工作流队列服务器定期以相同间隔同时向数据库发起任务装载请求,该方法对数据库的吞吐能力要求较高,仅适用于小中型企业、任务不是太多或机构较少的大型企业;异步为各工作流队列服务器依据各自任务量多少规定一个提取任务的时间间隔,周期性地向数据库中提取该机构的新任务,或者预设好提取任务的条件,当满足该条件时自动向数据库中发起任务提取请求,例如,满足本地任务剩余100时向数据库提取任务或满足存在一种类型的任务数量小于20时向数据库提取任务。进一步地,为了在响应客户端的任务请求时更快地检索出符合请求条件的任务,提高检索速度,可让每个工作流队列服务器将存储的任务分组,按机构和任务类型分组,将本地存储的所有任务按机构和任务类型散列在不同任务列表中。每个工作流队列服务器包含若干个任务列表,各工作流队列服务器包含的任务列表个数为所述工作流队列服务器所属机构数目与任务类型数目的乘积。所述任务列表可为栈、队列、数组、类等多种类型,由于队列且有先进先出的特性,所述任务列表为队列可以保证相同优先级的任务先装载先分配,这样更具合理性,本实施例采用队列类型。更进一步地,各工作流队列服务器对所述任务列表中的任务按照任务优先级从高到底进行排序。进一步地,所述工作流调度系统还可包括工作流队列服务器布告板记录系统中工作流队列服务器的对应机构、地址等信息,用于客户端请求任务前通过所述任务的机构属性从该工作流队列服务器布告板查找所述机构对应的工作流队列服务器地址,通过远程服务调用协议调用所述工作流队列服务器进行任务请求。所述远程服务调用协议可为RMI,Hessian, Burlap, Httpinvoker, web service等,其中,RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础,但它只能用于JAVA程序之间的通讯;Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口,协议的规范公开,可以用于任意语言;Httpinvoker是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework; Web service是连接异构系统或异构语言的首选协议,它使用SOAP形式通讯,可以用于任何语言,目前的许多开发工具对其的支持也很好。几种协议的通讯效率依次为RMI>Httpinvoker>=Hessian>>Burlap>>web service。本实施例采用RMI协议,每个工作流队列服务器对应一个RMI容器,占用一个端口,每个工作流队列服务器包含客户端访问接口和数据库服务器访问接口两组线程。因为机构间的业务是天然分列的,固定性好,超大型企业不同机构分散在不同地区,业务基本独立,系统可设计为每个工作流队列服务器仅对应一个机构,实现不同机构拥有各自独立的专用工作流队列服务器。图2为本发明的实施例一的机构业务独立情况下的工作流调度系统结构示意图,各所述客户端均通过所述客户端的所述所属机构对应的工作流队列服务器调用任务。进一步地,各所述客户端均维护一个到该客户端的所述所属机构的工作流队列服务器的连接池,用于减少连接开销。当进行任务抢选分配时,即机构内部任一客户端需要通过提交任务类型申请机构内该类型的优先级最高任务时,所述机构对应的工作流队列服务器收到客户端请求后根据请求类型将所述类型的任务列表中的最优先任务返回所述客户端。实施例二图3为本发明的实施例二的工作流调度方法流程图,参见图3,本发明提供了一种工作流调度方法,包括S301、启动各个工作流队列服务器; 所述工作流队列服务器详见实施例一,在此不作赘述。S302、各工作流队列服务器定期从数据库中装载对应机构的任务到本地;所述装载方式的具体实现方式详见实施例一,在此不作赘述。S303、客户端连接一个工作流队列服务器;所述客户端通过所述连接池连接所述工作流对列服务器或者通过查询工作流队列服务器布告板查找所述工作流队列服务器地址,通过所述地址连接所述工作流队列服务器,具体方法参见实施例一,在此不作赘述。S304、所述客户端请求调用所述工作流队列服务器中的任务;具体方法参见实施例一,在此不作赘述。S305、所述工作流队列服务器将符合请求条件的任务返回给所述客户端。该步骤还包括如下情形所述工作流队列服务器收到所述客户端请求后根据所述客户端请求中的机构和任务类型将所述机构和类型的任务列表中的最优先任务返回所述
客户端。本发明提供的工作流调度系统和工作流调度方法解决了超大型企业的任务流调度中数据库的计算开销和索引开销比较大的问题,把工作流中任务检索的计算从数据库转移到一个或多个服务器中,减轻了数据库的访问压力,降低了数据库索引空间占用,而且提高了客户端的响应速度。以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如计算机中的硬盘、光盘或软盘。上述仅为本发明的较佳实施例及所运用技术原理,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围内。
权利要求
1.一种工作流队列服务器,其特征在于,用于存储一个或一个以上机构的任务,定期从数据库中装载符合所述机构条件的任务,当所述工作流队列服务器收到客户端请求时将存储的符合请求条件的任务返回给所述客户端。
2.如权利要求I所述的工作流队列服务器,其特征在于,所述工作流队列服务器将存储的任务按机构和任务类型散列在不同任务队列中,所述工作流队列服务器对各所述任务队列中的任务按照任务优先级从高到低排序。
3.一种工作流调度系统,其特征在于,包括工作流队列服务器布告板和至少一个如权利要求I或2所述的工作流队列服务器,每个机构最多对应一个所述工作流队列服务器,所述工作流队列服务器布告板用于发布系统中工作流队列服务器的信息,所述信息包括工作流队列服务器的地址信息和所述工作流队列服务器对应的机构信息,使得所述系统能将作业任务按照任务所属机构散列到多个所述工作流队列服务器。
4.如权利要求3所述的工作流调度系统,其特征在于,各客户端应用系统均具有所属机构,均通过所述工作流队列服务器布告板查找所属机构对应的工作流队列服务器信息,然后通过查找到的工作流队列服务器调用任务。
5.如权利要求4所述的工作流调度系统,其特征在于,各所述客户端均维护一个到该客户端的所述所属机构的工作流队列服务器的连接池,用于减少连接开销。
6.如权利要求5所述的工作流调度系统,其特征在于,所述工作流队列服务器收到客户端请求后根据请求的机构和任务类型将所述机构和类型的任务队列中的最优先任务返回所述客户端。
7.一种工作流调度方法,其特征在于,包括 51、启动各个工作流队列服务器; 52、各工作流队列服务器定期从数据库中装载对应机构的任务到本地; 53、客户端连接一个工作流队列服务器; 54、所述客户端请求调用所述工作流队列服务器中的任务; 55、所述工作流队列服务器将符合请求条件的最优先的任务返回给所述客户端。
8.如权利要求7所述的工作流调度方法,其特征在于,所述各工作流队列服务器均为如权利要求I或2所述的工作流队列服务器。
9.如权利要求7所述的工作流调度方法,其特征在于,所述步骤S5包括,所述工作流队列服务器收到所述客户端请求后根据请求的机构和任务类型将所述机构和所述类型的任务队列中的最优先任务返回所述客户端。
10.如权利要求7所述的工作流调度方法,其特征在于,所述步骤S3具体为,客户端通过查询工作流队列服务器布告板查找所述工作流队列服务器地址,通过所述地址连接所述工作流队列服务器,其中所述工作流队列服务器布告板是存储在数据库中或每个工作流队列服务器中的数据表或文件,用于记录各个工作流队列服务器的信息,所述信息包括队列服务器的地址信息。
全文摘要
本发明公开了一种工作流队列服务器、一种工作流调度系统和一种工作流调度方法,所述工作流队列服务器用于存储一个或一个以上机构的任务,定期从数据库中装载符合所述机构条件的任务到本地,当所述工作流队列服务器收到客户端请求时将存储的符合请求条件的任务返回给所述客户端;所述工作流调度系统包括工作流队列服务器布告板和至少一个所述的工作流队列服务器,以把作业任务按照机构的不同散列到多个工作流队列服务器,每个机构最多对应一个所述工作流队列服务器。本发明把工作流中大部分任务检索的计算从数据库转移到一个或多个服务器中,减轻了数据库的访问压力,降低了数据库索引空间占用,而且提高了客户端的响应速度。
文档编号H04L29/08GK102761617SQ20121022820
公开日2012年10月31日 申请日期2012年7月2日 优先权日2012年7月2日
发明者孙刚, 谭宜勇, 高昊江 申请人:北京京北方信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1