jBPM开发入门指南工作流虽然还在不成熟的发展阶段,甚至还没有一个公认的规范标准。但其应用却已经在快速展开,这说明市场对工作流框架的需求是急迫而巨大的。我们公司的后台短信管理系统涉及短信编发、领导层层审核等操作,这是一个比较典型的工作流系统。过去我们用的工作流引擎是shark,然后在使用后发现其过于庞大,后台数据库操作频繁而未进行优化,直接导致的后果就是前台操作缓慢。于是经研究决定,将工作流引擎由shark换成jBPM。jBPM之前是一个开源软件,后加入JBoss组织。正好我们公司也是用JBoss的。不过jBPM并没有绑定在JBOSS上,Tomcat等也可以使用它。jBPM的正处在不断发展中,做为开源软件的特点,其设计变化往往很大。所以一些过去的资料可能已经不适用了。于是作者根据自己的使用经验,重新整理出这份文档,以备学习参考。注:本文使用的jBPM版本为3.1.1环境准备1、安装JDK所有JAVA开发第一个需要安装的,没什么好说的。记得把系统变量JAVA_HOME设上。2、安装AntAnt是使用jBPM必须的一个工具。jBPM中的很多操作都要用到Ant。安装方法:(1)先下载:http://archive.apache.org/dist/ant/binaries/,选一个如:apache-ant-1.6.5-bin.zip。(2)解压到D:\ant(当然其他目录也可以)。(3)设置如下系统变量:ANT_HOME=d:\ant。(4)把%ANT_HOME%\bin加入到系统变量PATH中。3、安装EclipseEclipse不是开发jBPM必须的工具,但它是对jBPM开发很有帮助的工具,特别是jBPM提供了一个Eclipse插件用来辅助开发jBPM。关于Eclipse的安装不赘述了,本文用的版本是:Eclipse3.2安装jBPMjBPM的下载地址:http://www.jboss.com/products/jbpm/downloadszJBossjBPM是jBPM的软件包zJBossjBPMStartersKit是一个综合包,它包括了jBPM软件包、开发插件、一个配置好了的基于JBoss的jBPM示例、一些数据库配置文件示例。zJBossjBPMProcessDesignerPlugin是辅助开发jBPM的Eclipse插件。zJBossjBPMBPELExtensionjBPM关于BPEL的扩展包本指南选择下载:JBossjBPMStartersKit。下载后解压到D:\jbpm-starters-kit-3.1,目录下含有五个子目录:zjbpmjBPM的软件包zjbpm-bpel只含有一个网页zjbpm-db各种数据库hibernate配置文件示例,有些还包含了相应的jdbc驱动程序。zjbpm-designer辅助开发jBPM的Eclipse插件,具体在jbpm-gpd-feature子目录中zjbpm-server一个已经配置好了的基于JBoss的jBPM示例.感觉下工作流前面我们说了,在JBossjBPMStartersKit的jbpm-server目录是一个已经配置好的了jBPM示例,那么让我们来感觉一下jBPM做出的东西吧。双击jbpm-server目录下的start.bat文件,启动JBoss服务。这时会打开一个DOS窗口,启动完成后,日志会不断输出,其中最后一句是“13:55:39,937DEBUG[StaticNotifier]goingtowaitfor(CMD_EXECUTOR,java.lang.Object@1df59bd)”,这表示jBPM在开始工作了,它不断进行轮询。打开网页:http://localhost:8080/jbpm/得到如下画面这是一个已经用jBPM开发好的用户定单流程,具有下单、审核、估价等流程。它所用的数据库是一个内置的数据库。以cookiemonster用户登录,选择“createnewwebsaleorder”可以创建一个定单。如下图所示,在图左边是填写的定单情况,右边一整个定货流程的示意图,红色框表示流程进行到哪一步了。填写好定单好,选择“SaveandCloseTask”,完成定单提交。选择右上角的“Loginasanotheruser”以另外一个用户名ernie登录。这时可以看到ernie用户的任务列表中多了一项。点进去后,显示如下画面。这个示例对中文的支持不好,全都显示成了unicode码了。不管这什么多,反正知道是这么回事就行了。在comment项填写意见,选OK按钮,进入到下一步。如果选择moreinfoneeded按钮,则打回给cookiemonster用户修改定单。下面的流程,这里就不再赘述了。在这个很标准的工作流示例中,我们基本可以看到jBPM的应用范围还是比较广的。而且从这个示例,我们是看不出有jBPM的,也就是说jBPM在后台起着作用。从这个例子,还看不出jBPM的优势。不过,如果在一个流程不确定,经常需要变动的项目中,jBPM的好处将会显然出来。应用jBPM后,改变流程只需改变流程描述文件,这将在后面的内容提到。这是一个已做好的示例,接下来我们将仿造这个实例来开发一个请假流程。