基于J2EE的柔性工作流引擎的设计与实现

来源:互联网 发布:心理学入门书籍知乎 编辑:程序博客网 时间:2024/04/27 17:08
 
摘要 工作流的柔性问题日益成为研究的热点,本文在分析工作流和分布式计算技术J2EE的基础上,给出一个基于J2EE的柔性工作流引擎的设计方案及其关键部分的实现技术。
关键词 工作流引擎,柔性,J2EE
 
 
1 引言
  在一个企业或部门的日常活动中,70%以上属于流程类的活动,如生产流程,各类申请表单,订单出货,公务签审等,不难得出这样的结论,如果要提高企业效率,就必须通过一定的技术手段将这些流程自动化,并对其进行有效的管理,使之协调工作,这就必须使用工作流的有关技术。工作流指整个或部分经营过程在计算机支持下,实现全自动或半自动化,因此可以看出工作流技术为企业更好的提高办事效率,提高生产成本,提高企业的竞争力提供了先进的技术手段。目前的工作流的运行模式比较适合流程的执行逻辑事先可以确定的情况,而在企业中存在着大量的执行逻辑无法事先确定的半结构化和非结构化的流程过程,这种集中式的定义方式和执行过程就成为一种低效的过程。这种静态模型定义的方式,使得工作流系统不能灵活地根据实际情况进行工作流逻辑的更改,不能适应企业经营过程的变化,不能响应市场敏捷性的要求,因此实现工作流引擎的柔性是至关重要的。本文将介绍一种基于J2EE的柔性工作流引擎的设计与实现技术。
