子在川上曰

  逝者如斯夫不舍昼夜
随笔 - 71, 文章 - 0, 评论 - 915, 引用 - 0
数据加载中……

jBPM开发入门指南(1)

工作流虽然还在不成熟的发展阶段,甚至还没有一个公认的规范标准。但其应用却已经在快速展开,这说明市场对工作流框架的需求是急迫而巨大的。

我们公司的后台短信管理系统涉及短信编发、领导层层审核等操作,这是一个比较典型的工作流系统。过去我们用的工作流引擎是 shark ,然后在使用后发现其过于庞大,后台数据库操作频繁而未进行优化,直接导致的后果就是前台操作缓慢。于是经研究决定,将工作流引擎由 shark 换成 jBPM

jBPM 之前是一个开源软件,后加入 JBoss 组织。正好我们公司也是用 JBoss 的。不过 jBPM 并没有绑定在 JBOSS 上, Tomcat 等也可以使用它。

jBPM 的正处在不断发展中,做为开源软件的特点,其设计变化往往很大。所以一些过去的资料可能已经不适用了。于是作者根据自己的使用经验,重新整理出这份文档,以备学习参考。

注:本文使用的 jBPM 版本为 3.1.1

环境准备

1、安装JDK

所有 JAVA 开发第一个需要安装的,没什么好说的。记得把系统变量 JAVA_HOME 设上。

2、安装Ant

Ant 是使用 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、安装Eclipse

Eclipse 不是开发 jBPM 必须的工具,但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。关于 Eclipse 的安装不赘述了,本文用的版本是: Eclipse3.2

 

安装 jBPM

jBPM 的下载地址: http://www.jboss.com/products/jbpm/downloads  

l           JBoss jBPM jBPM 的软件包

l           JBoss jBPM Starters Kit  是一个综合包,它包括了 jBPM 软件包、开发插件、一个配置好了的基于 JBoss jBPM 示例、一些数据库配置文件示例。

l           JBoss jBPM Process Designer Plugin  是辅助开发 jBPM Eclipse 插件。

l           JBoss jBPM BPEL Extension jBPM 关于 BPEL 的扩展包

本指南选择下载: JBoss jBPM Starters Kit 。下载后解压到 D:\jbpm-starters-kit-3.1 ,目录下含有五个子目录:

l           jbpm   jBPM 的软件包

l           jbpm-bpel 只含有一个网页

l           jbpm-db 各种数据库 hibernate 配置文件示例,有些还包含了相应的 jdbc 驱动程序。

l           jbpm-designer  辅助开发 jBPM Eclipse 插件,具体在 jbpm-gpd-feature 子目录中

l           jbpm-server  一个已经配置好了的基于 JBoss jBPM 示例 .

 

感觉下工作流

前面我们说了,在 JBoss jBPM Starters Kit jbpm-server 目录是一个已经配置好的了 jBPM 示例,那么让我们来感觉一下 jBPM 做出的东西吧。

 

双击 jbpm-server 目录下的 start.bat 文件,启动 JBoss 服务。这时会打开一个 DOS 窗口,启动完成后,日志会不断输出,其中最后一句是“ 13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd) ”,这表示 jBPM 在开始工作了,它不断进行轮询。

打开网页: http://localhost:8080/jbpm/  得到如下画面

 20060713_image001.jpg

这是一个已经用 jBPM 开发好的用户定单流程,具有下单、审核、估价等流程。它所用的数据库是一个内置的数据库。

cookie monster 用户登录,选择“ create new web sale order ”可以创建一个定单。如下图所示,在图左边是填写的定单情况,右边一整个定货流程的示意图,红色框表示流程进行到哪一步了。填写好定单好,选择“ Save and Close Task ”,完成定单提交。

 20060713_image002.jpg

选择右上角的“ Login as another user ”以另外一个用户名 ernie 登录。这时可以看到 ernie 用户的任务列表中多了一项。

 20060713_image003.jpg

点进去后,显示如下画面。这个示例对中文的支持不好,全都显示成了 unicode 码了。不管这什么多,反正知道是这么回事就行了。在 comment 项填写意见,选 OK 按钮,进入到下一步。如果选择 more info needed 按钮,则打回给 cookie monster 用户修改定单。

 20060713_image004.jpg

