基于迁移策略的动态工作流的研究与设计
2014-03-22谭巍巍李先国
谭巍巍 李先国
摘 要: 为了使工作流系统能够在运行过程中支持过程定义的动态可变,探讨工作流在过程方面发生动态修改的分类,分析重启、继续执行、迁移等多种动态修改策略的优缺点,重点研究了迁移策略的实现,提出了一种基于迁移策略的动态工作流的设计方法。该方法首先加载数据表中的过程定义信息,并根据反射机制动态创建相应的工作流对象及其方法。然后设计了一种迁移策略执行算法,根据迁移规则XML配置文件,动态完成运行时的旧工作流到新工作流的转换,从而提高了工作流系统的动态性。
关键字: 工作流; 动态工作流; 修改策略; 状态迁移策略
中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2014)06?0062?03
工作流的概念最早出现在生产组织和办公自动化等领域,这是由于这些领域日常的工作流程都是具有固定的流程,为了提高工作效率提出了工作流的概念,它是将工作分解成分工明确的任务或角色,不同角色之间按照一定的规则和顺序来执行这些任务[1],这样就能够达到提高工作效率、提高企业管理水平和企业竞争力的目的。早期的工作流管理系统是在软件设计阶段完成过程定义的设计,系统执行期间用户只需按照步骤完成操作,然而,一旦工作流系统启动后,工作流的执行过程就不会发生改变,只能根据事先定义的流程进行,需要改变工作流程时就必须重新进行软件设计,造成资源浪费。随着科学技术和市场经济的不断发展,多数企业处于一个快速连续变化的环境中,他们的业务过程也在持续不断的变化,企业希望他们的信息系统能够快速地应对这种动态性变化,但是传统工作流系统一旦启用后不能再发生任何改变,仅仅依靠前期的一次静态定义已经不能满足现代企业的需求。动态工作流的概念就是为了解决这一问题而提出的。
1 动态工作流概述
一个发布并开始执行的工作流系统包含特定的工作流程,流程对应现实的工作过程。然而,这个现实过程会因为实际情况发生改变,这时就需要对计算机中的工作流程进行改变。这种能够根据实际情况改变工作流程的计算机系统就称之为动态工作流系统[2?4]。动态工作流主要体现的是动态修改,同时,修改发生时需要有一定的修改策略,下面是对修改的不同类型以及修改策略的分析。
1.1 动态修改分类
工作流在运行期间可能发生多种方面的动态修改,本文主要从过程的动态修改方面研究,常见的动态修改有以下3种形式[5?6]:
(1) 任务的增加或删除(如A、B两个连续的任务之间增加新的任务C);
(2) 任务被其他一些任务替换(如原有的任务A换为任务B);
(3) 任务的执行顺序改变(如两个任务的执行顺序颠倒、串行的任务变为并行)。
1.2 修改策略分析
当过程定义变更发生时,它有可能影响运行中的案例,工作流引擎需要对这一变化进行快速响应,工作流要完成从旧的过程定义到新的过程定义的修改策略,常见的修改策略有[7?9]:
(1) 重启:丢弃运行中的工作流实例,按照新过程定义重新启动一个工作流实例;但是这种策略由于要丢掉正在运行的实例,会造成大量资源浪费,这需要付出很大代价。
(2) 继续执行:正在运行的实例不做任何处理,继续执行原有的流程,新启动的实例执行新版本的实例;这种策略对于实际发生的变化不能快速响应,缺少灵活性,也就缺少了动态修改的意义。
(3) 迁移:将正在运行的工作流实例按照某种规则转换到新的过程定义中继续执行;这种策略能够快速应对实际发生的变化,使用这种策略最能体现动态性,也是本文研究动态工作流修改策略的重点。
2 系统设计
工作流系统是通过人与计算机协同工作的管理系统,它辅助人来完成具有特定流程的工作,因此,本设计的工作流系统首要职责是它能够帮助用户定义的工作流程;还包含工作流过程定义的制定;指定过程定义的实施,用户能够使用制定后的工作流程;以及废弃的工作流过程定义的删除与备份。其次,它具有动态性,现实的工作过程发生改变,管理员用户可以通过管理员界面修改系统正在运行的工作流模型,提交修改后的工作流,工作流系统将这个新工作流模型动态实施新的工作流实例以及正在运行中的实例中。
2.1 系统结构
为了实现工作流系统的动态性,参考了工作流管理联盟提供的参考模型,以.NET框架为基础,采用3层体系结构设计而成,系统结构如图1所示。
2.2 表示层
表示层是用户界面,分为2种:普通用户界面和管理用户界面。普通用户界面是工作流程的显示界面,主要面向的是普通用户,普通用户使用这个界面完成正常的工作流程;管理用户界面是工作流系统的实例和过程定义的管理界面,是面向管理员用户的,管理员通过这个界面来定制、实施、修改、删除工作流过程定义,还能管理正在实施的工作流实例及查询已经完成的工作流实例。
2.3 业务逻辑层
该层主要包括工作流执行服务以及基础业务2个部分。工作流执行服务部分完成工作流管理的功能;基础业务部分完成辅助功能,下面是这两层的具体设计。
(1) 工作流执行服务。工作流执行服务是用户与工作流引擎之间的桥梁,它实现了用户界面与工作流引擎的分离,它负责管理工作流实例和响应用户服务请求,是整个工作流管理系统的心脏,其主要功能如下:
① 与外部资源交互完成各项活动,为用户提供应用接口,接收用户的服务请求并做出响应;
② 实例化工作流引擎,根据用户的工作流服务申请查找工作流表,得到工作流关联的类名,使用C#反射机制创建对象;
③ 管理运行中的工作流实例,包括异常结束的工作流实例处理,结束后的工作流实例的资源释放等。
(2) 基础服务。基础服务部分不是工作流管理系统的一部分,它是与实际工作的执行相关联的,包含实际工作中的应用、配置文件与数据库等,他们由工作流引擎调用完成工作流过程定义的所有任务。
2.4 数据访问层
数据访问层主要为系统提供与数据库之间的链接和操作功能。
3 关键技术
3.1 数据库设计
工作流系统的过程定义数据是在数据库中存储,数据库主要包括工作流表、状态表、状态转换表、用户组表、用户表、工作流历史表、状态历史表等几个表,表间关系如图2所示。
3.2 工作流引擎设计
工作流引擎是工作流系统的核心,工作流程的执行部分,它在正确的时间把正确的信息传递给正确的资源来执行,提供完成案例所需的后勤支持功能。有以下几个子模块组成:
① 解析工作流:从数据库中读出引擎需要的状态,状态转换,操作权用户等信息。
② 流程控制:控制工作流在正确的时间执行正确的操作,实现工作流整个流程与过程定义一致性执行,其主要包括工作流节点控制、转移控制以及状态控制。工作流实例在整个生命周期中会根据不同的资源情况,数据情况等工作在不同的状态中,这些状态控制工作流的执行,这些状态有:初始状态、运行状态、挂起状态、终止状态、完成状态[10]。
③ 信息记录:记录工作流运行历史,并将其写入工作流历史表和状态历史表。
④ 任务调度:基于反射机制实现,动态调用基础业务中的方法完成流程任务。
用户申请工作流的执行过程如图3所示。
3.3 工作流修改服务设计
工作流修改服务是工作流系统完成动态修改的核心部分,响应管理用户在工作流动态修改界面发来的工作流修改请求,将新的工作流过程定义数据加入到数据库中,同时在管理用户的协同工作下完成迁移规则的设定,得到迁移规则,其中旧工作流的每一个状态都有一个与之对应的新工作流中的状态,可以一个对多个,但是不能多对一或多对多,规则以XML格式描述,描述如下:
调用工作流引擎中的流程控制挂起工作流实例,查看当前工作流运行所处的状态,根据迁移规则得到迁移状态ID(新过程定义对应的状态),调用解析模块从数据库中加载迁移状态信息,流程控制将工作流设置为运行,之后沿用新的过程定义完成工作流实例。动态修改发生时系统执行过程如图4所示。
4 结 语
本文研究的动态工作流是以状态以及状态转换为基础,通过管理员用户与计算机协同完成迁移规则制定,使旧过程定义的状态与新过程定义中的状态一一对应,能够快速准确地完成工作流实例从旧工作流到新工作流的转换,极大地提高了工作流系统的动态性。
参考文献
[1] WFMC. Workflow management coalition terminology and glossary (WfMC?TC?1011) [EB/OL]. [1999?01?01]. http://www.amazon.com/Workflow?Management?Coalition?Terminol.
[2] ELLIS C, KEDDARA K, ROZENBERG G. Dynamic change within workflow systems [C]// Proceedings of the Conference on Organizational Computing System. New York, NY, USA: ACM Press, 1995: 10?21.
[3] KRADOLFERM G A. Dynamic workflow schema evolution based on workflow type versioning and workflow migration [C]// Proceedings of the 4th IFCIS International Conference on Cooperative Information Systems. Edinburgh, Scotland: IEEE Computer Society, 1999: 104?111.
[4] 周明天,王敏毅,姚绍文.一种基于扩展任务模型结构的工作流实例迁移方法[J].软件学报,2003,14(4):757?763.
[5] 万欣,刘强.工作流平台中动态流程模型的研究[J].计算机应用研究,2006,23(9):69?71.
[6] 王建民,闻立杰.工作流管理:模型、方法和系统[M].北京:清华大学出版社,2004.
[7] 管昌生,蔡瑾.基于角色的动态工作流技术的研究[J].计算机与数字工程,2009,37(1):77?80.
[8] 黄贤明,胡志刚.动态工作流研究[J].计算机与现代化,2009(8):174?177.
[9] 路春光,孟丽丽.基于Web的柔性工作流引擎的设计[J].微计算机信息,2006,22(15):21?23.
[10] 于可欣,齐璇.MINI工作流管理系统引擎的设计与实现[J].计算机工程与科学,2005,27(5):88?90.
2.4 数据访问层
数据访问层主要为系统提供与数据库之间的链接和操作功能。
3 关键技术
3.1 数据库设计
工作流系统的过程定义数据是在数据库中存储,数据库主要包括工作流表、状态表、状态转换表、用户组表、用户表、工作流历史表、状态历史表等几个表,表间关系如图2所示。
3.2 工作流引擎设计
工作流引擎是工作流系统的核心,工作流程的执行部分,它在正确的时间把正确的信息传递给正确的资源来执行,提供完成案例所需的后勤支持功能。有以下几个子模块组成:
① 解析工作流:从数据库中读出引擎需要的状态,状态转换,操作权用户等信息。
② 流程控制:控制工作流在正确的时间执行正确的操作,实现工作流整个流程与过程定义一致性执行,其主要包括工作流节点控制、转移控制以及状态控制。工作流实例在整个生命周期中会根据不同的资源情况,数据情况等工作在不同的状态中,这些状态控制工作流的执行,这些状态有:初始状态、运行状态、挂起状态、终止状态、完成状态[10]。
③ 信息记录:记录工作流运行历史,并将其写入工作流历史表和状态历史表。
④ 任务调度:基于反射机制实现,动态调用基础业务中的方法完成流程任务。
用户申请工作流的执行过程如图3所示。
3.3 工作流修改服务设计
工作流修改服务是工作流系统完成动态修改的核心部分,响应管理用户在工作流动态修改界面发来的工作流修改请求,将新的工作流过程定义数据加入到数据库中,同时在管理用户的协同工作下完成迁移规则的设定,得到迁移规则,其中旧工作流的每一个状态都有一个与之对应的新工作流中的状态,可以一个对多个,但是不能多对一或多对多,规则以XML格式描述,描述如下:
调用工作流引擎中的流程控制挂起工作流实例,查看当前工作流运行所处的状态,根据迁移规则得到迁移状态ID(新过程定义对应的状态),调用解析模块从数据库中加载迁移状态信息,流程控制将工作流设置为运行,之后沿用新的过程定义完成工作流实例。动态修改发生时系统执行过程如图4所示。
4 结 语
本文研究的动态工作流是以状态以及状态转换为基础,通过管理员用户与计算机协同完成迁移规则制定,使旧过程定义的状态与新过程定义中的状态一一对应,能够快速准确地完成工作流实例从旧工作流到新工作流的转换,极大地提高了工作流系统的动态性。
参考文献
[1] WFMC. Workflow management coalition terminology and glossary (WfMC?TC?1011) [EB/OL]. [1999?01?01]. http://www.amazon.com/Workflow?Management?Coalition?Terminol.
[2] ELLIS C, KEDDARA K, ROZENBERG G. Dynamic change within workflow systems [C]// Proceedings of the Conference on Organizational Computing System. New York, NY, USA: ACM Press, 1995: 10?21.
[3] KRADOLFERM G A. Dynamic workflow schema evolution based on workflow type versioning and workflow migration [C]// Proceedings of the 4th IFCIS International Conference on Cooperative Information Systems. Edinburgh, Scotland: IEEE Computer Society, 1999: 104?111.
[4] 周明天,王敏毅,姚绍文.一种基于扩展任务模型结构的工作流实例迁移方法[J].软件学报,2003,14(4):757?763.
[5] 万欣,刘强.工作流平台中动态流程模型的研究[J].计算机应用研究,2006,23(9):69?71.
[6] 王建民,闻立杰.工作流管理:模型、方法和系统[M].北京:清华大学出版社,2004.
[7] 管昌生,蔡瑾.基于角色的动态工作流技术的研究[J].计算机与数字工程,2009,37(1):77?80.
[8] 黄贤明,胡志刚.动态工作流研究[J].计算机与现代化,2009(8):174?177.
[9] 路春光,孟丽丽.基于Web的柔性工作流引擎的设计[J].微计算机信息,2006,22(15):21?23.
[10] 于可欣,齐璇.MINI工作流管理系统引擎的设计与实现[J].计算机工程与科学,2005,27(5):88?90.
2.4 数据访问层
数据访问层主要为系统提供与数据库之间的链接和操作功能。
3 关键技术
3.1 数据库设计
工作流系统的过程定义数据是在数据库中存储,数据库主要包括工作流表、状态表、状态转换表、用户组表、用户表、工作流历史表、状态历史表等几个表,表间关系如图2所示。
3.2 工作流引擎设计
工作流引擎是工作流系统的核心,工作流程的执行部分,它在正确的时间把正确的信息传递给正确的资源来执行,提供完成案例所需的后勤支持功能。有以下几个子模块组成:
① 解析工作流:从数据库中读出引擎需要的状态,状态转换,操作权用户等信息。
② 流程控制:控制工作流在正确的时间执行正确的操作,实现工作流整个流程与过程定义一致性执行,其主要包括工作流节点控制、转移控制以及状态控制。工作流实例在整个生命周期中会根据不同的资源情况,数据情况等工作在不同的状态中,这些状态控制工作流的执行,这些状态有:初始状态、运行状态、挂起状态、终止状态、完成状态[10]。
③ 信息记录:记录工作流运行历史,并将其写入工作流历史表和状态历史表。
④ 任务调度:基于反射机制实现,动态调用基础业务中的方法完成流程任务。
用户申请工作流的执行过程如图3所示。
3.3 工作流修改服务设计
工作流修改服务是工作流系统完成动态修改的核心部分,响应管理用户在工作流动态修改界面发来的工作流修改请求,将新的工作流过程定义数据加入到数据库中,同时在管理用户的协同工作下完成迁移规则的设定,得到迁移规则,其中旧工作流的每一个状态都有一个与之对应的新工作流中的状态,可以一个对多个,但是不能多对一或多对多,规则以XML格式描述,描述如下:
调用工作流引擎中的流程控制挂起工作流实例,查看当前工作流运行所处的状态,根据迁移规则得到迁移状态ID(新过程定义对应的状态),调用解析模块从数据库中加载迁移状态信息,流程控制将工作流设置为运行,之后沿用新的过程定义完成工作流实例。动态修改发生时系统执行过程如图4所示。
4 结 语
本文研究的动态工作流是以状态以及状态转换为基础,通过管理员用户与计算机协同完成迁移规则制定,使旧过程定义的状态与新过程定义中的状态一一对应,能够快速准确地完成工作流实例从旧工作流到新工作流的转换,极大地提高了工作流系统的动态性。
参考文献
[1] WFMC. Workflow management coalition terminology and glossary (WfMC?TC?1011) [EB/OL]. [1999?01?01]. http://www.amazon.com/Workflow?Management?Coalition?Terminol.
[2] ELLIS C, KEDDARA K, ROZENBERG G. Dynamic change within workflow systems [C]// Proceedings of the Conference on Organizational Computing System. New York, NY, USA: ACM Press, 1995: 10?21.
[3] KRADOLFERM G A. Dynamic workflow schema evolution based on workflow type versioning and workflow migration [C]// Proceedings of the 4th IFCIS International Conference on Cooperative Information Systems. Edinburgh, Scotland: IEEE Computer Society, 1999: 104?111.
[4] 周明天,王敏毅,姚绍文.一种基于扩展任务模型结构的工作流实例迁移方法[J].软件学报,2003,14(4):757?763.
[5] 万欣,刘强.工作流平台中动态流程模型的研究[J].计算机应用研究,2006,23(9):69?71.
[6] 王建民,闻立杰.工作流管理:模型、方法和系统[M].北京:清华大学出版社,2004.
[7] 管昌生,蔡瑾.基于角色的动态工作流技术的研究[J].计算机与数字工程,2009,37(1):77?80.
[8] 黄贤明,胡志刚.动态工作流研究[J].计算机与现代化,2009(8):174?177.
[9] 路春光,孟丽丽.基于Web的柔性工作流引擎的设计[J].微计算机信息,2006,22(15):21?23.
[10] 于可欣,齐璇.MINI工作流管理系统引擎的设计与实现[J].计算机工程与科学,2005,27(5):88?90.