[发明专利]一种用于工作流引擎的多任务协同调度方法无效

专利信息
申请号: 200510042888.6 申请日: 2005-07-04
公开(公告)号: CN1728165A 公开(公告)日: 2006-02-01
发明(设计)人: 胡飞虎 申请(专利权)人: 西安交通大学;西安龙舟科技有限责任公司
主分类号: G06Q10/00 分类号: G06Q10/00;G06F9/46
代理公司: 西安通大专利代理有限责任公司 代理人: 陈翠兰
地址: 710049*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种用于工作流引擎的多任务协同调度方法,构建多任务协同方法的计算模型——多步任务协同网,这是一个四元组N=(C,T;W,D)按照充分必要条件构造,多任务调度包括启动案例、终止案例、客户机签办任务、客户机退回任务、多步任务办理、多步任务重办、启动循环和终止循环八个调度方法。在多任务调度之前,案例和所有的工作、任务、转发、循环都被初始化为就绪状态。启动案例是第一个被执行调度,客户机签办任务、客户机退回任务、多步任务办理、多步任务重办、启动循环和终止循环是根据多步任务协同网的流向,包括正向和逆向,终止案例调度是根据工作和转发的状态由系统自动调度。本发明实现多步任务的正向和逆向调度。
搜索关键词: 一种 用于 工作流 引擎 任务 协同 调度 方法
【主权项】:
1、一种用于工作流引擎的多任务协同调度方法,其特征在于:按照如下步骤进行:(i)构建多任务协同方法的计算模型——多步任务协同网,这是一个四元组N=(C,T;W,D)按照如下充分必要条件构造的:1°C≠φ2°T≠φ3°CI T=φ4°WC×T5°DT×C6°dom(W)Y cod(W)=CYT其中, dom ( W ) = { x | y : ( x , y ) W } , cod ( W ) = { y | x : ( x , y ) W } ; 在四元组中,C是一个有限的客户机集合;T是一个有限的任务集合;W是工作的集合,表示客户机在任务中的分工;D是转发的集合,表示任务的流转方向;(2)构建多步任务协同网的动态结构——多步任务协同网系统,这是一个八元组∑=(C,T;W,D;W0,PD,G,L)按照如下条件构造的:1°N=(C,T;W,D)是一个多步任务协同网;2°W0W,是起始工作的集合,起始工作是指不依赖于任何任务客户机就可以办理的工作;3°PD是定义在D上的转发条件的集合,转发条件指转发依赖的条件;4°G是定义在C上的分组的集合,如果客户机即将办理的工作和已完成任务之间存在依赖关系,则需要将这些工作和传递这些任务的转发划分成一组,称为分组;5°LW∪D,是循环的集合,循环指可被反复执行的,并只保留最后一次执行信息的环形路径;(3)构建多任务调度所需的状态集合,包括五个状态集合:1°案例的状态集合:Si={Sir,Siw,Swf},案例是多步任务协同网的一次执行,一个多步任务协同网可以被多次执行,每次执行都对应一个不同的案例,其中,Sir就绪状态:案例等待执行的状态,Siw在办状态:案例正在执行的状态,Sif完成状态:案例已经结束的状态;2°工作的状态集合:Sw={Swr,Sww,Swn,Swf},其中,Swr就绪状态:工作等待客户机办理的状态,Sww在办状态:工作正在被客户机办理的状态,Swn否定状态:工作因条件不满足不能被客户机办理的状态,Swf完成状态:工作已经结束的状态;3°任务的状态集合:St={Str,Stw,Stn,Stf},其中,Str就绪状态:任务等待客户机办理的状态,Stw在办状态:任务正在被客户机办理的状态,Stn否定状态:任务因条件不满足不能被客户机办理的状态,Stf完成状态:任务已经结束的状态;4°转发的状态集合:Sd={Sdr,Sdw,Sdn,Sdf},其中,Sdr就绪状态:转发等待被执行的状态,Sdw待签状态:转发等待被客户机签收的状态,Sdn否定状态:转发因条件不满足不能被客户机签收的状态,Sdf完成状态:转发已经结束的状态;5°循环的状态集合:S1={Slr,Slw,Sdf};其中,Slr就绪状态:循环等待被执行的状态,Slw工作状态:循环正在被执行的状态,Slf完成状态:循环已经结束的状态;(4)多任务调度包括启动案例、终止案例、客户机签办任务、客户机退回任务、多步任务办理、多步任务重办、启动循环和终止循环八个调度方法;在多任务调度之前,案例和所有的工作、任务、转发、循环都被初始化为就绪状态;启动案例是第一个被执行调度,客户机签办任务、客户机退回任务、多步任务办理、多步任务重办、启动循环和终止循环是根据多步任务协同网的流向,包括正向和逆向,由客户机进行调度的,终止案例的调度是根据工作和转发的状态由系统自动调度的;令:SetStatus(x)表示设置对象x的状态,x为案例、任务、工作、转发或循环;GetStatus(x)表示获得对象x的状态,x为案例、任务、工作、转发或循环;SetClient(x)表示设置对象所属客户机,x为工作或转发;GetClient(x)表示获得对象所属客户机,x为工作或转发;PreCondition(x)表示条件计算,结果为True或False,x为转发;Count(x)表示集合中对象的数目,x为一个集合;则多步任务的调度方法可表述如下:1°启动案例:设w0为案例i的任一起始工作,W0是w0的集合,则启动案例的调度方法如下:将案例和每一个起始工作的状态设置为在办状态,即SetStatus(i):=Siw SetStatus(w0):=Sww,w0∈W0 2°终止案例:设w为案例i的任一工作,W是w的集合,d为案例i的任一转发,D是d的集合,则终止案例的调度方法为:第一步:若案例中仍有待办的工作或待签收的任务,即GetStatus(w)=Sww, w W 或GetStatus(d)=Sdw, d D , 则不能终止案例,结束;否则转第二步;第二步:将案例的状态置为完称状态,即SetStatus(i):=Sif;3°客户机签办任务:设c是案例i中的任一客户机,gc是定义在c上的任一分组,d是分组gc中的任一转发,D是d的集合,’t是d所属的任务,d是任务’t中的任一转发,D是d的集合,’w是任务’t中的任一工作,’W是’w的集合,w是分组gc中的任一工作,W是w的集合,t是w所属的任务,w是任务t中的任一工作,W是w的集合,d’是任务t中的任一转发,D’是d’的集合,则客户机c签办任务的调度方法如下:第一步:若gc中的每一个转发d都处于待签或否定状态,即GetStatus(d)∈{Sdw,Sdn},d∈D,则转第二步;否则结束;第二步:若gc中的每一个转发d都处于否定状态,即GetStatus(d)=Sdn,d∈D,则转第三步;否则转第四步;第三步:将gc中的每一个工作w设置为否定状态,即SetStatus(w):=Swn,w∈W;对于每一个w,若其所属任务t的每一个工作w都处于否定状态,即GetStatus(w)=Swn,w∈W,则将任务t和任务t的每一个转发d′设置为否定状态,即SetStatus(t):=Stn SetStatus(d′):=Sdn,d′∈D′,结束;否则结束;第四步:对于gc中的任一个d,若其处于待签状态,则将d的客户机设置为c,即SetCliet(d):=c,则转第六步;否则将d的客户机设置为空值null,即SetClient(d):=null,并转第五步;第五步:若d所属任务’t处于否定状态,即GetStatus(′t):=Stn,则将任务’t和其每一个工作’w及每一个转发d设置为完成状态,即SetStatus(′t):=Stf,SetStatus(′w):=Swf,′w∈′W,SetStatus(d):=Sdf,d∈D;第六步:将gc中的每一个转发d设置为完成状态,每一个工作w设置为完成状态,并将每一个工作w的客户机设置为c,即SetStatus(d):=Sdf,d∈D,SetClient(w):=c,w∈W,SetStatus(w):=Sww,w∈W;若gc中仍有转发d处于待签或否定状态,即GetStatus(d)∈{Sdw,Sdn},d∈D,则转第四步;否则转第七步;第七步:若任务t处于就绪状态,即GetStatus(t)=Str,则将任务t设置为在办状态,即SetStatus(t):=Stw;第八步:客户机c办理gc中的任一个工作w;第九步:若工作w办理完毕,则将工作w设置为完成状态,即SetStatus(w):=Swf;若gc中仍有处于在办状态的工作,即GetStatus(w)=Sww, w W , 则转第八步;否则结束;4°客户机退回任务:设c是案例i中的任一客户机,gc是定义在c上的任一分组,d是分组gc中的任一转发,D是d的集合,’t是d所属的任务,d是任务’t中的任一转发,D是d的集合,’w是任务’t中的任一工作,’W是’w的集合,w是分组gc中的任一工作,W是w的集合,t是w所属的任务,w是任务t中的任一工作,W是w的集合,d是任务t中的任一转发,D’是d’的集合,则客户机c退回任务的调度方法如下:第一步:若gc中的每一个工作w都处于在办状态,即GetStatus(w)=Sww,w∈W,则转第二步;否则结束;第二步:将gc中的每一个工作w都设置为就绪状态,即SetStatus(w):=Swr,w∈W;对于gc中的每一个工作w,若w所属任务t的每一个工作w都处于就绪状态,即GetStatus(w)=Swr,w∈W,则将任务t设置为就绪状态,即SetStatus(t):=Str;第三步:对于gc中的任一个d,若其客户机为c,即GetClient(d)=c,则将d的客户机设置为null,并将d设置为待签状态,即SetClient(d):=null,SetStatus(d):=Sdw,之后转第五步;否则将d设置为否定状态,即SetStatus(d):=Sdn,之后转第四步;第四步:若d所属任务′t的每一个转发d都处于否定状态,即GetStatus(d)=Sdn,d∈D,并且任务′t的每一个工作′w的客户机都为空值null,即GetClient(′w)=null,′w∈′W,则将任务′t设置为否定状态,即SetStatus(′t):=Stn;结束;5°多步任务办理:设t是案例中的任一任务,w是任务t的任一工作,W是w的集合,c是负责办理工作w的客户机,gc是定义在客户机c上的任一分组,’d是分组gc中的任一转发,’D是’d的集合,’t是’d所属的工作,’w是任务’t的任一工作,’W是’w的集合,’d是’t的任一转发,’D 是’d的集合,w是分组gc中的任一工作,W是w的集合,d是任务t的任一转发,D是d的集合,c’是d所属的客户机,gc’是定义在客户机c’上的任一分组,d是分组gc’中的任一转发,D是d的集合,w’是分组gc’中的任一工作,W’是w’的集合,t’是w’所属的任务,w’是任务t’中的任一工作,W’是w’的集合,d’是t’的任一转发,D’是d’的集合,则任务t办理过程的调度方法如下:第一步:若任务t的每一个工作w都处于完成或否定状态,即GetStatus(w)∈{Swf,Swn}, · w W , 则转第二步;否则结束;第二步:若任务t的每一个工作w都处于否定状态,即GetStatus(w)=Swn, · w W , 则将任务t和任务t的每一个转发d设置为否定状态,即SetStatus(t):=Stn SetStatus(d):=Sdn,d∈D,之后转第七步;否则转第三步;第三步:对于t中的任一个w,若w处于否定状态,则将w设置为完成状态,将w的客户机设置为空值null,将与w处于同一分组gc中的每一个工作w和每一个转发′d设置为完成状态,即SetStatus(w):=Swf,SetClient(w):=null,SetStatus(w)=Swf,w∈W,SetStatus(′d)=Sdf,′d∈′D,之后转第四步;否则转第五步;第四步:对于任一个′d,若′d所属任务′t处于否定状态,即GetStatus(′t)=Stn,则将任务′t和任务′t的每一个转发′d设置为完成状态,即SetStatus(′t):=Stf,SetStatus(′d):=Sdf,′d∈′D;第五步:若任务t有工作w处于否定状态,即GetStatus(w)=Swn, w W , 则转第三步;否则转第六步;第六步:将任务t设置为完成状态,即SetStatus(t):=Stf, w W ; 计算任务t的每一个转发d的转发条件,若结果为真,即PreCondition(d)=True,则将转发d设置为待签状态,即SetStatus(d):=Sdw;否则将转发d设置为否定状态,即SetStatus(d):=Sdn;第七步:对于任一个d,若其所属分组gc’中的所有转发d处于否定状态,即GetStatus(d)=Sdn,d∈D,则将分组gc’中的所有工作w′设置为否定状态,即SetStatus(w′):=Swn,w′∈W′;第八步:对于任一个w′,若其所属任务t’中的所有工作w′处于否定状态,即GetStatusS(w′)=Swn,w′∈W′,则将任务t’和任务t’的所有转发d′设置为否定状态,即SetStatus(t′):=Stn SetStatus(d′)=Sdn,d′∈D′;结束;6°多步任务重办:设t是案例中的任一任务,w是任务t的任一工作,W是w的集合,c是负责办理工作w的客户机,gc是定义在客户机c上的任一分组,’d是分组gc中的任一转发,’D是’d的集合,’t是’d所属的工作,’w是任务’t的任一工作,’W是’w的集合,’d是’t的任一转发,’D 是’d的集合,w是分组gc中的任一工作,W是w的集合,d是任务t的任一转发,D是d的集合,c’是d所属的客户机,gc’是定义在客户机c’上的任一分组,d是分组gc’中的任一转发,D是d的集合,w’是分组gc’中的任一工作,W’是w’的集合,t’是w’所属的任务,w’是任务t’中的任一工作,W’是w’的集合,d’是t’的任一转发,D’是d’的集合,则客户机c重办任务t的调度方法如下:第一步:若任务t处于在办状态,即GetStatus(t)=Stw,或任务t处于完成状态且任务t没有转发,即GetStatus(t)=Stf & Count(D)=0,或任务t处于完成状态且任务t的每一个转发d都处于待签或否定状态,即GetStatus(t)=Stf & GetStatus(d)∈{Sdw,Sdn},d∈D,则转第二步;否则结束;第二步:对于任一个d,若其所属分组gc’中的每一个转发d都处于否定状态,即GetStatus(d)=Sdn,d∈D,则将分组gc’中的所有工作w′设置为就绪状态,即SetStatus(w′):=Swr,w′∈W′,之后转第三步;否则转第四步;第三步:对于任一个w′,若其所属任务t’处于否定状态,则将任务t’和任务t’的每一个转发d′设置为就绪状态,即SetStatus(t′)=Str SetStatus(d′)=Sdr,d′∈D′;第四步:将任务t和任务t要重办的工作w设置为在办状态,并将任务t的每一个转发d设置为就绪状态,即SetStatus(w):=Sww,SetStatus(t):=Stw,SetStatus(d):=Sdr,d∈D;对于任一个d,若其所属分组gc’中有工作w′处于否定状态,即GetStatus(w′)=Swn, w W , 则将分组gc’中的每一个工作w′设置为就绪状态,即SetStatus(w′):=Swr,w′∈W′;第五步:若任务t有处于完成状态的工作w,且w的客户机为null,即GetStatus(w)=Swf & GetClient(w)=null, w W , 则将w设置为否定状态,即SetStatus(w):=Swn;第六步:对于t中的任一个w,若w所属分组gc中的每一个工作w都处于否定状态,即GetStatus(w)=Swn,w∈W,则将gc中的每一个转发′d设置为否定状态,即SetStatus(′d):=Sdn,′d∈′D;第七步:对于任一个′d,若其所属任务′t处于完成状态,且任务′t的每一个工作′w的客户机都为空值null,即GetStatus(′t)=Stf & GetClient(′w)=null,′w∈′W,则将任务′t和任务′t的每一个工作′w都设置为否定状态,即SetStatus(′t):=Stn SetStatus(′w):=Swn,′w∈′W;第八步:客户机c重办工作w;第九步:若工作w办理完毕,则将工作w设置为完成状态,即SetStatus(w):=Swf,结束;否则转第八步;7°启动循环:设L为案例i的任一循环,w是循环路径上的任一工作,则启动循环的调度方法如下:若工作w属于循环L且工作w处于在办状态且循环L处于就绪状态,即w∈L &GetStatus(w)=Sww & GetStatus(L)=Slr,则将循环L设置为运行状态,即SetStatus(L):=Slw;否则结束;8°终止循环:设L为案例i的任一循环,w是循环路径上的任一工作,则终止循环的调度方法如下:若工作w属于循环L且工作w处于在办状态且循环L处于运行状态,即w∈L&GetStatus(w)=Sww& GetStatus(L)=Slw,则将循环L设置为运行状态,即SetStatus(L):=Slf;否则结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学;西安龙舟科技有限责任公司,未经西安交通大学;西安龙舟科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/200510042888.6/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top