浅谈JBPM工作流_jbpm工作流

2020-02-28 其他范文 下载本文

浅谈JBPM工作流由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“jbpm工作流”。

浅谈JBPM工作流

摘要:本文介绍了工作流的定义,并着重对JBPM工作流的核心组件、体系结构、流程调度等进行了详尽的介绍,以期完成对基于JBPM工作流技术的软件系统研发工作的理论探讨。

关键词:工作流;JBPM;组件;流程调度

工作流研究起源于20世纪70年代,早期的工作流源起办公自动化。1962年,工作流开始使用Petri网来作为流程建模的描述手段,Petri被认为是所有流程定义语言之母。到80年代适,商用工作流(FileNet等)开始基于图像处理和文档管理,直到1993年,工作流管理联盟的成立标志着工作流技术比较成熟了。

JBPM于2002年发起,到现在已经有发布了5.0版本。与JBPM3相比,JBPM4引入了流程虚拟机(PVM)同时增加了业务流程管理系统(BPMS)的特性,它不只是一个工作流系统,而是开始走向BPMS。而JBPM5完全抛弃了JBPM4的代码,所有代码都来自原先的Drools Flow。因此,本文选择了纯JPBM工作流引擎JBPM3。

1.1 工作流的定义

工作流管理联盟(Workflow Management Coalition,WfMC),给出了工作流定义为:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。除了WfMC以外,Georgakopotllo、IBM Almeden研究中心等也从不同的角度对工作流进行了定义。这些定义都是非形式化语言描述,说明工作流是使用计算机实现的经营过程,而工作流管理系统是实现这个过程的一套软件。

本文中笔者做如下定义:“工作流是一种反映业务流程的计算机化的模型,是为了实现某个经营过程利用计算机在多个参与者之间,按照预定规则自动流转的可由工作流管理系统执行的业务模型。”

1.2 JBPM简介

JBPM是一个基于Java EE的轻量级工作流管理系统,是一个灵活的、可扩展的并能实现工作流的企业级开发框架,提供了流程定义、部署、执行和管理等功能。它具只有很小的依赖性,可以作为Java库与使用任何数据库部署在任何应用服务器上。

JBPM的核心工作流和BPM功能被封装成一个Java库,其中包含了Jbpm-Server、Jbpm-Designer、Jbpm-DB、Jbpm核心组件和Jbpm-Bpel五个部分。Jbpm-Server是一个预先配置好的Jbo应用服务器,Jbpm-Designer是一个基于Eclipse的流程图形化设计插件,Jbpm-DB包括了JBPM所有兼容数据库的JDBC驱动程序和数据库初始化脚本,Jbpm核心组件是一个用来管理流程定义和支持流程实例执行的运行时环境,Jbpm-Bpel是一个独立扩展包,使JBPM可以支持BPEL(一种扩展的XML脚本语言)。

JBPM使用JPDL流程定义语言来表示业务流程,使用Jbpm-Designer图形流程设计器来设计业务流程。Jbpm-Designer使业务分析员和技术开发人员都可以对业务流程进行设计和调整,使得业务流程建模和实际业务执行转换非常容易。

JBPM的核心组件是一个Java库,负责解析流程定义文件和控制运行时流程实例的执行。除了XML解析和持久化依赖的库以外,唯一与之直接相关的库是commons logging,项目中任意Java软件都可以访问JBPM提供的API。JBPM内部使用Hibernate实现其持久化,Hibernate使JBPM能在当前所有的数据库上使用。

JBPM控制台Web应用程序作为流程实例的控制接口,负责流程执行时的任务生成,管理并监视控制台检查或操作运行的流程实例。

1.3 JBPM的体系结构

JBPM工作流实现了三个工作流管理系统的基本功能。

过程定义:JBPM使用JPDL使用户通过可视化方式定义业务流程,流程定义文件被流程解析程序解析后提供给工作流引擎使用。

运行控制:核心是JBPM工作流引擎,管理执行流程的上下文环境,包含了当前执行流程的全部信息。它解析流程定义,控制流程定义实例的创建、流转和销毁,检查流程实例的状态并提供监控程序。

人机交互:当流程需要用户或者外部工具参与时,JBPM提供相应的应用程序接口或通过继承ActionHandler的方法来实现。ActionHandler方法提供了统一的扩展接口,使得扩展更加容易。

1.3.1.1JBPM的流程定义

JBPM本身就是基于模型的组件,流程实例都是依赖流程定义而执行的。但它并不像使用JPDL的流程定义图形化工具那么简单,从上世纪七十年代开始,人们便开始探索流程的形式化描述。JBPM的流程定义采用了动态图的模型语义来描述任意一个流程定义,JPDL主要使用7种流转控制活动来实现流程的形式化描述。

流转控制活动是组成一个业务流程定义最基本的活动,利用这些活动可以构建任意的流程定义,实现各种基本流程流转控制。JPDL的流程控制活动主要包括:

1、start(开始活动):指明流程的实例用哪里开始,它作为流程的入口。每个流程定义都有且只能有一个start活动(在group中的开始活动除外),且start活动必须有一个流出转移。

2、state(状态活动):业务流程需要某些特定的操作后才能继续执行,在这个操作之前流程处于等待状态。当流程运行到state活动时,自动进入等待状态,知道外来的信号触发。

3、decision(判断活动):根据条件在多个流程转移做出决定性的判断,选择最先匹配的一个条件转移执行。

4、fork-join(分支、聚合活动):在需要并发执行流程时,fork活动可以使流程出现并行的分支,join活动可以使并行分支聚合成一条流程。

5、end(结束活动):当流程实例流转到end活动时,实例将被结束。但到达end活动的实例中仍然活跃的流程活动(如fork-join并发流转引起的流程分支)将会被保留继续执行。JPDL允许有多个end活动。

6、task(人工任务活动):用来处理需要人机交互的活动。可以分配任务给指定用户、实现任务分配处理器、任务泳道、任务提醒等功能。

7、sub-proce(子流程活动):允许在流程定义中调用其他的流程定义。

流程的形式化描述就是有向图,其本质就是节点和有向弧。JBPM的节点Node就是流程控制活动,它的有向弧就是节点的转移Transition(转出或者转入),使用节点和转移就可以绘制任意一个业务流程。

1.3.1.2JBPM流程调度

流程调度就是流程实例从一个节点运行到另一个节点所依赖的一套机制,图2-13是JBPM流程调度的思维导图。JBPM启动一个流程时候,首先创建一个流程实例,并为这个实例创建一个Root Token,此时这个Root Token在Start节点上。当Token在Start节点上时,就可以将流程下流转,通过Token的signal方法(实际执行的是node的leave操作),将Token(实际只有ExecutionContext对象)放入要转向的Transtion对象中,再由Transtion对象将Token交给下一个节点,这样便完成了流程调度。

参考文献:

[1]高洁.深入浅出JBPM.人民邮电出版社,2009.7

[2]胡奇.jBPM4工作流应用开发指南,2010.10

[3]胡长城.开源工作流平台jBPM:过程组件模型与PVM.程序员,2008(05)

作者简介:刘永中,男,(1985-),四川省花园式人,西南交通大学信息科学与技术学院08级硕士。

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

《浅谈JBPM工作流.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
浅谈JBPM工作流
点击下载文档
相关专题 jbpm工作流 工作流 浅谈 JBPM jbpm工作流 工作流 浅谈 JBPM
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文