当前位置:文档之家› 第5章 工作流管理系统

第5章 工作流管理系统

第5章 工作流管理系统 内容提要1、 工作流的概念2、 工作流模式3、 工作流建模4、 工作流管理系统5、 迁移工作流第1节 工作流的概念 1 定义国际工作流管理联盟(Workflow Management Coalition )定义:工作流是①业务过程的全部或部分自动化,②在此过程中,文档、信息或者任务按照一定的过程规则流转,③实现组织成员间的协调工作以期达到业务的整体目标。

例:基本特征:分布式处理,多行为主体协同,同步或异步操作 2 分类a 、按照业务流程的特征分类①办公型工作流 结构化流程,步骤和规则是事先定义的,流程可重复和可预测。

(Administrative ) -----例如公文流转、项目审批②即席(Ad Hoc ) 重复性不强或没有重复,有关参数事先无法确定,可能发生意外型工作流 -----例如会议发言流程③交互型工作流 主要由参与者交互执行,可能包括循环流和反向流。

-----例如实时协同编辑、协同设计④生产型工作流 大规模和复杂异构的执行环境,包含各类任务、人员和组织。

(Production) -----例如ERP 、CIMS 、电子商务、协同产品商务、信贷和保险b 、按照文档载体支撑技术的分类✓ 邮件型工作流:基于电子邮件传递,松散耦合模式,适用于办公和即席型工作流 特点:文档实际流转✓ 数据库型工作流:紧耦合模式,过程执行=数据库访问和处理。

适用于生产型工作流 特点:数据存储于中央数据库共享,按权限分块操作—加锁 c 、按照流程驱动方式的分类✓ 数据驱动型工作流系统:数据驱动任务,任务完成产生新数据,新数据传递启动后继任务。

流程结构化程度高,相对固定发文流程✓事件驱动型工作流系统:事件驱动任务,任务完成产生新事件,新事件传递启动后继任务。

流程灵活3 工作流概念实体及关系基本特征:自顶向下,有严格的工作流模式、层次结构和操作步骤工作流执行由工作流管理引擎负责第2 节工作流模式一基本控制模式5种:顺序、并行分叉、同步、排它选择、简单合并1、条件/无条件顺序(Sequence)✓描述: 在同一流程中,一个任务只有在另一任务完成后才能被激活。

✓同义词:顺序路由,串行路由。

✓例:购物流程中,任务“发送账单”只能在任务“发送货物”之后执行。

2、并行分叉(Parallel Split/ AND-Split)✓描述:单进程分成可并行执行的多进程,并行进程可以同时执行或以任何顺序执行,但必须都执行。

✓ 同义词 与分支,并行路由,与分叉。

✓ 例 购物流程中,任务“付款”的执行,使得任务“商品配送”和“通知客户”可以并行执行。

✓ 实现方法a) 显式“与”分叉:工作流引擎提供路由选择节点。

b) 隐式“与”分叉:工作流引擎不提供路由选择结构,每个转移都有相关的转移条件,所有相关条件为真。

3、同步(Synchronization/AND-join )✓ 描述 并行进程汇聚成一个单进程,同步(等待)多个前驱进程的输出。

如果只有任务A 执行完毕,同步器将不作处理,而是等待任务B 终止。

✓ 同义词 与结合,结合,同步。

✓ 例 “保险索赔”在“核定条款”和“估算实际损伤”后才能计算。

✓ 实现方法a) 工作流引擎提供显式同步结构。

同步器具有多个入口,只有一个出口。

b) 通过对多入口的任务定义特殊的开始条件实现同步。

4、排他选择(Exclusive Choice )✓ 描述 基于数据或判定,从多个分支路径中只选定一个路径。

✓ 同义词 异或分叉,条件路径,开关,决议。

✓ 例 任务“计算赔偿金”的后继是任务“支付赔偿金”和“联系顾客”中的任一个。

✓ 实现方法a) 工作流引擎提供显式结构实现。

b) 流程设计者选择转移条件。

5、简单合并(Simple Merge )✓ 描述 可选分支聚合而不同步,“合并”在任一输入为真时触发。

✓ 同义词 异或连接,,异步连接,合并。

✓ 例 任务“存档索赔”在任务“支付赔偿金”和“联系顾客”任一完成之后使能。

二 高级分支和同步模式5种:多路选择、多路合并、路径鉴别、M 并N 、同步连接。

