版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工作流模式工作流模式 childe zhao,http:/www.workflow- 译自 http:/tmitwww.tm.tue.nl/research/patterns/ 欢迎阅读工作流原型模式。工作流原型模式可用于检验工作流服务器的表现能力,即工 作流如何实现你所需的业务需求。 本文档所含的模式由 wil van der aalst、bartek kiepuszewski、arthur ter hofstede 及 alistair barros 收集并成档。且对下属工作流管理系统进行了评估: cosa、flower、domino workflow、eastman、visual wor
2、kflow、forte conductor、meteor、mobile、 mqseries/workflow、staffware、verve workflow、i- flow、inconcert、 changengine, 以及 sap r/3 workflow.有关连接见模式、产品评测及 文档。 2002-122002-12 于北京于北京 工作流模式工作流模式 一、模式概览 1、基本控制模式 2、高级分支和同步模式 3、结构化模式 4、多实例调用模式 5、基于状态的模式 6、取消模式 二、基本控制模式 1、顺序(sequence) 描述 同义词 示例 建议 2、并行分叉(parallel s
3、plit) 描述 同义词 示例 建议 3、同步(synchronization) 描述 同义词 示例 问题 建议 4、排它选择 描述 同义词 示例 建议 5、简单合并 描述 同义词 示例 三、高级分支和同步模式 1、多路选择(multiple choice) 描述 同义词 示例 问题 建议 2、多路合并(multiple merge) 描述 示例 问题 建议 3、路径鉴别器(discriminator) 描述 示例 问题 建议 4、m中选n合并(n-out-of-m join) 描述 同意词 示例 问题 建议 5、同步合并(synchronising join) 描述 示例 问题 建议 四、结
4、构化模式 1、任意循环(arbitrary cycles) 描述 同意词 示例 问题 建议 2、绝对终止(implicit termination) 描述 示例 问题 建议 五、多实例模式 1、多实例(设计时已知实例数目) 描述 示例 建议 2、多实例(运行时才知实例数目) 描述 示例 问题 建议 3、多实例(无预知) 描述 示例 问题 建议 4、多实例(要求同步的多实例) 描述 示例 问题 建议 六、基于状态的模式 1、延期选择(deferred choice) 描述 同义词 示例 问题 建议 2、交叉路由(interleaved routing) 描述 同意词 示例 问题 建议 3、里程碑
5、(milestone) 描述 同义词 示例 问题 建议 七、取消模式 1、取消任务(cancel activity) 描述 同义词 示例 问题 建议 2、取消流程(cancel case) 描述 同义词 示例 问题 建议 一、模式概览一、模式概览 1、基本控制模式、基本控制模式 顺序(sequence )- 顺序执行任务;; 并行分叉(parallel split) - 并行执行任务; 同步(synchronization)- 同步两个并行执行的线程; 排它选择(exclusive choice) - 从多个路径种选择一个执行; 简单合并(simple merge) - 合并两个可选执行路径。
6、 2、高级分支和同步模式、高级分支和同步模式 多路选择(multiple choice) - 从多个可选路径中选择几路执行; 多路合并(multiple merge) - 无同步合并多个执行路径; 路径鉴别(discriminator) - 无同步合并多个执行路径,然并发任务仅执行一次; m 并 n(n-out-of-m join) - 合并多个执行路径,实现部分同步,并发任务仅执 行一次。 同步连接(synchronising join) - 合并多个执行路径,若多路执行则同步;若一 路执行则简单合并(simple merge)。 3、结构化模式、结构化模式 任意循环(arbitrary c
7、ycles) - 执行工作流图时无任何环路限制; 绝对终止(implicit termination) - 若无事可做时则终止。 4、多实例调用模式、多实例调用模式 同一任务多实例在流程设计时已知实例数目; 同一任务的实例数目在运砖时某刻才能确定; 同一任务的实例数目无法确知; 同一任务多实例并要求同步。 5、基于状态的模式、基于状态的模式 延期选择(deferred choice) - 执行两个可选进程之一,选择执行进程是隐含的; 交叉并行路由(interleaved parallel routing) - 随机执行一个任务但不并行; 里程碑(milestone) - 直到达到某个里程碑方激
8、活一个任务。 6、取消模式、取消模式 取消任务(cancel activity) - 取消(或禁止)一个激活任务; 取消流程(cancel case) - 取消(或禁止)一个流程。 二、基本控制模式二、基本控制模式 1、顺序(、顺序(sequence) 顺序模式是最基本的工作流模式。当两个或更多任务间存在依赖关系时需用顺序模 式在前一任务完成之前,本任务不能执行(调度)。 描述描述 在同一流程中,一个任务在另一任务完成后才能被激活。 同义词同义词 顺序路由,串行路由。 示例示例 任务“发送账单”在任务“发送货物”之后才能执行。 在检索到客户端文件后才能计算保险索赔。 任务“累计航行里程”在任务
9、“预订航班” 后才能执行。 建议建议 顺序模式用于对工作流程中连贯的步骤建模,所有的工作流管理系统都支持该模式。 2、并行分叉(、并行分叉(parallel split) 当两个或更多任务需并行执行时需要并行分叉。除不要求任何程度并行支持的系统外 大多数工作流引擎都较易支持并行分叉。 描述描述 在流程中,需将单进程的某控制点分成可并行执行的多进程控制,于是允许任务同时 执行或以任何顺序执行。 同义词同义词 与分支,并行路由, 分叉。 示例示例 任务“付款”的执行,使得任务“装船”和“通知客户”同时执行能够。 注册“保险索赔”后,两个并行子流程被触发:一个是“校核顾客符合的条款”,另 一是评估实
10、际损害。 建议建议 所有的工作流引擎都可能支持并行任务。可区分两种基本的方法:显性与分叉和隐性 与分叉。支持显性与分叉结构的工作流引擎(诸如:visual workflo)可定义一激活即使能 的有多个流出转移的路由选择节点。支持隐性与分叉的工作流引擎(如 mqseries/workflow) 不提供特殊的路由选择结构每个任务可有多于一个的流出转移,且每个转移都有相关 条件。为达到并行执行的目的,流程设计者须保证流出转移的多个相关条件为真(典型的方 法是将条件置为空)。 3、同步(、同步(synchronization) 当两个并行任务都完成后下一任务才能开始执行时需要同步。 描述描述 流程中,
11、多个并行子流程/任务在某点汇聚成一个单进程,从而同步多个进程。 同义词同义词 与结合,结合,同步。 示例示例 任务“存档”在“送票”和“收费”两个任务完成后才能使能。 “保险索赔”在“核定条款”和“估算实际损伤”后才能计算。 问题问题 本模式极易为所有支持并行运行的工作流引擎所支持。值得注意的是,对于某些实现, “与连接”的错误应用可能易于造成死锁。 建议建议 1. 所有可用的工作流引擎支持本模式。典型的是具有可用的同步结构。在某些罕见的情 形下,通过对一个多入口的任务定义特殊的开始条件实现同步。 2. 当具有显性的同步结构时,典型的特征是同步器应具有多于一个入口,却只有一个出 口。例如,若任
12、务 c 之前有一以任务 a 和任务 b 为输入的同步器,如果已有任务 a 的 实例,当它执行完毕时,同步器将不作处理,而是等待任务 b 的实例的终止。 另一方 法是,在等待任务 b 时,简单地明了任务 a 的“额外”实例的数目,然后用相应的任 务 b 的实例匹配它们。 4、排它选择、排它选择 描述描述 在流程的某一点,依据一个结果或流程控制数据, 从多个分支路径中选定一个路径。 同义词同义词 异或分叉, 条件路径, 开关, 决议。 示例示例 任务“计算赔偿金”后继是两个任务“支付赔偿金”和“联系顾客”中的任一个。 建议建议 1. 类似于“并行分叉”,有两种基本策略某些工作流引擎提供显性的结构以
13、实现 “排他选择”模式 (譬如 staffware, visual workflo), 但是在其它工作流引擎 (mqseries/workflow, verve)中,流程设计者不得不选择转移条件仿效“排他选择”。 5、简单合并、简单合并 欲将选择执行的路径合并成一个路径需用“合并”模式。 描述描述 在流程中某点,需将两个或更多可选分支聚合而不同步;换言之,“合并”在任一入 口连接触发时被触发。 同义词同义词 异或连接,,异步连接,合并。 示例示例 任务“存档索赔”在任务“支付赔偿金”和“联系顾客”任一之后使能。 三、高级分支和同步模式三、高级分支和同步模式 1、多路选择(、多路选择(multi
14、ple choice) 排它模式采取的是只有一个可选项被选定并执行,亦即它对应于排它或排它或。有时,要用 到从给定的一组选项中选定多项(而非一项)的结构,于是,引入(非排它)多重选择。 描述描述 在工作流过程的某点,依据判定或工作流控制数据,选择一个或多个分支。 同义词同义词 条件路径,选择, 或分叉。 示例示例 执行任务evaluate_damage 之后任务contact_fire_department 或 contact_insurance_company 被执行,至少其中之一被执行,但是,也可能两者都被执行。 问题问题 很多工作流管理斜体中,转移上可以定义条件。这些系统中可直接实现 o
15、r-分叉,但 是有几种工作流管理系统不能在转移上设置条件,仅提供纯粹的 and-split 和 xor-split 建模元素 (例如 staffware).。 建议建议 1. 正如所述,对于可在转移上设置条件的工作流管理系统 (诸如 verve, mqseries/workflow, forte conductor)实现多重选择是直截了当的,流程设计者只需 简单地设定每一转移的条件即可。值得注意的是多重选择多重选择是并行分叉并行分叉和排它选择排它选择的泛 化。 2. 多重选择多重选择的实现需要将并行分叉并行分叉和排它选择排它选择二者结合起来。每一可能的分支由一前置 的异或分叉异或分叉基于控制数
16、据决定,或者激活该分支,或者跳过它。所有异或分叉异或分叉由一与与 分叉分叉激活,该与分叉与分叉也可用于设置异或分支异或分支所用的控制数据。 3. 另一与上述方案类似的方案是颠倒与分叉与分叉和异或分叉异或分叉的结构顺序。每组可激活的并行 分支,加入一与分叉与分叉。所有与分叉由一前置的异或分叉异或分叉激活适当的与分叉与分叉。注意并非 所有的分支组合可行的。所以本方案将导致简单的工作流定义。 2、多路合并(多路合并(multiple merge) 本模式旨在阐述简单合并模式简单合并模式中提及的问题, 即当一个合并中有多于一条流入转移被 激活时的情形。 描述描述 多路合并是指在流程中某点,两条或更多分
17、支无同步再收敛。若多于一个分支被激活, 可能同时被激活,任务后的合并对于每条流入的激活分支都响应一次(亦即,在上图中,d 将被实例化两次)。 示例示例 有时两个或更多并行的分支共享一个终点。此类情况的翻版是(可能复杂的)流程中每 一分支可用一个多路合并。一个简单的例子是两个并行运行的任务 audit_application 及 process_application ,二者都后接任务 close_case.。 问题问题 大多数工作流引擎 (诸如 staffware, hp changengine, i-flow)若一个任务的第一个 实例仍在运行时,将不产生第二个实例。verve worflow
18、 和 forte conductor 例外。 建议建议 如果多路合并多路合并不是循环循环(loop)的一部分, 作为一个任务不能创建多于一个实例的语言的 通用设计模式是在工作流模型中复制该任务。如果多路合并多路合并是循环循环(loop)的一部分, 典型的 情况是多路合并多路合并其后所接的任务的数目在设计(建模)时未知。关于这个问题的典型方案, 见有关多实例模式。 3、路径鉴别器(、路径鉴别器(discriminator) 本模式可以看作多路合并模式的逆。其语义实现是合并后仅一个任务应被实例化。 描述描述 路径鉴别器是指在流程的某点,激活后续任务之前等待许多流入分支的完成。从它开 始之时起,等待
19、所有剩余分支的完成并“忽略”它们。一旦所有的流入分支都被触发,它 使自己复位,以便可被再次触发 示例示例 一篇论文需被送给外部审阅者。如果两个评价皆为正,则论文被接受;如果第一个评 价为负,应提示作者,不必等待第二个评价。 为缩短查询响应时间, 一个复杂的查询通过 internet 被送往两个数据库。第一个给出结 果后流程将继续流转,第二个结果将被忽略。 问题问题 一些工作流引擎(如 staffware, hp changeengine, i-flow),若任务的第一个实例仍 在运行,则生成该任务的第二个实例。然而,这不能提供一个路由鉴别解决方案,因为只 要该任务的第一个实例完成,第二个实例将
20、被创建。 建议建议 1. verve 中有一个特殊的结构实现路由鉴别语义。 2. 支持定制触发器定制触发器的产品可实现路由鉴别路由鉴别功能(详见 m m 中选中选 n n) 3. 所有其它的工作流引擎很难或无法实现路由鉴别功能。通用的设计模式是采用取消任取消任 务务模式。只要路由鉴别后接任务的第一个实例被创建, 仍未完成的流入分支的任务可 被取消,如此第二个实例将不会被创建。模式见下图。本方案的问题是若任务b和c 同时完成, 任务d 可能仍将执行两次。此外, 路由鉴别的原有语义是允许b 和c 都完 成。本方案任务b 或c 将被取消。 4、m 中选中选 n 合并(合并(n-out-of-m jo
21、in) 下述模式可视作基本路由鉴别路由鉴别的泛化,意欲从 m 个流入转移中同步 n 个线程。 描述描述 m 中选 n 合并是指流程的某点m 条并行路径聚合到一点,只要其中n条路径完成则激 活后续任务,所有其它剩余路径的完成应被忽略。类似于路由鉴别,只要所有流入分支被触 发,则该合并使自己复位,以便可被再次触发。 同意词同意词 部分合并, 鉴别器, 定制合并。 示例示例 一篇论文需送往三个外部的审阅者。收到两个评审后继续处理论文,第三个评审将被 忽略。 问题问题 大多数工作流产品不提供结构以直接实现 m 中选 n 合并。 建议建议 1. 某些工作流引擎 (如 forte conductor) 提
22、供对定制触发器定制触发器的支持。对于具有多于一个 流入转移的任务可定义定制触发器定制触发器,它定义条件,典型地使用某些内部脚本语言, 当条 件计算为真时,激活该任务。这样的脚本很容易用于定义与 m 中选 n 等价的语义。 该方法的缺点是采用定制触发器语义的合并,不仔细检验触发器脚本是无法定义的, 亦将导致模型的不当和难于理解。 2. 通过 by comb 融合路由鉴别模式和同步模式(discriminator 与 synchronisation ), 可达到同样目的,尽管工作流定义(或模型)会变得大而复杂。下图所示为一 3 中选 2 合并的例子。 5、同步合并(同步合并(synchronisi
23、ng join) 现代的工作流产品很容易处理多路选择模式。不幸的是,对应于合并(orjoin)结 构的实现却极度困难。or-join 应具有同步并发流及合并可选流的功能。困难在于决定何 时同步,何时合并。同步可选流导致可能的死锁,合并并发流可能导致不期望的任务多重 执行。 描述描述 流程中某点多条路径聚合成一个线程,若多于一条路径触发,则活动线程需同步;若 仅有一条路径触发,则可选分支应再收敛,无需同步。 示例示例 拓展多重选择模式中的例子,任务 contact_fire_department 及 contact_insurance_company 任一或二者都完成后(取决于它们是否都不执行)
24、,任务 submit report 需完成 (仅一次)。 问题问题 本模式的主要困难在于决定何时同步,何时合并。同步可选流导致可能的死锁,合并 并发流可能导致不期望的紧接标准 orjoin 结构的任务的多重执行。 建议建议 1. 已知有两种工作流引擎 mqseries/workflow 和 inconcert 中直接实现了这个模式。正 如前面提及的,若一同步合并后接一 or-split,该 or-split 可触发多于一条流出转 移,不必等到运行时方知同步是否应该发生。 2. 在其它工作流引擎中未直接实现本模式。通常的作发是避免明显地使用可能触发多条 流出转移的 or-split,而代之以一个
25、 and-splits 和 xor-splits 的联合。该方法可轻 易地使用 and-splits 和 xor-splits 结构同步相应分支。 四、结构化模式四、结构化模式 1、任意循环(、任意循环(arbitrary cycles) 在工作流分析/设计期间,人们不希望受各种各样工作流定义工具的语法约束,诸如循 环仅有一个入口一个出口。事实上,为正确抽象, 工作流引擎应允许无约束模型的执行,也 许更利于最终用户跟踪过程的执行。 描述描述 意指在流程中,一个或多个任务可被重复执行。 同意词同意词 循环(loop), 叠代(iterate), 周期(cycle)。 示例示例 大多数原始的工作流
26、模型在分析阶段包含任意循环 (除非不含循环).。 问题问题 某些工作流引擎不允许任意循环 仅支持结构化循环, 或者借助分解结构 (mqseries/workflow, inconcert),或者依靠特定的循环结构 (visual workflo, sap r/3)。 建议建议 任意循环可典型地转换成结构化循环,除非含有更高级模式之一,诸如多实例模式。多实例模式。 此类变换不是通过辅助变量,就是节点复制。下图是一任意循环转换成结构化循环的例子。 2、绝对终止、绝对终止(implicit termination) 另一类工作流引擎对模型加以限制的例子是模型中只能包含一个结束节点,若有多个结 束节点
27、,当第一个结束节点到达时,工作流模型终止。其次,大多数业务模型不遵循本模式 认为业务过程当无事可作时终止更自然。 描述描述 一给定的子流程当无事可作时应终止;换言之,流程中无活动任务,且无其它任务可 被激活 (同时,流程并非死锁)。 示例示例 这样的语法在分析阶段为每种工作流模型采用。 问题问题 大多数工作流引擎当流程到达一显性的 finalfinal 节点时终止流程。任何当前正在运行的 任务在流程终止时将被取消,这可能干扰最终用户。某些工作流引擎(staffware, mqseries/workflow, inconcert) 在子流程无任务时结束子流程。 建议建议 这类问题的典型解决方案是
28、将模型转换成仅有一个终止节点的等价模型,其复杂性更 多地取决于实际模型。有时是容易的、直截了当的, 具有代表性的作法是利用不同接合结 构及任务复制的组合。然而,有时较难甚至不可能实现。一个包含多实例及绝对(或隐性) 终止 的模型很难转换成显性终止的模型。 五、多实例模式五、多实例模式 1、多实例(设计时已知实例数目)、多实例(设计时已知实例数目) 流程中的某个任务可能乐于创建多个实例,其数目在设计模型时已知。 描述描述 某种情形下,一个任务被激活多次,其指定任务在给定情况下实例的个数在设计时已 知。 示例示例 危险材料的申请单要求三次不同的审批。 建议建议 若实例的个数在设计时已知,一个简单的
29、处理方法是在模型中复制该任务,并结合使 用并行执行模式。 2、多实例(运行时才知实例数目)、多实例(运行时才知实例数目) 一个任务的实例个数是动态的,亦即在设计时未知,而在运行期间所有实例需被执行 前的某点可获知其数目。可以将本模式看作一初始化该任务的 for 循环。 描述描述 在某种情况下,任务可被激活多次,给定任务的实例数在指定情形下是一变量,取决 于情况特征或资源的可用性, 但在运行期的某些阶段才已知, 即该任务的实例不得不被创 建之前。 示例示例 在将科学论文提交杂志审阅的流程中,任务 review_paper 被实例化几次取决于论文的 内容、受托人的可用性, 以及作者的信任度。 对于
30、多本书的订购过程, 任务 check_availability 每本书都执行一次。 当预定旅行时, 任务 book_flight 执行多次,若该旅程包含多个航程。 当申请审批包含多项,且每项需不同的人审批。 问题问题 只有少数工作流管理系统提供指定情况下一个任务的多次激活。大多数系统不得不采 取同一任务确定数目的并行实例,或者采用叠代(或重复)结构其中任务串形处理。 建议建议 1. 可用任何适用的方案。 2. 若存在可能的最大实例数, 则 and-split 和 xor-split 可用于获取期望的路径。一 xor-split 用于选择实例的数目,并触发几个 and-splits 之一。每一可
31、能的实例数对应 一个带有基数的 and-split。本方法的缺点是使得模型变得庞大且复杂,另为可能的最 大实例数所限。 3. 某些工作流引擎提供一特殊结构用于实例化一任务的给定数量的实例。例如 mqseries/workflow 中的 bundle 。 4. 正如很多情况下,期望的路由行为极易支持使其更串形化。简单地利用叠代(重 复)串形地激活任务的实例。假设任务 a 后接任务 b 的 n 个实例且后接任务 c,首 先执行 a,然后执行 b 的第一个实例,每一 b 的实例后接一 xor-split 来确定需要另 一 b 的实例或者 c 为下一需执行的任务步。 本方法相当简单。可是,b 的 n
32、个实例 是非并行执行的但以确定的次序,在很多情形下是无法接受的。请思考论文审阅的例 子,显然,第二个审阅者不得不等待第一个审阅者完成审阅后才能审阅是无法让人接 受的,等等。 3、多实例(无预知)、多实例(无预知) 实例的数目是动态的,亦即实例数设计时不知,在运行期间,所有这些实例需要被激 活前的任何阶段都无法知道。可将本模式看作是任务实例化的 while 循环。 描述描述 某种情况下任务可激活多次,然实例数设计时不知,在运行期间,所有这些实例不得 不被创建之前的任何阶段都无法预知。 示例示例 100 台计算机的订单,然供货商数目未知。每一供货商交付的计算机数量未知,因之, 交付的综述事先未知。
33、每次交货后,通过比较已截止目前已交付的总数和需求数量来确定 是否还有下次交易。 问题问题 大多数工作流引擎不允许同一任务多于一个实例同时激活。 建议建议 1. 本模式的最简单实现是利用循环和并行分叉结构,只要工作流引擎直接支持多实例。 在 forte 和 verve 中是可行的。 2. 某些工作流支持额外的结构使得设计器可创建子流程(subprocess 或 subflow ), 从主流程中分离且并行执行。例如, visual workflo 支持release 结构、i-flow 支 持chained process node.。 3. 若工作流支持特殊的结构孵化子流程, 那么可通过调用子流
34、程作为流程中任 务的一部分。 4. 同样运行时已知实例数的多实例模式,期望的路径行为通过使其有序执行极易支持。 4、多实例(要求同步的多实例)、多实例(要求同步的多实例) 以上多实例模式未考虑多实例的同步问题。例如,从主流程中孵化出一可变数量的子 流程, 如 visual workflo 和 i-flow 中支持的那样, 仅启动多实例未考虑同步问题;但是 有时候要求所有实例完成后方可继续流程运转, 可能不知道创建了多少实例。 描述描述 实例的数在设计时未知,任务的所有实例完成后另一任务才能启动(或开始)。 示例示例 预订旅行时, 任务book_flight 被执行多次若形成设计多个航班。只有所
35、有预订 完成, 发票才能送往客户。 100 台计算机的订单导致确定数量的交货,只有所有交货处理后,订单才能关闭。 问题问题 大多数工作流引擎不允许多实例。而允许多实例的工作流语言(如 forte, verve)未通 过任何结构来处理多实例的同步。支持 release 结构的工作流语言 (visual workflo, i- flow) 不提供任何结构允许同步孵化的子流程。 建议建议 1. 若实例数 (或最大实例数) 设计时已知, 那么通过复制任务及使用基本的同步模式可 实现多实例的同步。 2. 若工作流语言支持多实例与除非所有任务完成不终止流程的分解, 那么多实例可实现 同步将流程中包含循环生
36、成多实例的子流程放入分解块中,只有任务的所有实例完 成后,才能继续执行块。 3. mqseries/workflow 的 bundle 结构可用于同步运行时实例数已知的所有实例。 4. 大多数工作流语言中不易实现本方法。典型的的解决之道是采用外部触发器,只有该 任务的每一实例完成, 然后发送事件,主流程中应有另一任务等待发送的事件,此任务 只有在收到每一实例的所有事件后才能完成。 六、基于状态的模式六、基于状态的模式 1、延期选择(、延期选择(deferred choice) 在选择时刻,诸如由 xor-splits/or-splits 所支持的结构,工作流管理系统是自然的 事情,亦即基于数据
37、或通过判别任务获取。这意味着选择是优先的, 也就是说在一选定分 支被实际执行之前先作选择。有时这样的作法是不当的。存在两个线程只能执行一个的情 形 (设一个线程激活任务a, 另一线程激活任务 b,而两个任务都在任务列表中),只要一 个线程启动, 另一线程应消失(亦即若任务 a 启动,则任务 b 应从工作列表中消失)。 描述描述 流程某点几个分支中之一被选中,相对于 xor-split 的是, 选择不是显性的 (例如基 于数据或判定) 但有几个可选路径;然而,相对于 and-split, 仅有一个可选路径被执行。 这意味着环境激活可选分支之一,其余分支忽略。请注意,重要的是该选择延期到可选分 支
38、之一确实启动之时, 亦即选择的时刻仅可能迟。 同义词同义词 外部选择, 隐性选择(implicit choice.) 示例示例 接收产品时有两条途径将产品运往部门,选择是基于相应资源的可用性,因之,选择 延期到一个资源可用。 考虑任务send_questionnaire, 后接任务time_out 和process_questionnaire,任 务time_out 要求一个时间触发器, 任务process_questionnaire 只在回复从接收方 返回时执行(所以其执行需要一外部触发器)。明显地,在任务process_questionnaire 和time_out 作选择时应越迟越好。若
39、这样的选择被建模成一个显性的 xor-split , 可能在回复表单到达是被拒收, 亦或若无回复返回时锁定流程。 问题问题 很多工作流管理系统支持 xor-split, 但不支持隐性 xor-split。由于两个选择都是 期望的, 缺乏隐性 or-split 是一个实在的问题。 建议建议 1. 假设所用的工作流语言支持 and-split 和 cancel activity 模式,隐性 xor-split 可 借助一 and-split 激活所有可选分支实现。只要可选分支之一的处理开始,所有其它可 选分支被取消。请考虑上图中在任务b 和c 之间的隐性选择,任务a之后, 激活任 务 b 和c,只
40、要b 被选中或执行,任务c 被取消(无它法)。请注意,该方法常常不可 行,因为b 和 c 可被同时选中或执行。 2. 解决此问题的另一方法是由一显性 xor-split 代替隐性 xor-split,亦即增加一额外任 务。所有触发器激活的可选分支被重定位到一新加的任务。假设任务可以在触发器之 间区分, 则它可激活适当的分支。请注意,此方法将部分路由移入应用或任务(应用 中的任务)层。 2、交叉路由(、交叉路由(interleaved routing) and-split 和and-join模式典型地用于定义并发路由。大多数工作流管理系统支持真 正的并行, 亦即两个任务同时被执行。若这些任务共享
41、数据或资源,真正的并行是不可能的 或者导致紊乱,诸如丢失更新的数据或死锁。 描述描述 一组任务的以任意顺序执行:组中的每一任务被执行, 执行顺序运行时决定, 没有两个 任务在同一时刻执行 (亦即同一流程实例同一时刻没有两个任务活动。 同意词同意词 无序串形。 示例示例 海军要求每个工作申请必须进行两项测试: physical_test 和mental_test。这些测 试可以任意顺序进行,但不能同时进行。 每年年终时,银行对每一帐户执行两项任务: add_interest 和 charge_credit_card_costs。这些任务可以任意顺序执行,但是由于都要更新帐户数 据,它们不能同时执
42、行。 问题问题 由于多数工作流管理系统支持并行执行利用诸如 and-split 和 and-join 这样的 结构, 不可能定义交叉并行路由。 建议建议 1. 固定执行顺序,亦即将并行执行代之以串形执行。由于任务可以任意顺序执行,采用预 定义执行顺序的方法是可以接受的。但是, 固定执行顺序, 就降低了柔性,且所有潜 在的资源不能被利。 2. 利用 xor-split 和 sequence 的混合, 亦即确定几个可选次序,执行前通过一 xor- split 选择一个次序;缺点是开始执行前次序是确定的。然而, 工作流模型由于列举所 有可能的次序而可能变得非常复杂和庞大。 3. 通过利用延期 xor
43、-split (而非 xor-split),次序在执行前不必固定,亦即隐性 or- split 允许机动次序的选择。不幸的是, 模型中经常会包含一个空心粉条状的结构。 4. f 对于基于 petri 网的工作流模型, 任务的交叉须得强制加入一个位置作为所有 潜在并行任务输入及输出的地方。and-split 增加一个令牌到该处, and-join 从该处 去除索价令牌。易见如此的位置实现了所要求的“互斥现象”。 3、里程碑(、里程碑(milestone) 这个模式允许测试一个流程是否到达某一阶段。到达某些阶段时,就取消一些以前允 许运行的任务。 描述描述 任务节点的可用性取决于特定的状态条件,也
44、就是说任务只有在某一里程碑已经达到 并且还没有过期的时候才可被激活。假设有 3 个任务a,b,c,任务a只有在任务b已经被 执行,并且c还没有被执行的情况下才被激活,亦即a在b执行前是不可被激活的,在c 执行后a又是不可被激活的。 同义词同义词 测试临界点,最终期限,状态条件 示例示例 假设一个处理控告的流程,第一步,控诉材料被登记注册(register 任务),然后平 行的一个调查表发送给原告(send_questionnaire 任务),同时控告材料需要进行评 估(evaluate 任务)。如果在 2 周内,原告送回了调查表,任务 process_questionnaire 执行完成。如果
45、在 2 周内,原告没有送回调查表,调查表的 调查结果被放弃(任务time_out) 根据对控告材料的评估结果,决定是否受理。实际 的控诉受理(process_complaint 任务)必须等调查表被处理完成或者已经超时,才可 以进行。对控告的处理结果需要通过check_processing任务的检查。最后归档任务 (archive)被执行。 在一旅行社,航班机票、汽车租赁、旅馆等在发票还没有打印出来的时就可以预定。 一个顾客可以直到规定的交付日期前 2 天退掉其购买的商品。 一个顾客可以乘机 6 个月后向航空公司索赔。 问题问题 这个问题与在延期选择模式中提到的问题很相似。在许多的任务之间这里有一个竞争, 一些任务的执行会导致别的不能执行。注意,在控告登记例子中,任务 process_complaint 可被执行任意多次,也就是可能不执行process_complaint, 也可能 执行多次。 建议建议 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合并同类项解元次方程说课稿
- 电商项目规划
- 美术馆黄金屋租赁合同
- 休闲娱乐场所消火栓施工合同
- 会计师事务所出纳人员聘用协议
- 老年大学教师劳动合同范本
- 羽绒制品维修工聘用合同模板
- 农药采购合同管理
- 电梯工程师招聘协议
- 房地产开发招标廉政责任
- 人教版四年级下册语文第三单元测试卷及答案(2)
- 田麦久《运动训练学》(第2版)配套题库(含考研真题)
- 2016出资证明书(货币出资)(共1页)
- 小学广播体操比赛评分细则、评分表
- 商务英语教学课件:unit5 Travel and Visits
- 民航概论课程标准
- MACD二次绿柱缩短的选股公式.doc
- 尾矿库闭库工程施工组织设计方案范本
- 化工企业事故案例分析(中毒事故)
- 儿童日常习惯培养积分表
- 2021年劳资科三年工作总结
评论
0/150
提交评论