工作流引擎的设计与实现

工作流参考模型
  工作流管理联盟(WfMC)给出的工作流参考模型如图1所示。

图1工作流参考模型
  1) Work Flow Enactment Service
  工作流执行服务:由一个或多个工作流引擎组成,为工作流实例提供运行时期的执行环境的软件服务器。
  2)Process Definition Tool
  过程定义工具:用图形化的方式定义工作流、构造工作流模型,通过接口1与引擎通信。
  3)Work Flow Client Application
  工作流的客户应用:由用户结合业务需求而开发,用它来驱动工作流。客户端程序通过接口2与引擎交互。一般的工作流引擎用户不需要懂引擎的实现,只要知道怎么实现客户端程序就可以了。
  4)Invoked Applications
  工作流直接调用的应用:在工作流运作的过程中,可能需要调用工作流引擎之外的功能,这时可通过定义好的接口3来完成。
  5)Other Work Flow Enactment Service
  其它工作流执行服务:接口4用于工作流引擎与其他工作流引擎的协作。
  6)Administration and Monitoring Tools
  工作流管理工具:接口5用于管理和监视工作流引擎。 
工作流引擎
  是工作流系统中枢,实现工作流模型解释识别并转换为自定义模型,为工作流实例提供运行时的执行环境,包括实例的创建,激活,挂起,终止,并按定义流程和数据信息导航推进实例。因此,工作流引擎设计的好坏直接关系到工作流的执行效率与可扩展性,进而影响到工作流系统的柔性以至企业的办事效率及在市场中的竞争力。其功能包括:解释过程定义;控制过程实例的创建、激活、挂起、终止;为过程的活动导航,一般包含顺序或平行的操作、最后时间期限、对工作流相关数据进行解释;参与者签名和退出;确定任务项目,实现用户意图,提供接口,支持用户交互;维护工作流控制和工作流相关数据,在应用程序间或用户间传递工作流相关数据;提供调用外部程序的接口,连接所有工作流相关数据;提供控制、管理和审查功能。
 柔性
  是指在工作流程不中断执行的情况下可以改变其执行路径、有适应能力。柔性可以分为两种:选择柔性,是在工作流建模阶段对可预见的情形进行说明定义,从而给用户提供一定的自由度,工作流有许多可以替代的有效途径,每一条途径都是正确的,只是不同的情况下执行的途径不同;适应柔性,是在工作流执行期间允许用户对工作流程进行各种适应性的调整或更改,是工作流引擎可以根据具体情况灵活地改变其途径,动态指定流程流向,临时决定任务执行者等。其中适应柔性根据对工作流产生影响的时间的不同,又可以分为模型调整和实例调整两类:模型调整指对工作流的修改不影响当前运行的流程,除非整个流程从头开始重新运行;而实例调整则意味着对工作流的修改,即时生效,其要求动态改变运行中的工作流。
 柔性工作流引擎的结构
  采用分层技术实现,在J2EE组件开发中,按功能可分为四层。
  第一层是用户接口层。实现工作流引擎与用户交互功能,如用户登陆验证,任务列表查询,过程实例创建及实例状态监控等,只提供引擎与外部交互能力,需要的数据从引擎的第三层和第四层获得,是用户调用工作流引擎的外部接口。
  第二层是动态控制层。工作流系统的柔性主要体现在这层:(1)实现在系统的运行是有权限的用户可以根据需要修改或补充定义原来工作流的模型;(2) 有权限的用户在工作流执行中可以动态修改工作流实例数据,动态指定工作流的流向,临时指定任务执行者或设置任务的完成时间等各种属性,并负责将信息传递到第四层。
  第三层是过程实例层。用于描述工作流实例信息,提供工作流实例运行态的信息,如当前实例运行状态,活动的完成情况等。该层信息具有实时性,只涉及到与过程实例相关数据,没有涉及到工作流过程定义数据,当需要由实时信息实现过程实例推进时,调用下层过程定义逻辑导航实例运行。
  第四层是模型层。该层的主要功能(1) 描述引擎内部自定义工作流的模型和工作流过程定义用到的组件,能够识别外部过程定义,并且根据内部活动间逻辑驱动关系实现对工作流实例运行控制,同时根据过程运行中的实时参数推进过程执行;(2) 接受第二层传递过来的数据,并对工作流模型进行相应的修改,并且对第三层的工作流实例信息进行相应的更新。该层是四层结构的核心部分。
关键部分的实现技术
 工作流过程定义接口
  2002年WfMC提出的新接口描述规范XPDL(XML Process Definition Language ),工作流引擎采用 JAXB(Java Architecture for XML Binding )技术处理Schema, 识别出这个Schema,处理符合XPDL规范的模型描述文件,由于XML标准为高度可移植性和可重用文档中的各种数据提供了标准的描述机制,使得数据更易于移植到任何计算机或软件包,只要企业的工作流系统能够解析XML文档,将其中的元素转换成自己的工作流流程模型,就能达到不同企业工作流系统共享工作流信息和协同工作,因此这里把XML作为模型描述语言,用XML schema 定义和描述XML模型文档结构和内容模式。
用户接口层
  采用Model-View-Controller(MVC)模式,在该模式中Servlet充当Controller角色,负责处理请求与页面流转,JSP充当View角色,它是数据表现层,生成用户显示界面. 这部分主要是响应Servlet功能调用,实现特定业务功能由工作流引擎通过JMS技术调用相应的EJB组件完成。
企业遗留系统接口实现
  通过RMI技术工作流引擎与企业遗留系统通信,使企业遗留系统成为工作流引擎可管理的对象,供工作流引擎调用,提高了工作流系统的可扩展性和系统的柔性。
数据库接口实现
  在与数据库通信时采用连接池技术、用JNDI获得数据源并通过DataSource连接工厂与数据库连接,可以提高工作流引擎访问数据库的效率、操作的灵活性且增强安全性。Oracle 数据库本身就具有事务处理能力,而且安全性健壮性能良好,在一定程度上保证了整个系统的数据安全性和一致性. 因此这里采用数据库ORACLE9i,管理工作流相关数据。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值