1、多重选择(✓ 描述 基于数据或判定,选择一个或多个分支。

✓ 同义词 条件路径,选择,或分叉。

✓ 例任务evaluate_damage 之后执行任务contact_fire_department 或contact_insurance_company ,至少其中之一被执行,也可能两者都被执行。

2、多路合并(Multiple Merge )✓ 描述 并行分支无同步合并。

合并对于每条流入的分支都响应一次(即,图中D 将被实例化两次)。

(比较:简单合并中前件为可选分支)。

✓ 例 并行任务audit_application 及process_application 都后接任务close_case 。

3、路径鉴别器(Discriminator )✓ 描述 无同步合并,合并仅响应一个前驱任务从任务D 被激活之时起,等待所有剩余流入分支的完成并“忽略”它们。

一旦所有的流入分支都完成,鉴别器使自己复位,以便再次触发。

✓ 例 论文评审。

如果第一个评价为负,提示作者不必等待第二个评价。

✓ 实现方法 采用取消任务模式。

只要路径鉴别器后接任务的第一个实例被创建, 仍未完成的分支任务可取消。

Task D 执行后:i 如果B 未完成,则撤消B ii 如果C 未完成,则撤消C● AND 表示前件为并行分支,合并对前件逐一响应4、M 中选N 合并(N-out-of-M Join )✓ 描述 从M 个流入线程中同步N 个线程,合并响应多个前驱任务M 条并行路径聚合到一点,只要其中N 条路径完成则激活后续任务,所有其它剩余路径的完成都被忽略。

所有流入分支都被触发后,该合并使自己复位,以便可被再次触发。

(类似路径鉴别器)✓ 同义词 部分合并,鉴别器,定制合并。

✓ 例 一篇论文送给三个审阅者。

收到两个评审后继续处理论文,第三个评审将被忽略。

5、同步连接(Synchronizing Join )● 不规定前驱事件之间的逻辑关系,A 、B 可为并行流或可选流✓ 描述 同时具有同步并发流及合并可选流的功能。

多条路径聚合成一个线程,若多于一条路径触发,则活动线程需同步。

若仅有一条路径触发,则可选分支收敛,无需同步。

✓ 问题 如何决定何时同步,何时合并。

同步可选流可能导致死锁,合并并发流可能导致OR -join 结构的直接后继任务的多重执行。

✓ 实现方法a) 工作流引擎实现。

若一个同步合并后接一个OR-split ,该 OR-split 可触发多于一条流出转移,不必等到运行时方知同步是否应该发生。

b) 若工作流引擎未实现本模式,则通常的作法是避免明显地使用可能触发多条流出转移的OR-split ,而代之以一个AND-splits 和XOR-splits 的联合。

三 结构化模式2种:任意循环、隐含终止1、任意循环(Arbitrary Cycles )✓ 描述 在流程中,一个或多个任务可被重复执行,允许多入口多出口。

✓ 同义词 循环(loop ), 叠代(iterate), 周期(cycle )。

✓ 实现方法任意循环可通过辅助变量或节点复制转换成结构化循环(单入口、单出口)。

2、隐式终止(Implicit Termination)✓描述流程中无活动任务,且无其它任务可被激活 (流程并非死锁)。

✓问题大多数工作流系统当流程到达一个显性的Final节点时终止流程,任何当前正在运行的任务在流程终止时都将被取消,这可能干扰最终用户。

某些工作流引擎在子流程无任务时隐式结束子流程。

✓实现方法将模型转换成仅有一个终止节点的等价模型。

注:一个包含多实例及隐性终止的模型很难转换成显性终止的模型。

四多实例调用模式4种:设计时已知数目、数目在运行的某刻才能确定、数目无法确知、多实例要求同步。

1、设计时已知实例数目✓描述一个任务被激活多次,实例的个数在设计时已知。

✓例危险材料的申请单要求三次不同的审批。

✓实现方法一个简单的方法是在模型中复制该任务,使用并行执行模式。

2、运行时才知实例数目✓描述给定任务的实例数在指定情形下是一变量,在运行期的某个阶段才已知。

✓例论文评审流程中,任务review_paper被实例化几次取决于论文的内容、受托人的可用性,以及作者的信任度。

✓实现方法a)若存在可能的最大实例数,则用XOR-split选择可能出现的实例数,并触发相应的AND-split。

每一可能出现的实例数对应一个带基数的AND-split。

●实例数≤3的解:XOR分别选择1、2或3个实例缺点:模型变得庞大且复杂。

b)工作流引擎提供一个特殊结构,实例化给定数量的实例。

例如MQSeries/Workflow 中的Bundle 。

使用Bundle结构的解c)利用叠代串行地激活任务的实例。

假设A 后接B 的n个实例,再后接 C:每一个B 的实例后接一个XOR-split,用来确定需要另一B 的实例或者执行C 。

3、无预知实例数目✓描述任务实例化的WHILE循环实例数设计时不知,并且实例被创建之前的任何阶段都无法预知。

✓例100台计算机的订单,供货商数目未知,每一供货商交付的计算机数量未知,因之,交付的总数事先未知。

每次交货后,比较已交付的总数和需求数量来确定是否还有下次交易。

✓实现方法a)利用循环和并行分叉结构,需要工作流引擎支持多实例。

b)创建子流程(subprocess 或subflow ),从主流程中分离且并行执行。

例如, VisualWorkflow 支持Release 结构、I-Flow 支持Chained Process Node.。

c) 若工作流支持孵化子流程, 则可调用子流程——作为流程中任务的一部分。

运行时已知实例数的多实例模式,期望的路径行为通过使其有序执行支持。

4、要求同步的多实例✓ 描述 一个任务的所有实例都完成后才能启动另一任务。

✓ 例预订旅行时,若行程涉及多个航班,则任务book_flight 被执行多次。

只有所有预订完成, 发票才能送往客户。

✓ 实现方法a) 若实例数 (或最大实例数) 设计时已知,那么通过复制任务及使用基本的同步模式可实现多实例的同步。

b) 若工作流语言支持多实例与除非所有任务完成不终止流程的分解, 那么将流程中包含循环生成多实例的子流程放入分解块中,只有任务的所有实例完成后,才能继续执行块。

c) MQSeries/Workflow 的 Bundle 结构可用于同步运行时实例数已知的所有实例。

d) 采用外部触发器,只有任务的每一实例都完成,然后才发送事件。

主流程中应有另一任务等待发送的事件,此任务只有在收到每一实例的所有事件后才能完成。

五 基于状态的模式3种:延期选择、交叉并行路由 、里程碑。

相关主题