2  工作流参考模型
  工作流管理联盟(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用于管理和监视工作流引擎。
3  J2EE技术
  J2EE(Java2 Enterprise Edition)是SUN公司把企业用户、厂商及技术专家聚集到JCP(Java Community Process),开发的企业级Java API标准,是一种利用Java 2平台来简化企业解决方案的开发、部署和管理等复杂问题的体系结构,属于分布式计算平台的一种。其不仅巩固了标准版中的许多优点,如“Write Once,Run Anywhere”的特性、方便存取数据库的JDBC API以及能够在Internet应用中保护数据的安全模式等,同时还提供了对 EJB(Enterprise JavaBeans)、Servlets、JSP(Java Server Pages)以及XML技术的全面支持。同目前流行的其它分布式计算平台比较,J2EE在可重用性、安全服务、跨平台性性能、事务处理能力、组件间的通信等性能上均占有优势。我们设计引擎所用到的核心技术有:
3.1   EJB (Enterprise JavaBean)
  是一种服务器端组件体系结构,简化了Java企业级开发的分布式组件应用程序的过程。按EJB3.0规范,分为三类,会话Bean (Session Bean):模拟商务过程和执行动作,实现SessionBean接口。实体Bean(Entity Bean):模拟商务数据,代表持久状态的Java对象,用于持久化数据,包含核心商务数据,实现EntityBean接口。一个实体Bean操作数据库中的一个实体(即数据库中的一个表),封装与数据库相关的操作,用于提供数据库中的数据记录在EJB服务器中的对象类型视图。消息驱动Bean,与会话Bean类似,代表动作,是Java消息服务(JMS)和EJB的一个有用组合,是无状态的,由容器在消息到达时调用。
3.2   Java RMI(Remote Method Invoke)
  远程方法调用,是实现Java对象间的远程通信。服务器用注册器把一个名字和远程对象绑在一起,客户机通过名字从服务器注册器上查找远程对象,找到后下载远程对象的本地代理,调用远程对象的方法。
3.3   JNDI(Java Naming and Directory Interface)
  Java命名和目录接口,为分布式系统访问远程对象提供了一个标准的命名接口。EJB主接口对象、数据源、消息服务器等都可以用JDNI树的形式注册到名称服务器中,调用它们的对象通过符合JDNI的程序接口在JNDI名称服务器中查找指定名称的远程对象。
3.4 JMS(Java Message Service)
  Java消息服务,为开发消息中间件应用程序定义了一套规范,Java客户端和Java中间层访问消息系统只要实现JMS定义的简单的接口,就可以实现复杂的应用,而不必去关注低级的技术细节。
柔性工作流引擎的体系结构
4.1 工作流引擎
  是工作流系统中枢,实现工作流模型解释识别并转换为自定义模型,为工作流实例提供运行时的执行环境,包括实例的创建,激活,挂起,终止,并按定义流程和数据信息导航推进实例。因此,工作流引擎设计的好坏直接关系到工作流的执行效率与可扩展性,进而影响到工作流系统的柔性以至企业的办事效率及在市场中的竞争力。其功能包括:解释过程定义;控制过程实例的创建、激活、挂起、终止;为过程的活动导航,一般包含顺序或平行的操作、最后时间期限、对工作流相关数据进行解释;参与者签名和退出;确定任务项目,实现用户意图,提供接口,支持用户交互;维护工作流控制和工作流相关数据,在应用程序间或用户间传递工作流相关数据;提供调用外部程序的接口,连接所有工作流相关数据;提供控制、管理和审查功能。
4.2 柔性
  是指在工作流程不中断执行的情况下可以改变其执行路径、有适应能力。柔性可以分为两种:选择柔性,是在工作流建模阶段对可预见的情形进行说明定义,从而给用户提供一定的自由度,工作流有许多可以替代的有效途径,每一条途径都是正确的,只是不同的情况下执行的途径不同;适应柔性,是在工作流执行期间允许用户对工作流程进行各种适应性的调整或更改,是工作流引擎可以根据具体情况灵活地改变其途径,动态指定流程流向,临时决定任务执行者等。其中适应柔性根据对工作流产生影响的时间的不同,又可以分为模型调整和实例调整两类:模型调整指对工作流的修改不影响当前运行的流程,除非整个流程从头开始重新运行;而实例调整则意味着对工作流的修改,即时生效,其要求动态改变运行中的工作流。
4.3 柔性工作流引擎的结构
  采用分层技术实现,在J2EE组件开发中,按功能可分为四层。
  第一层是用户接口层。实现工作流引擎与用户交互功能,如用户登陆验证,任务列表查询,过程实例创建及实例状态监控等,只提供引擎与外部交互能力,需要的数据从引擎的第三层和第四层获得,是用户调用工作流引擎的外部接口。
  第二层是动态控制层。工作流系统的柔性主要体现在这层:(1)实现在系统的运行是有权限的用户可以根据需要修改或补充定义原来工作流的模型;(2) 有权限的用户在工作流执行中可以动态修改工作流实例数据,动态指定工作流的流向,临时指定任务执行者或设置任务的完成时间等各种属性,并负责将信息传递到第四层。
  第三层是过程实例层。用于描述工作流实例信息,提供工作流实例运行态的信息,如当前实例运行状态,活动的完成情况等。该层信息具有实时性,只涉及到与过程实例相关数据,没有涉及到工作流过程定义数据,当需要由实时信息实现过程实例推进时,调用下层过程定义逻辑导航实例运行。
  第四层是模型层。该层的主要功能(1) 描述引擎内部自定义工作流的模型和工作流过程定义用到的组件,能够识别外部过程定义,并且根据内部活动间逻辑驱动关系实现对工作流实例运行控制,同时根据过程运行中的实时参数推进过程执行;(2) 接受第二层传递过来的数据,并对工作流模型进行相应的修改,并且对第三层的工作流实例信息进行相应的更新。该层是四层结构的核心部分。
关键部分的实现技术
5.1 工作流过程定义接口
  2002年WfMC提出的新接口描述规范XPDL(XML Process Definition Language ),工作流引擎采用 JAXB(Java Architecture for XML Binding )技术处理Schema, 识别出这个Schema,处理符合XPDL规范的模型描述文件,由于XML标准为高度可移植性和可重用文档中的各种数据提供了标准的描述机制,使得数据更易于移植到任何计算机或软件包,只要企业的工作流系统能够解析XML文档,将其中的元素转换成自己的工作流流程模型,就能达到不同企业工作流系统共享工作流信息和协同工作,因此这里把XML作为模型描述语言,用XML schema 定义和描述XML模型文档结构和内容模式。
5.2 用户接口层
  采用Model-View-Controller(MVC)模式,在该模式中Servlet充当Controller角色,负责处理请求与页面流转,JSP充当View角色,它是数据表现层,生成用户显示界面. 这部分主要是响应Servlet功能调用,实现特定业务功能由工作流引擎通过JMS技术调用相应的EJB组件完成。
5.3 企业遗留系统接口实现
  通过RMI技术工作流引擎与企业遗留系统通信,使企业遗留系统成为工作流引擎可管理的对象,供工作流引擎调用,提高了工作流系统的可扩展性和系统的柔性。
5.4 数据库接口实现
  在与数据库通信时采用连接池技术、用JNDI获得数据源并通过DataSource连接工厂与数据库连接,可以提高工作流引擎访问数据库的效率、操作的灵活性且增强安全性。Oracle 数据库本身就具有事务处理能力,而且安全性健壮性能良好,在一定程度上保证了整个系统的数据安全性和一致性. 因此这里采用数据库ORACLE9i,管理工作流相关数据。
结束语
  通过采用J2EE,XML,ORACLE数据库技术,设计并实现了柔性工作流引擎,使得工作流管理系统在执行阶段的可以动态的修改,提高了工作流管理系统在企业应用中的自适用性,并且应用到PDM(Product Data Management)系统中,使得整个PDM系统在工作流的驱动下,各个功能模块,如文档管理,产品结构和配置,项目管理,形成一个相互协作的有机的整体,从而增强了企业的应变能力,提高了企业的工作效率和竞争力。但在工作流对于长事务处理能力以及复杂的子流程方面需进一步研究。
 
 
参考文献:
[1] WfMC. Workflow Management Coalition Specification: Terminology & Glossary. Document Number     WFMC-TC-1011, Brussels, 1996
[2] Petra H,Stefan H,Stefan J,Jens N,Katrin S,Michael T. A comprehensive approach to flexibility in workflow management systems[J].In: Software Engineering Notes,1999
[3] 范玉顺.工作流管理技术基础[M].北京:清华大学出版社,2001
[4] 任少军,黄光球等.一种基于J2EE技术的工作流管理系统的实现  信息技术 第28卷第2期  2004年2月
[5] 何鹤立,倪小平等.工作流管理系统的柔性技术  计算机工程 2004年3月 第30卷第6期  
[6] 张洪山, 殷人昆 等.基于WEB的工作流引擎设计  计算机工程 2004年2月 第30卷第4期
[7] 朱文华  王茜. 企业动态联盟中柔性工作流的研究与实现 小型微型计算机系统  2003年4月第24卷第4期
[8] 李伟,李青.基于J2EE的工作流管理系统框架研究与实现管控一体化http://www.autocontrol.cn
原创粉丝点击