论坛首页 Java企业应用论坛

jbpm3与jbpm4实现对比

浏览 39505 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-02-17  
如沐清风啊,不过我一直都不是很明了PVM的存在.因为不用PVM程序也可以执行下去,不知道楼主是怎么理解PVM的?
0 请登录后投票
   发表时间:2009-02-17  
jbpm 4 是不是不支持 Spring 啊??? 好像都没有看到关于jbpm的技术架构文档介绍的
0 请登录后投票
   发表时间:2009-02-17  
高手!
我也在研究jbpm4。我们的工作流就基于jbpm4来做的,不过现在才开始流程管理之类的功能的开发。
0 请登录后投票
   发表时间:2009-02-17  
147175882 写道
如沐清风啊,不过我一直都不是很明了PVM的存在.因为不用PVM程序也可以执行下去,不知道楼主是怎么理解PVM的?

PVM是屏蔽流程语言的,例如你可以在jBPM4上运行xpdl,pvm把流程语言的特性给屏蔽了,如果没有PVM,你就只能运行jPDL语言的流层定义
0 请登录后投票
   发表时间:2009-02-17  
supercwg 写道
jbpm 4 是不是不支持 Spring 啊??? 好像都没有看到关于jbpm的技术架构文档介绍的

当然支持了,在jbpm4中有:SpringCommandService、SpringEnvironmentContext、SpringEnvironment、SpringConfiguration。其实说白了,根本就不存在支持不支持这种说法,因为即使这里面完全没有Spring的代码,你也可以自己去集成。
0 请登录后投票
   发表时间:2009-02-18  
呵呵,写得非常好,JBPM看样子源码得重看了
0 请登录后投票
   发表时间:2009-02-18  
正好要学习工作流```那是不是可以直接从JBPM4入手了??
0 请登录后投票
   发表时间:2009-02-18  
jbpm4的jpdl不是很好用啊,不能在画图的时候设置flow的属性,用XML的模式编辑完后,只要修改jdpl模型,XML的编辑全部被清空了.
楼主有没有这种感受啊?

相对而言用pvm开发还显得快点
0 请登录后投票
   发表时间:2009-02-18  
请问 jbpm3 还没有搞得非常明白,  就去看jbpm4 合适吗
0 请登录后投票
   发表时间:2009-02-18   最后修改:2009-02-18
snowfox2008 写道
5、历史库的加入
jBPM3中数据库设计一直是我比较诟病的地方,尤其是其实例数据库没有设计历史库的概念并按照办结状态将运行结束的实例数据归入历史库,在这种情况下它的实例数据库就会随着时间而无限膨胀,这就阻碍了它的真实应用,而在jBPM4的最新代码中(注意Alpha1还没有出现),历史库的相关功能代码竟然出现了!详见ExecutionImpl最新代码中的fireHistoryEvent方法及一系列的historyXXX方法。在ActivityBehaviour的execute方法中加入了historyTaskStart方法的调用、signal方法中加入了historyTaskEnd方法的调用,而以上2个方法在ExecutionImpl中都是以历史事件(HistoryEvent有4个实现子类ProcessInstanceStart、ProcessInstanceEnd、ActivityStart、ActivityEnd分别用作流程实例的创建结束期、活动实例的创建结束期的历史数据处理)的触发机制来实现的,也就是在整个流程实例执行的过程中,都加入了对将运行数据存入历史库的历史事件(HistoryEvent)的触发。这样实例列表的查询可以只查询历史库。不过这里很遗憾的是,这个事件没有同时清除运行库的数据,这样还是会造成运行库的无限膨胀问题。

大家对此的意见呢?




个人觉得这是个比较鸡肋的功能,因为当一个流程结束后,如果把数据放进历史库那么会存在很多问题,因为一个实际的生产流程往往很复杂,当一个流程结束后,会在很多jbpm自带的表里面会生成很多数据,随随便便就可以上百条都是可能的.这时,如果要在流程结束时同步插入到历史表且删除现行表中的相关数据会是一个很复杂的功能,(比如说:表之间都是建了关联的,不管是插入还是删除都要注意顺序问题,而且表中如果建了索引的话,增删都相对慢).当然如果不出问题的话,这样也行.但如果删除数据过程中出现了异常,可能就是个很棘手的问题,1事务要不要回滚,事务的粒度怎么定位,换句话说,要不要把用户的操作也回滚掉.2回滚事务的话,数据是不会被删的(因为事务回滚),那么怎么通知系统下次删除这批数据.
当然问题可能更多,我觉得jbpm开发人员不做这些处理不是因为他们没想到,可能只是把jbpm定位在一个插件或挂件级别.不好做处理.
为了解决这个问题,以前我们项目组就采用了异步的方法.用quarz做了个定时任务,定时归档已经处理完的任务,也就是插入到历史表且删除现行表的相关数据.
个人感觉,即使jbpm4也很难从本质上解决楼主所说的这个问题.

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics