正在加载图片...
·436· 智能系统学报 第8卷 务工作流模型只关注任务网络及流关系,并不规定 6中,若T3、T结束,T成功,工作流管理程序应将其 任务的细节及具体实现方式. 直接的前驱T2、T、T,一并删除(删除即令运行中的 OR_split结构的实现有2种方式[].其一如图5 任务停止,不考虑这些任务的任何后续影响) 所示,在T4、T,前添加T2、T,2个起着开关作用的判 然而OR_join运行时的前驱条件并不,总是如此 断任务,如果T,执行的条件满足而T的条件不满 简单,上例中,0R_join任务的标记中还有另一串参 足,则T,任务成功而T任务失败,于是T执行而T, 数,显式指定给工作流管理程序并将其删除.于是T 不执行.另一种方式与具体的编程实现有关.在任务 结束后会将图6中所有6个前驱任务全部删除(默 内部,可以访问并更改指向后继任务的流程.在上例 认删除T2、T3、T4,显式删除T、T6、T,)这种方式强 中,T内部本来保留有T2、T的名称作为后继,如果 调对建模者意图的直接表述和利用,就模型本身而 在某种条件下删除其中T,的名称,那么T完成后就 言并不严谨然而在相关理论尚不完善之时,不失为 只能执行T.这2种方式皆可在后继中任选数个任 一种简便有效的方案,相比更改或限制模型,以及用 务来执行。 复杂的算法计算路径可达性的方法[9o],往往有着 更好的实现效果」 循环结构的建模方式如图7所示,只需在其前 方加入一个OR_join任务 OR join(1) 图5任务工作流中OR_split结构 图7任务工作流循环结构 Fig.5 OR split structure in task workflow Fig.7 Circulation structure in task workflow 图6中T是一个OR_join任务,这是任务工作 在精简了逻辑元素,整合了冗余的逻辑结构后, 流模型中惟一特殊的任务,注意OR_join后面的参 任务工作流能以更简洁的方式实现与其他任务模型 数,第1个参数2表示T的前驱任务中任有2个结 相似的功能;而一些新特性的增加,如内置的成功或 束后,T就能以成功的状态执行完毕.为了避免无止 失败2种完成状态和超时值的应用,以及对OR_join 境的等待,OR_join任务也有超时值.当第1个前驱 结构逻辑问题的解决方案,不仅增加了模型的功能, 任务结束时,OR_join任务就被激活,处于等待状态. 也使得模型更加完善,更适合于水下机器人任务的 如果超过时限后,前驱条件仍未完全达成,此 建模 OR_join会被当作失败. 4任务工作流的建模流程 首先以图形化的方式对任务进行描述,如图8 所示.对照图8可直接写出任务模型的文字描述: #START StartMission();#ToTarget;NULL; NULL:NEVER 30 #ToTarget ToTarget ()#START;#Join1,#Re- OR join(2.(T5,T%,T》 cord;#Join2; Joinl OrJoin 1 )ToTarget,Rearrange: #Work;; #Rearrange Rearrange();#Work;#Joinl; 图6任务工作流中OR joi血结构 Fig.6 OR_join structure in task workflow #Record Record();#ToTarget; #Work Work();#Joinl #Join2;#Record;#Re- 为避免OR_join结构可能产生的逻辑错误, arrange; OR_join任务在执行结束后会将其所有可能导致重 #Join2 OrJoin(1);#Work,#ToTarget;#Return; 复执行的前驱任务全部删除,以达到同步的效果图 ;;;}务工作流模型只关注任务网络及流关系ꎬ并不规定 任务的细节及具体实现方式. OR_split 结构的实现有 2 种方式[8] .其一如图 5 所示ꎬ在 T4 、T5前添加 T2 、T3 2 个起着开关作用的判 断任务ꎬ如果 T4执行的条件满足而 T5 的条件不满 足ꎬ则 T2任务成功而 T3任务失败ꎬ于是 T4执行而 T5 不执行.另一种方式与具体的编程实现有关.在任务 内部ꎬ可以访问并更改指向后继任务的流程.在上例 中ꎬT1内部本来保留有 T2 、T3的名称作为后继ꎬ如果 在某种条件下删除其中 T3的名称ꎬ那么 T1完成后就 只能执行 T2 .这 2 种方式皆可在后继中任选数个任 务来执行. 图 5 任务工作流中 OR_split 结构 Fig.5 OR_split structure in task workflow 图 6 中 T1是一个 OR_join 任务ꎬ这是任务工作 流模型中惟一特殊的任务ꎬ注意 OR_join 后面的参 数ꎬ第 1 个参数 2 表示 T1的前驱任务中任有 2 个结 束后ꎬT1就能以成功的状态执行完毕.为了避免无止 境的等待ꎬOR_join 任务也有超时值.当第 1 个前驱 任务结束时ꎬOR_join 任务就被激活ꎬ处于等待状态. 如果 超 过 时 限 后ꎬ 前 驱 条 件 仍 未 完 全 达 成ꎬ 此 OR_join会被当作失败. 图 6 任务工作流中 OR_join 结构 Fig.6 OR_join structure in task workflow 为避免 OR_ join 结构可能产生的逻辑错误ꎬ OR_join任务在执行结束后会将其所有可能导致重 复执行的前驱任务全部删除ꎬ以达到同步的效果.图 6 中ꎬ若 T3 、T4结束ꎬT1成功ꎬ工作流管理程序应将其 直接的前驱 T2 、T3 、T4一并删除(删除即令运行中的 任务停止ꎬ不考虑这些任务的任何后续影响). 然而 OR_join 运行时的前驱条件并不总是如此 简单ꎬ上例中ꎬOR_join 任务的标记中还有另一串参 数ꎬ显式指定给工作流管理程序并将其删除.于是 T1 结束后会将图 6 中所有 6 个前驱任务全部删除(默 认删除 T2 、T3 、T4 ꎬ显式删除 T5 、T6 、T7 ).这种方式强 调对建模者意图的直接表述和利用ꎬ就模型本身而 言并不严谨.然而在相关理论尚不完善之时ꎬ不失为 一种简便有效的方案ꎬ相比更改或限制模型ꎬ以及用 复杂的算法计算路径可达性的方法[9 ̄10] ꎬ往往有着 更好的实现效果. 循环结构的建模方式如图 7 所示ꎬ只需在其前 方加入一个 OR_join 任务. 图 7 任务工作流循环结构 Fig.7 Circulation structure in task workflow 在精简了逻辑元素ꎬ整合了冗余的逻辑结构后ꎬ 任务工作流能以更简洁的方式实现与其他任务模型 相似的功能ꎻ而一些新特性的增加ꎬ如内置的成功或 失败 2 种完成状态和超时值的应用ꎬ以及对 OR_join 结构逻辑问题的解决方案ꎬ不仅增加了模型的功能ꎬ 也使得模型更加完善ꎬ更适合于水下机器人任务的 建模. 4 任务工作流的建模流程 首先以图形化的方式对任务进行描述ꎬ如图 8 所示.对照图 8 可直接写出任务模型的文字描述: #START { StartMission ( )ꎻꎻ # ToTargetꎻꎻ NULLꎻ NULLꎻNEVER} #ToTarget { ToTarget ( )ꎻ # STARTꎻ # Join1ꎬ #Re ̄ cordꎻꎻ#Join2ꎻ ꎻ} # Join1 { OrJoin ( 1 )ꎻ # ToTargetꎬ # Rearrangeꎻ #Workꎻ ꎻ ꎻ ꎻ } #Rearrange{Rearrange( )ꎻ #Workꎻ #Join1ꎻ ꎻ ꎻ ꎻ} #Record{Record()ꎻ #ToTargetꎻ ꎻ ꎻ ꎻ ꎻ } #Work{Work( )ꎻ#Join1ꎻ#Join2ꎻ #Recordꎻ #Re ̄ arrangeꎻ ꎻ } #Join2{OrJoin(1)ꎻ #Workꎬ#ToTargetꎻ #Returnꎻ ꎻ ꎻ ꎻ } 􀅰436􀅰 智 能 系 统 学 报 第 8 卷
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有