下面的流程,这里就不再赘述了。在这个很标准的工作流示例中,我们基本可以看到 jBPM 的应用范围还是比较广的。而且从这个示例,我们是看不出有 jBPM 的,也就是说 jBPM 在后台起着作用。

从这个例子,还看不出 jBPM 的优势。不过,如果在一个流程不确定,经常需要变动的项目中, jBPM 的好处将会显然出来。应用 jBPM 后,改变流程只需改变流程描述文件,这将在后面的内容提到。

这是一个已做好的示例,接下来我们将仿造这个实例来开发一个请假流程。

作者简介
陈刚,广西桂林人,著作有《Eclipse从入门到精通》
您可以通过其博客了解更多信息和文章:http://www.chenGang.com.cn

posted on 2006-07-13 15:03 陈刚 阅读(74372) 评论(36)  编辑  收藏 所属分类: jBPM

评论

# re: jBPM开发入门指南(1)  回复  更多评论   

期待“jBPM开发入门指南(2) ”
2006-07-20 11:40 | 黄又木

# re: jBPM开发入门指南(1)  回复  更多评论   

急切盼望jBPM开发入门指南(2) 的问世!!!!!!!!
2006-07-23 18:16 | zzf

# re: jBPM开发入门指南(1)  回复  更多评论   

waiting!!!
2006-08-09 11:51 | zyb

# re: jBPM开发入门指南(1)  回复  更多评论   

跪求~~~
2006-08-14 14:00 | zmm

# re: jBPM开发入门指南(1)  回复  更多评论   

这个例子其实并不好:
1.看不到web应用开发的过程
2.与jboss结合太紧
3.不支持中文的流程定义

本人在苦苦摸索,欢迎jbpm牛人与我交流讨论,欢迎之至,QQ:57875031
2006-08-18 11:32 | zhang

# re: jBPM开发入门指南(1)  回复  更多评论   

谢谢,
2006-08-20 15:43 | 谢谢

# re: jBPM开发入门指南(1)  回复  更多评论   

请教一下,怎样在eclipse下按装JBPM插件
2006-08-20 15:45 | 谢谢

# re: jBPM开发入门指南(1)  回复  更多评论   

对Jbpm数据库应用的简单分析和在Mysql上实现的demo
http://blog.csdn.net/dust_bug/archive/2006/10/17/1338417.aspx">http://blog.csdn.net/dust_bug/archive/2006/10/17/1338417.aspx

欢迎学习jbpm的朋友有空来看看
http://blog.csdn.net/dust_bug
2006-10-23 16:10 | dust

# re: jBPM开发入门指南(1)  回复  更多评论   

你好! 我想请问一下, jbpm 3.1.2是必需要jdk1.5支持吗? 因为我在身成数据库脚本的时候,用jdk1.4.2报如下错误:
compile.jbpm.test:
[javac] Compiling 66 source files to C:\Amdocs\Devtools\jbpm-starters-kit-3.
1.2\jbpm-starters-kit-3.1.2\jbpm.3\build\classes.jbpm.test
[javac] C:\Amdocs\Devtools\jbpm-starters-kit-3.1.2\jbpm-starters-kit-3.1.2\j
bpm.3\src\java.jbpm.test\org\jbpm\msg\command\AsyncExecutionDbTest.java:142: can
not resolve symbol
[javac] symbol : method getStackTrace ()
[javac] location: class org.jbpm.msg.command.CommandExecutorThread
[javac] commandExecutor.getStackTrace();
[javac] ^
[javac] C:\Amdocs\Devtools\jbpm-starters-kit-3.1.2\jbpm-starters-kit-3.1.2\j
bpm.3\src\java.jbpm.test\org\jbpm\msg\command\AsyncExecutionDbTest.java:143: can
not resolve symbol
[javac] symbol : method getState ()
[javac] location: class org.jbpm.msg.command.CommandExecutorThread
[javac] log.debug("command executor state: "+commandExecutor.getStat
e());
[javac] ^
[javac] C:\Amdocs\Devtools\jbpm-starters-kit-3.1.2\jbpm-starters-kit-3.1.2\j
bpm.3\src\java.jbpm.test\org\jbpm\msg\command\AsyncExecutionDbTest.java:145: can
not resolve symbol
[javac] symbol : method getStackTrace ()
[javac] location: class org.jbpm.msg.command.CommandExecutorThread
[javac] StackTraceElement[] commandExecutorStackTrace = commandExecu
tor.getStackTrace();
[javac]
^
[javac] 3 errors

