JBPM5学习笔记

结构图如下(网上找的):

 

 

1.        JBMP5中有个任务节点Human task,这个任务一般要在Task Server 中存储,个人认为这样做只是增加了复杂度,并没有实用价值。唯一的好处是一些辅助工具比较好实用,如eclipse中的Human Task View. Server端数据源配置,查找数据源的方式如下sequence图(图表1)。查找classpath 下的所有META-INF/persistence.xml.如果要建立自己的数据源,只需在自己的src下建立一个META-INF/persistence.xml ,一般起名为“org.jbpm.task”,这个被称为persistence-unit. 在” jbpm-human-task-5.1.0.Final.jar” 中也有个META-INF/persistence.xml,使用的h2的内存数据库,自己的配置文件的配置相同unit 可以覆盖掉默认的。注意,该配置中的<property name="hibernate.hbm2ddl.auto"value="create" /> 这样配置会在每次启动server的时候,清除掉原有的数据库表,再重新建立,一般第一次启动时这样设,后面改为<property name="hibernate.hbm2ddl.auto" value="update”/> 启动TaskServer的代码如下:可以参考jbpm5自带的例子,默认的端口貌似是9123

 

 

另外还有一个配置文件,如果配错,会有问题META-INF/orm.xml。这个服务端的和客户端的文件容易搞混。同样,在jbpm-human-task-5.1.0.Final.jar 中也有默认的配置文件。一般如果有自己的persistence.xml,也要在同一个目录下放一个orm.xml.只需要在jbpm-human-task-5.1.0.Final.jar中拷贝出来就行。

图表1 (查找persistence.xml的逻辑)

2.        流程定义储存。Jbpm5中的流程定义并不存储在数据库中,使用了drools的知识库(KnowledgeBase)来管理。知识库是用来管理文件系统的,可暂理解为类似SVN的一种工具。创建知识库好像比较耗性能,所有一般整个系统只维护一个知识库,在知识库里增加流程定义的方法为:

3.        Client端(相对task server而言,其实就是我们的web应用程序)的数据源配置依然是使用persistence.xml的方式,在classpath中建立自己的数据源。Client端如果不指定数据源好像也使用一个默认的h2内存数据库,这个配置我不清楚在哪里。同样也需要一个orm.xml,这个文件可以从jbpm-persistence-jpa-5.1.0.Final.jar中拷贝出来。Session的创建方式如下:

4.        设置HummanTaskHandler,这个用来与server端的交互。注册方法如下:

这个Handler 一般用2个, org.jbpm.process.workitem.wsht.CommandBasedWSHumanTaskHandler 和org. jbpm.process.workitem.wsht.WSHumanTaskHandler, 其中WSHumanTaskHandler这个貌似只用在测试,我用的时候好像有点小问题,正式使用时建议使用CommandBasedWSHummanTaskHandler。这样任务在生成的时就会在服务端建立一个连接,将任务发送到服务端,保存在服务端数据库中。而客户端会启动一个socket连接用来和服务端进行交互。这个socket连接一直打开,好像没有一个合适的地方来关闭。不知道这里会不会有问题。一般的通信方式是客户端发送一个org.jbpm.task.service.Command对象到服务端(参考org.jbpm.task.service.TaskClient的complete方法) ,服务端收到请求并且处理完毕之后,再发送一个回复到客户端。由于client一直是连接的,client收到回复后会调用org.drools.task.service.ResponseHandler来处理请求(参考org.jbpm.task.service.TaskServerHandler中的messageReceived方法),ResponseHandler需注册到TaskClient中去,client.registerForEvent(key,false, eventResponseHandler); 第二个参数设为true的话,此响应只执行一次即被移除,false的话不会被移除,如TaskCompleteHandler这个就不需要移除。ResponseHandler也可以自己定制。

5.        JBPM5源代码 下载地址 http://ncu.dl.sourceforge.net/project/jbpm/jBPM%205/jbpm-5.1.0.Final/jbpm-5.1.0.Final-src.zip

DOC 下载地址http://ncu.dl.sourceforge.net/project/jbpm/jBPM%205/jbpm-5.1.0.Final/jbpm-5.1.0.Final-docs.zip

完全下载 http://ncu.dl.sourceforge.net/project/jbpm/jBPM%205/jbpm-5.1.0.Final/jbpm-5.1.0.Final-installer-full.zip

ANT 下载http://124.14.8.52/download/6600724/8290211/5/zip/34/63/1293794337826_831/apache-ant-1.8.2-bin.zip

完全下载居然不包括src 和doc

6.        下载后配置好ANT_HOME 和PATH 即可安装DEMO. 只需解压缩jbpm-5.1.0.Final-installer-full.zip 之后运行 ant install.demo,而运行demo 只需运行命令ant start.demo

7.        Demo简单介绍。Demo安装之后,就会在jboss目录下自动安装几个war包,分别是:jbpm-gwt-console.war、 jbpm-gwt-console-server.war、drools-guvnor.war、designer.war其中droos-guvnor.war 是一个文件管理系统,主要用来管理流程定义文件。jbpm-gwt-console-server.war 这个war包相当于我们的应用程序,即jbpm5的client端,数据源信息可以在这个war包中配置和修改。其他2个可能是设计器相关的,暂不研究。登陆http://localhost:8080/jbpm-console即可以查看任务。默认使用krisv/krisv登陆即可。这里登陆的实际上是jbpm-gwt-console-server.war这个应用程序,而流程定义实际上是在drools-guvnor.war中管理的,这里我研究了一下是怎么启动流程的。具体代码可以参考bpm-gwt-core-5.1.0.Final.jar 中的org.jbpm.integration.console.CommandDelegate:

而ChageSet.xml中有个重要的配置

<resource source='http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST'type='PKG' basicAuthentication="enabled" username="admin" password="admin"/> 这个配置可以将drools-guvnor.war中的知识库中的东西加载的本应用程序中去。知道了这些我们的流程定义文件只需要放在知识库服务器上就可以了。知识库的内容和本地文件的同步有个简单的视频可以看:http://people.redhat.com/kverlaen/install-guvnor-jbpm.swf

8.        在源代码中有大量的TestCase,把这些看完,基本上就能掌握流程的设计,API 等。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值