开源工作流管理系统jpbm的应用研究

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开源工作流管理系统jpbm的应用研究

摘要:工作流管理系统是支持企业经营过程高效执行并监控其执行过程的计算机软件系统。结合工作流和软件项目开发经验介绍了工作流及其相关概念、jbpm基本知识和运作原理,使读者对jbpm有一个清楚的了解。

关键字:工作流;jbpm;工作流管理系统;工作流引擎

1简介

工作流概念起源于生产组织和办公自动化领域。针对日常工作中具有固定程序的活动提出的一个概念。其目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高办事效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目标[1]。

工作流技术是在上世纪九十年代发展起来的一个新兴研究方向,是近年来计算机应用技术与信息技术领域最具发展潜力的方向之一。工作流管理联盟(WfMC)给出的工作流定义是:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。WfMC还给出了工作流管理系统的定义:工作流管理系统是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先

定义好的工作流逻辑推进工作流实例的执行[5]。

JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。JBPM商务逻辑采用了它自己定义的JBoss jBPM Process definition language (jPdl)。jPdl 认为一个商务流程可以被看作是一个UML状态图。jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换,过图型化的流程定义,直观地描述业务流程。另外它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据存储层解决方案,只要是 Hibernate 支持的数据库, jBPM 也就支持。通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理[2]。

2 系统架构

JBPM作为java程序完全符合javaEE标准;处理流程定义和运行时的流程实例执行。可以用在任何java环境(web 应用程序,Swing应用程序,EJB等等)。采用典型的三层结构,即客户端,应用服务器和数据库。客户端使用的的web浏览器。应用服务器一般采用开源代码的JBoss,tomcat等,jBpm的持久化层用Hibernate实现,可以同任何数据库配置可以部署在任

何应用服务器上,只要是Hibernate支持的数据库管理系统都可以用来访问。JBMP的整体系统结构可细分为五层,分别是浏览器层:通过友好的web接口,分级别地给用户提供不同的业务功能,并提供图形化的显示来描述整个工作流以及工作流的当前执行位置,这里按级别指的是权限级别,例如管理员,普通用户等。Web容器:对客户端的请求进行处理和响应,包括servlet或者Strutsaction的触发,jsp页面的编译等。Session Bean层:使用的是facade 模式,向上以会话EJB的形式提供服务,封装了对数据库的具体操作。数据库映层:Hibernate 提供了对底层数据库的访问和操作。数据库:存储了工作流管理系统的所有相关信息,如节点,活动,事件的信息等等。各层界限清楚,分离明确,只有相邻层产生相互联系和作用[2]。系统结构图如下图图-2

客户端浏览器

应用服务器

Web容器

EJB容器

Hibernate数据库映射

应用数据库

图-1

3 工作流引擎

3.1 工作流引擎运作过程

所谓工作流引擎就是工作流作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。运作过程如下图图-1所示。工作流引擎是工作流执行服务的核心,主要完成:

1、对过程定义进行解释

2、控制过程实例的创建,激活,挂起,终止等

3、控制实例跳转,包括串行、并行操作,工作流相关数据的解释

4、提供支持用户操作的接口

5、维护工作流控制数据和相关数据,在应用和用户之间传递工作流相关数据

6、提供激活外部应用程序和访问工作流相关数据的接口

7、提供控制、管理和监督工作流实例执行情况的功能

图-2

3.2 过程定义

通过运作流程可以看出,工作流的开始、停止等都受过程的控制,所以工作流过程的定义至关重要,在很大的程度上决定了工作流运转模型的解释、流程控制以及执行等。过程定义模型是用来描述工作流模型内在联系的模型。如下图所示。图-3

图-3

对于以上过程定义模型,WfMC 采用了一种基于XML 的规范来描述该过程的。工作流引擎所使用的过程定义语言的规范具体如下:

1.在XML 中,使用作为顶层元素,定义name 属性作为这个过程模型的名称标识,包含了标签和标签。

2.标签定义了模型中的所有活动信息,标签包含若干个子标签。标签标示工作流中的活动结点。标签定义必须定工作流定义 活动 角色 工作流相关数据 需要激活的应用程序 转换条件

义name属性和type属性。根据活动结点的类型划分,将Type属性的值设定为:START,END,AND,OR和PROCESS五种。

3.标签定义模型中的所有活动变迁信息,标签包含若干个标签。标签表示活动结点之问的变迁,必须定义from属性和to 属性,表示变迁的起始活动结点和终止结点,对应着活动结点的name属性。标签可以包含一个标签。标签表示转移的跳转条件,这里可以根据应用实际情况设置不同的条件[3]。

3.3 工作流引擎的应用

和大部分web 应用一样,系统和用户交互是通过表单来实现的。在JBMP中称为活动表单。每个用户登录系统后,系统都要获取该用户的任务列表,获取的方式就是查询令牌对象。现在以发送邮件为例来讲述工作流引擎运转的,当用户输入用户名密码登录到邮箱的界面时,邮件管理系统变开始了邮件流程。当点击“写邮件”即可进行邮件的编辑,编辑页面就是通过一些表单来提交邮件的内容,如邮件主题之类的。当用户点击“发送”的时候,流程便开始处理。流程实例封装了流程的定义、流程启动结束日期等信息,令牌对象也是在这个时候生成的。令牌对象就是用来跟踪流程走向的,它封装了执行到了哪个节点,该状态的参与者是谁等相关信息。在这个过程中引擎还处理邮件发送成功提示,还有诸如接收用户邮箱收到后自动回复等。当接收用户登录时,系统就会自动提示“未读邮件”,在“未读邮件”列表中,发送者的一些如发送人,发送时间,邮件主题等内容列出来。收件人读出邮件,该发送流程结束。在该流程中,没有人的干预,而是在工作流的控制下自动运行。这仅仅是一个简单的例子,在实际应用中有极其广泛重要的应用。

4 JBPM工作流管理系统存在的一些缺陷

首先,规定只能有一个开始节点,虽然变的简单了可是也限制了多开始节点出现的情况。

其次,jbpm依靠标志(Token)来调度和计算,在同一个时刻中,一个进程实例(ProcessInstance)只允许一个标志(Token)对象只存在进程实例一个节点(Node)中(分支当然用Child Token对象处理)。所以本质上就不支持“multi-instance”模式[4]。

还有,jbpm作为一款开源的工作流引擎,其更多的是关注“如何辅助你更容易的让流程运行完成”,但是并不记录“流程运行的历史和轨迹”。这一点可能是东西方文化的差异性所在,因为国内的流程应用,比较关注“运行轨迹”[4]。

5 结束语

相关文档
最新文档