如果选择hibernate2.1, 我应该选择那个版本的jbpm是比较稳定的。
2006-12-13 11:57 | Derry Huang

# re: jBPM开发入门指南(1)  回复  更多评论   

哈哈,没想到你们公司的情况居然和我们的如此相似。
2007-01-03 19:09 | errorfun

# re: jBPM开发入门指南(1)  回复  更多评论   

请问,我安装了myeclipse后,怎样才能发布jbpm工程呢?
2007-04-04 10:36 | JF

# re: jBPM开发入门指南(1)[未登录]  回复  更多评论   

JBPM插件于myeclipse有冲突,你可以把已经打包的流程使用JBOSS IDE来发布
2007-06-20 09:17 | 李若紫

# re: jBPM开发入门指南(1)  回复  更多评论   

谢谢!
我在我的博客中引用你的文章,我会注名出处.希望您同意!
2007-06-20 23:43 | deen

# re: jBPM开发入门指南(1)  回复  更多评论   

thanx!!
2007-06-26 10:40 | soso

# re: jBPM开发入门指南(1)  回复  更多评论   

http://www.jboss.com/products/jbpm/downloads 这个网址下面没有JBoss jBPM Starters Kit 包啊,我需要下载那个zip文件,下了一个jbpm-jpdl-3.2.1.zip,用不了啊
2007-07-06 15:50 | 小云

# jBPM开发入门指南(1)  回复  更多评论   

JBoss jBPM Starters Kit 提示的网站上没有 怎么办 上哪里能找到呢
2007-07-17 10:52 | 刘俊

# re: jBPM开发入门指南(1)  回复  更多评论   

您好:
我照着您的jbpm开发入门指南文章做成功了。现在我想把jbpm和facelet结合起来,用facelet做前台。facelet 我也用过。但是我还不清楚如果两者结合起来具体该怎么做。希望您能做一个这样的例子。谢谢!
我的msn是qq545330097@hotmail.com
2007-08-17 11:12 | zhangluping

# re: jBPM开发入门指南(1)  回复  更多评论   

恩.不错.看了两天的jbpm
在你这里算是有点思路了..
非常的感谢
2007-11-04 00:37 | hellcomte

# re: jBPM开发入门指南(1)  回复  更多评论   

这是什么意思啊.workspace\jbpm.3\build.deploy.xml:50: org.hibernate.exception.JDBCConnectionException: Cannot open connection
2007-11-21 11:29 | 刘德军

# re: jBPM开发入门指南(1)  回复  更多评论   

刚接触JBPM我按照你的步骤走了一次,结果显示网页无法显示,请问启动了start.bat 还需要启动JBOSS吗?
2007-11-29 00:34 | zjb

# re: jBPM开发入门指南(1)[未登录]  回复  更多评论   

到www.jbpm.org就可以看到jBPM Starters Kit 3.1.zip了 。因为jbpm被jboss收购了 ,在原始网站上有到jboss的镜像。
2007-11-29 11:12 | jinni

# re: jBPM开发入门指南(1)  回复  更多评论   

@jinni

謝謝指點。
2007-12-12 10:59 | fige

# re: jBPM开发入门指南(1)[未登录]  回复  更多评论   

谢谢指点。
如果可以有一个Web网站的和Jbpm整合的例子就更好了。
是否可以给我一份呢!
E-Mail:swg_1982@163.com
2008-01-29 13:51 | Wind

# re: jBPM开发入门指南(1)  回复  更多评论   

jbpm群31994512,欢迎大家讨论。谢谢。
2008-06-24 15:19 | jBPMer

# re: jBPM开发入门指南(1)  回复  更多评论   

谢谢你的文章,我想问一下,jbpm怎么在tomcat中使用!!!
2008-09-22 10:08 | javamark

# re: jBPM开发入门指南(1)  回复  更多评论   

http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/j/jb/jbpm/jbpm-starters-kit-3.1.4.zip

