官方Help版Hello world:
文档位置:jbpm-starters-kit-3.1.2\jbpm\doc\userguide\en\html\index.html
Javadoc:在 jbpm-starters-kit-3.1.2\jbpm\doc\javadoc.jbpm\index.html
这个hello world 新学的人看不出个什么名堂来,对象结构不了解,工作流的优势也没表现出来(之前做过工作流的可能看得一楞一楞的)
官方Web版Hello World:
要看
JBPM
自己的
Hello World
很简单,直接解压缩
jbpm-starters-kit-3.1.2
Web
观看
:
jbpm-starters-kit-3.1.2\jbpm-server
\start.bat
跑
jboss
http://localhost:8080/jbpm 一个WebSale 的例子,工作流的好处描述的比较清楚,“图形化”流程显示,人员,流程,应用的分离
相关源代码一应俱全: jbpm-starters-kit-3.1.2\jbpm\src\java.webapp\org\jbpm\webapp
界面用JSF写的,奇怪了,为什么会用JSF?我现在感觉JSF带来的除了是麻烦,没有什么,学aspx也没学像,说MVC吧,代码量大太多,说改起来容易完全是扯蛋,感觉就是拿框架来忽悠人,写配置比写代码烦多了,还不好调试,考,太抽象也就太遥远
BTW:这个图形也太蒙人了,居然只有一副流程定义图片,然后靠画红色圈圈来套,我考,跟商业的Workflow差太远了。目前我正安排fish帮我用.net写一套配置界面(包括人员配置,语法检查,模版设置)和动态演示出来。用Eclipse的弱智图形配置界面 + 红圈圈还真拿不出手。至少要跟Workflow看齐嘛,呵呵,现在其实已经做得7788的了,不过还是要打磨以后才放出来用,应该不比这类商业软件,就是不知道Boss准不准拿出来开源
自己写一个Hello World:
目标:初步体会BPM的Power, 应用,流程,人员的分离,图形化的流程
1. 给Eclipse 3.2 安装上GOP插件
似乎只要注意版本和避开干扰软件,基本没什么问题,我开始没仔细读说明,被害惨了,用了3.12 + myEclipse,折腾了许久才搞定
2. 创建项目,JBPM项目自然就出现了,这个时候要选择引擎,选 jbpm-starters-kit-3.1.2\jbpm\build 目录就可以了
Eclipse默认引用了一大堆jar包,实际上,就引用 build目录就可以了,如果用JBuilder,就配置一下,完全一样用。项目创建会默认产生一个流程和例子,注意,src/config 在JBuilder里面没法用,JB会打包build目录(引用的引擎下面)的几个配置文件,直接改build目录的配置文件,效果一样
3. 画流程图
项目建好,直接在Process目录下面创建一个JBPM Process Definition就可以了,OK,看到图形界面了,简单描述一下各种节点的大致作用
Start:就是个开始,JBPM的开始还可以乱七八糟放些东西,不过我不太习惯
End:结束,可以多个
State: 没怎么用过,似乎怎么用也都可以
Fork:流程分支,似乎JBPM这部分并行必须要这个东西,有点无聊,反过来说,一个没有分支合并的节点,画再多线也只能走一根,把后台设置前台化而已
Join: 合并流程,同上,我觉得这个东西未来也许会消失
Decision: 决策,可有可无的东西,以前我用workflow重来不鸟他,只是为了画图好看
Node:
Task Node:任务节点,挂上任务主要用来作人机交互节点,关联任务使用
Process State:可以看作自动过程,主要用来根其它系统打交道
Super State: 相当于一个节点集合的包
Transition: 不用多说,所有节点都得有连接线
4. 配置文件说明
hibernate.cfg.xml 配置数据库连接,这个很好改
jbpm.cfg.xml读取基本设置,不过在JB里面死活不认,据同事说需要用JNDI,MMD,简单问题复杂化,上面两个文件都可以直接写到程序里面去
log4j,你想不想看调试信息的问题
5. 运行Hello World
画个图
产生了下面xml
xmlns="urn:jbpm.org:jpdl-3.1" name="HellowWorld">
<start-state name="开始"></start-state>
<transition name="" to="步骤1"> </transition>
<task-node name="步骤1"></task-node>
<task name="任务1"></task>
<transition name="" to="结束"> </transition>
<end-state name="结束"></end-state>
画图实际上是在写2个xml文件,流程引擎使用的是 processDefinition.xml
gpd.xml是用来指示图形位置的,processimage.jpg是自动产生的,这部分实际上比较弱,无法完整整合用户管理,如果用来做workflow又缺乏表单管理(用变量可以代替)。最最恼火的是没有对所画流程检查功能,希望以后能补上。基本上是个半手工活,懂JBPM的程序员用可以,就别指望用户能用了
写两句代码
结合官方例子写就可以了,换换名字,基本实现
代码写起来比较舒服,整个结构框架很清楚
6. 总结优缺点,JBPM是否对你有用
优点:
我见过最好的免费流程引擎(这条就够了), 功能强劲,跟商业的的没有本质区别
对整合环境没什么挑剔,java .net都行,数据库也基本不挑
可扩展性极好,到处都能挂代码,呵呵
缺点:
文档严重不够, 写起来刚开始比较痛苦
部分功能不完善(用户管理部分,安全部分)
应用扩展性过于灵活,换句话说就是功能不完善(都是留接口写代码),没有找到不用Hib持久化的方法