http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/j/jb/jbpm/jbpm-starters-kit-3.1.3.zip
2008-12-01 18:41 | hoho

# re: jBPM开发入门指南(1)  回复  更多评论   

jbpm与ssh集成方法
http://blog.csdn.net/shazhenzhong/archive/2008/06/19/2564584.aspx
web下开发完整示例,包括显示流程节点图片
http://blog.csdn.net/shazhenzhong/archive/2009/01/10/3744746.aspx
2009-01-15 10:54 | shazhenzhong

# re: jBPM开发入门指南(1)  回复  更多评论   

你好 ,能不能给我一份JBPM和WEB的实例,谢谢.
starbust@163.com
2009-03-16 10:22 | starbust

# re: jBPM开发入门指南(1)  回复  更多评论   

能不能给我一份JBPM和WEB的实例,谢谢.
fxezfbj@163.com
2009-03-18 20:05 | fbj

# re: jBPM开发入门指南(1)  回复  更多评论   

欢迎从事JBPM研究学习人事加入JBPM群83546292,共同学习交流JBPM。
2009-03-27 16:42 | fengyu

# re: jBPM开发入门指南(1)  回复  更多评论   

欢迎从事JBPM研究学习人士,加入JBPM群 83546292,共同学习交流JBPM。
2009-03-27 16:43 | fengyu

# re: jBPM开发入门指南(1)  回复  更多评论   

22:27:53,906 [main] INFO JbpmConfiguration : using jbpm configuration resource 'jbpm.cfg.xml'
22:27:53,921 [main] DEBUG JbpmConfiguration : loading defaults in jbpm configuration
22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'default.jbpm.context'
22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.hibernate.cfg.xml'
22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.business.calendar'
22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.default.modules'
22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.converter'
22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.action.types'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.node.types'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.parsers'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.varmapping'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.msg.wait.timout'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.byte.block.size'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'mail.smtp.host'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.task.instance.factory'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.variable.resolver'
22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.mail.address.resolver'
22:27:54,203 [main] DEBUG JbpmConfiguration : loading specific configuration...
22:27:54,468 [main] DEBUG JpdlParser$JpdlEntityResolver : resolving schema reference publicId(null) systemId(http://jbpm.org/jpdl-3.1.xsd)
22:27:54,468 [main] DEBUG JpdlParser$JpdlEntityResolver : providing input source to local 'jpdl-3.1.xsd' resource
22:27:54,640 [main] DEBUG NodeTypes : node 'page' will not be available. class 'org.jboss.seam.pageflow.Page' couldn't be loaded
22:27:54,640 [main] DEBUG NodeTypes : node 'start-page' will not be available. class 'org.jboss.seam.pageflow.Page' couldn't be loaded
22:27:54,656 [main] WARN JpdlXmlReader : process xml warning: warning: no swimlane or assignment specified for task '<task xmlns="urn:jbpm.org:jpdl-3.1" blocking="false" signalling="true" priority="normal">

<controller config-type="field">

<variable name="name" access="read,write"/>

<variable name="day" access="read,write"/>

<variable name="note" access="read,write"/>

</controller>

</task>'
22:27:54,687 [main] DEBUG GraphElement : event 'process-start' on 'ProcessDefinition(helloworld)' for 'Token(/)'
有无人解答我这个错误啊....急
2009-05-17 23:12 | hill124

# re: jBPM开发入门指南(1)  回复  更多评论   

弄的不清楚!!!!!!!!!!!!!!!!!
2009-07-10 11:36 | 时光

# re: jBPM开发入门指南(1)  回复  更多评论   

按这个例子做,输入http://localhost:8080/jbpm,出现404错误
2009-09-10 09:56 | 钟城

# re: jBPM开发入门指南(1)[未登录]  回复  更多评论   

jbpm-server 目录下的 start.bat不能启动,是什么问题??
2014-04-18 17:20 | 陈勇

# re: jBPM开发入门指南(1)  回复  更多评论   

@钟城
@陈勇
你们找到原因了么?我现在按照他的博客步奏做,也是一运行start.bat就闪退,根本没办法启动服务。
2015-05-26 15:52 | 实习

只有注册用户登录后才能发表评论。


网站导航: