`
snowfox2008
  • 浏览: 127466 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jbpm3与jbpm4实现对比

阅读更多

jBPM3 vs jBPM4

JBoss Goup 目前已经发布了 jBPM4 Alpha1 版本,在版本 4 中最大的变化就是引入 PVM (流程虚拟机)的概念,而引擎内部的调度算法中重要的 Token 机制,在新版中也去掉了,纵观整个代码,变化可以说非常的大,笔者接下来就试着来比较一下这种变化,让大家能有个直观的认识。当然 Jbpm4 JBoss 的官方网站上的 Road map 中,在今年的 7 1 号才会发布第一个正式版本,因此后续可能还会有变化。

1、   流程定义对象的变化:

Jbpm3 流程定义对象关系图:

图一 jbpm3流程定义对象关系图

 

从上图我们可以看出这 jbpm3 中, GraphElement 是流程图中所有流程元素的父对象,而整个流程是由 ProcessDefinition Node Transition 三个主要对象构成;

 

 图二 PVM 实体对象关系图      

 

 

从上图可以看出,由于 PVM 概念的引入,所以在 jbpm3 中的 Graph 包在 jbpm4 中被移除了。在 pvm 中,在设计期,所有节点元素的父类为 ProcessElementImpl ,流程的主要组成元素 Nodelmpl TransitionImpl ProcessDefinitionImpl EventImpl 则都直接或间接继承自 ProcessElementImpl 。在运行期: jbpm4 把流程的运行期行为定义为执行行为( ExecutionImpl )及原子操作行为( AtomicOperation ,其具体实现为 ExecuteNode ProceedToDestination TakeTranstion MoveToParentNode MoveToChildNode signal ),其中 ExecutionImpl 是流程实例、活动实例、事件监听器的所有执行期行为的实现类。

 

图三 jpdl 运行期活动实体对象关系图

  上图是 jbpm4 在运行期的活动实例对象关系图,从图中我们可以看出,在运行期, jbpm4 中定义了两个活动接口 Activity ExternalActivity ,其中 ExternalActivity 继承自 Activity Activity 是所有自动活动节点的父接口,其实现类为 JpdlActivity ,而 JpdlActivity 又衍生出了、 StartActivity JoinActivity ForkActivity EndActivity CreateTimerActivity JavaActivity EsbActivity 等实例活动对象。而 ExternalActivity 是具有等待状态的活动( StateActivity )父接口,像人工活动 TaskActivity 就是实现了此接口。

  2、   核心引擎的调度算法

Jbpm3 的核心调度算法是基于 Token 机制的,在运行期这个 Token Node Instance 之间流转,依靠 Token 的触发来推进流程。具体的调度机制,可参加胡长城的文章( http://blog.csdn.net/james999/archive/2007/09/02/1769592.aspx );其实这个 Token 来自于 Pertri-net ,感兴趣的读者可以去看 Pertri-net 中的 Token Place

 

图四 jbpm3引擎调度图  

Jbpm4 则去掉了 Token ,那么它的核心调度机制是怎样实现的呢?

 图五 jbpm4流程启动序列图

图六 jbpm4 流程推进序列图

图五是在 jbpm4 中启动一个流程实例的执行序列图,图六是节点推进的执行序列图,从上面两个图中我们可以看到核心的调度是依据 Execution 的转移来实现的( ExecutionImpl 可以是 ActivityExecution ClientProcessInstance EventListenerExecution 的实例), Execution 实际上就是取代了 Jbpm3 中的 Token Execution 的转移实际上就是根据状态机的变迁( ActivityExecution ClientProcessInstance EventListenerExecution 实例之间的切换)加上调用相应的原子操作: ExecuteNode MoveToChildNode MoveToParentNode ProceedToDesitination Signal TakeTransition (详见 pvm/internal/model/op 包下的相关类)来实现的。所以 Execution 实例的集合及有向图实际上就是运行期的路径。

 

3、   Event-Action 机制的变化

jbpm3 中是基于 Event-Action 机制来实现事件与动作的触发的,但是在 jbpm4 中则采用观察者模式来触发事件的。所有用户自己定义的动作,全部要实现 EventListener 接口,这些动作作为监听者(就是事件 Event 的观察者 Observer )注册到相应的流程定义对象上( ProcessElement 或者 Node ),而事件 Event 则作为被观察的对象(实际上就是 Observerable ),实际上在 jbpm4 中专门定义出了一个对象 ObservableElementImpl ,流程定义中的 NodeImpl TransitionImpl ProcessDefinitionImpl 均继承自此对象,因此这些元素本身就可以作为 Observerable 而被观察者来监控。

4、   客户端接口的变化

jbpm4中对客户端的接口统一为7个服务接口:ProcessServiceExecutionServiceCommandService TaskService ManagementServiceHistoryServiceIdentityService,这7个接口可以从ProcessEngine接口中获得,jbpm4在启动的过程中由JbpmConfiguration负责构建引擎。

Ø  ProcessService-流程定义的服务接口,包括对流程定义的部署、查询、删除操作;

Ø  ExecutionService-执行服务接口,包括启动流程、实例推进、设置变量等操作;

Ø  CommandService-Command模式的服务接口,实际上就是将客户端的请求全部封装在一个调用接口中,然后由这个接口去调用Command接口的众多实现(StartExecutionCmdSignalCmdSetVariablesCmdGetTimersCmdDeployCmdNewTaskCmdSubmitTaskExecuteJobCmd等等,具体可参加pvm/internal/cmdtask/internal/cmd包及其它包下实现Command接口的类),这是典型的Command模式的应用,感兴趣的读者可以去了解设计模式中的Command模式;

Ø  TaskService-人工活动的服务接口,包括对任务的创建、提交、查询、保存、删除等操作;

Ø  ManagementService-web管理控制台的服务接口,目前只有获得消息及计时器的接口实现;

Ø  HistoryService-目前有对历史库中的流程实例、活动实例进行查询、某个流程定义中的所有活动的平均持续时间、某个流程定义中的某个活动实例的转移的执行次数

Ø  IdentityService-用户、组、成员关系的相关操作方法

 

5、 历史库的加入

jBPM3中数据库设计一直是我比较诟病的地方,尤其是其实例数据库没有设计历史库的概念并按照办结状态将运行结束的实例数据归入历史库,在这种情况下它的实例数据库就会随着时间而无限膨胀,这就阻碍了它的真实应用,而在jBPM4的最新代码中(注意Alpha1还没有出现),历史库的相关功能代码竟然出现了!详见ExecutionImpl最新代码中的fireHistoryEvent方法及一系列的historyXXX方法。在ActivityBehaviourexecute方法中加入了historyTaskStart方法的调用、signal方法中加入了historyTaskEnd方法的调用,而以上2个方法在ExecutionImpl中都是以历史事件(HistoryEvent4个实现子类ProcessInstanceStartProcessInstanceEndActivityStartActivityEnd分别用作流程实例的创建结束期、活动实例的创建结束期的历史数据处理)的触发机制来实现的,也就是在整个流程实例执行的过程中,都加入了对将运行数据存入历史库的历史事件(HistoryEvent)的触发。这样实例列表的查询可以只查询历史库。不过这里很遗憾的是,这个事件没有同时清除运行库的数据,这样还是会造成运行库的无限膨胀问题。

 

  • 大小: 8.8 KB
  • 大小: 12.5 KB
  • 大小: 8.8 KB
  • 大小: 114.6 KB
  • 大小: 31.4 KB
  • 大小: 26.4 KB
分享到:
评论
33 楼 乐邪鬼 2009-11-20  
4.0的文档完全看不懂,连附带的exmaple都跑不起来。
32 楼 llfzy 2009-10-12  
<p>JBPM我用的还不怎么熟练!</p>
<p> </p>
<p> </p>
<p><a href="http://s.click.taobao.com/t_1?i=qz78fN%2Bpk8BTuQ%3D%3D&amp;p=mm_14292671_0_0&amp;n=11"><br>入门单反新王者 佳能高清500D套机(含18-55IS镜头)</a><br><a href="http://s.click.taobao.com/t_1?i=qX1fEUekOgm0qg%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">【国庆特价】台湾微米1200万高清摄像机HDVH20 D80 HD-D10升级版</a><br><a href="http://s.click.taobao.com/t_1?i=qvYi2aN5Z3nzeA%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">◥◣全国联保 大陆行货◢◤索尼T900 &lt;高清视频&gt; 国庆促销300台</a><br><a href="http://s.click.taobao.com/t_1?i=qvezK1P3Kbqvog%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">09年新款DDV-6800HD数码相机摄像带遥控MP3/MP4 升级1600万像素</a><br><a href="http://s.click.taobao.com/t_1?i=qvQus%2F2p41Lujg%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">国庆促销 [酷拍] 高清防抖数码摄像机,1200万像素</a><br><a href="http://s.click.taobao.com/t_1?i=qXn%2BA9WaqYRvCg%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">K800/K600姊妹机■特价!尼柯K99■500万像素 4倍变焦 摄像 扩展</a><br><a href="http://s.click.taobao.com/t_1?i=qXssJ92egGbuAg%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">松下LX3GK 正品大陆行货★ 千万像素+24mm超广角 ★钻石信誉</a><br><a href="http://s.click.taobao.com/t_1?i=qXMWriRrolnhAw%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">五一特价 DV-592(DV592)升级版1600万像素超大3.0屏数码摄像机</a><br><a href="http://s.click.taobao.com/t_1?i=of9UcXaRZj6i&amp;p=mm_14292671_0_0&amp;n=11">1200万像素3.0屏带MP3/4多功能数码摄象机 DV-568(DDV-V8)<br></a><a href="http://s.click.taobao.com/t_1?i=qXpboEyxxOA%2BPQ%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">1200万数码相机/摄像 美柯隆数码相机 536/1288 支持4G</a><br><a href="http://s.click.taobao.com/t_1?i=qveyF7B3BMxljg%3D%3D&amp;p=mm_14292671_0_0&amp;n=11">微米HDV-H20高清数码摄像机 5倍光变 1200万相素 防抖功能+套餐</a></p>
31 楼 vanlin 2009-10-12  
是哦, jbpm4 实现方式看起来复杂了,,给用户(程序员)的方面则简单了不少,,也更好处理咯。。
30 楼 Else 2009-06-15  
我现在用的CR1,问题也很多,有很多examples流程中的element在jpdl-4.0.xsd根本没有定义,现在在查原因。。
29 楼 lovit 2009-06-09  
melin 写道
我们系统现在每天要启动5万左右的流程单子,都是流程归档时移入历史表中。

是用jbpm吗??
28 楼 momo_1204 2009-06-09  
请问下,流程审批人撤回操作支持吗,也就是说他刚批完,流程转到了下一步,突然发现自己批错了,想撤回来重新批,这时的逻辑如何处理(可能他刚才的审批时执行了动作,比如金额加了100等),谢谢高手回答,呵呵
27 楼 melin 2009-04-25  
我们系统现在每天要启动5万左右的流程单子,都是流程归档时移入历史表中。
26 楼 yaoqiang_csdn 2009-03-18  
赞赞赞赞赞
25 楼 intelchen 2009-02-23  
147175882 写道
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也很难从本质上解决楼主所说的这个问题.


我也那么认为,历史数据可以作为时候备份的机制来处理,如果jbpm4支持可以配置的备份机制,否则还是在实际应用中根据需求来进行选择备份。
24 楼 intelchen 2009-02-23  
ynstudio 写道
高手!
我也在研究jbpm4。我们的工作流就基于jbpm4来做的,不过现在才开始流程管理之类的功能的开发。

jbpm的alaph版本你们也敢用?
你们的基于jbpm4是做实际项目还是只是作为研究的项目?
23 楼 elvishehai 2009-02-19  
有没有简单的demo
22 楼 snowfox2008 2009-02-19  
147175882 写道
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也很难从本质上解决楼主所说的这个问题.


呵呵,不错!不过如果jbpm4不解决这个问题,那么它还是一个中看不中用的引擎,那么就必须由项目的开发人员去做这件事,就像你们用quartz处理一样。其实复杂不复杂还是在于实例数据之间的关系,jbpm的数据库表个人一直认为太过于复杂,不过对于基于orm来实现持久层的产品来说,实现起来就要简单一些,因为po之间的关系已经由orm工具维护好了(例如流程实例就是所有其它实例的祖父,删除所有实例时,只对流程实例做操作就可以了,不会像您所说的要处理关系什么的),至于工作流实例本身的事务也不用担心,而对于业务数据也不需要处理,只要业务数据和工作流实例数据有一个唯一的关联关系就可以了,移到历史库关系不会做改变。
最后要说明的是,这个归入历史库,清除运行库的操作,在流程结束时去触发一个异步的事件,由这个异步的事件来干这件事,这样就不会影响流程的最后一个用户的体验了。而对于索引问题,这时运行库就会稳定一个数量级上基本上就不会变化,因此运行库就没有必要建索引了。而历史库肯定需要建索引(因为主要用来查询),但是对于历史库的查询,在真实的业务系统中,使用的频率本身就很低,所以影响也不会很大。
21 楼 dekko 2009-02-19  
好文,顶,楼主加油,持续关注!
20 楼 kjj 2009-02-18  
left405 写道
请问 jbpm3 还没有搞得非常明白,  就去看jbpm4 合适吗

应该没问题,两者差别比较大!
19 楼 147175882 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也很难从本质上解决楼主所说的这个问题.

18 楼 left405 2009-02-18  
请问 jbpm3 还没有搞得非常明白,  就去看jbpm4 合适吗
17 楼 147175882 2009-02-18  
jbpm4的jpdl不是很好用啊,不能在画图的时候设置flow的属性,用XML的模式编辑完后,只要修改jdpl模型,XML的编辑全部被清空了.
楼主有没有这种感受啊?

相对而言用pvm开发还显得快点
16 楼 pior 2009-02-18  
正好要学习工作流```那是不是可以直接从JBPM4入手了??
15 楼 piaoling 2009-02-18  
呵呵,写得非常好,JBPM看样子源码得重看了
14 楼 snowfox2008 2009-02-17  
supercwg 写道
jbpm 4 是不是不支持 Spring 啊??? 好像都没有看到关于jbpm的技术架构文档介绍的

当然支持了,在jbpm4中有:SpringCommandService、SpringEnvironmentContext、SpringEnvironment、SpringConfiguration。其实说白了,根本就不存在支持不支持这种说法,因为即使这里面完全没有Spring的代码,你也可以自己去集成。

相关推荐

    JBPM与Activity分析.doc

    ### JBPM与Activity实现原理与性能分析 #### 一、概述 随着企业信息化建设的深入,工作流管理系统作为实现业务自动化的重要工具,逐渐成为企业信息化不可或缺的一部分。JBPM与Activiti作为当前市场上主流的工作流...

    【转载 见附件】纵观jBPM:从jBPM3到jBPM5以及Activiti5

    文件名为"纵观jBPM:从jBPM3到jBPM5以及Activiti5.doc",与标题一致,预示着文档内容会深入探讨jBPM的历史发展,以及在不同版本中的演变,同时可能有对比Activiti5的部分。 **详细知识点可能包括:** 1. **jBPM3**...

    jbpm和shark工作流引擎对比.doc

    jbpm和shark工作流引擎对比 本文对jbpm和shark工作流引擎进行了深入的比较,涵盖了稳定性、易用性、灵活性、可监管性、扩展性和可维护性等多方面。工作流引擎是企业信息化建设中非常重要的一环,选择合适的工作流...

    javaeye热点阅读

    3. jbpm3与jbpm4实现对比:jbpm是一款流行的工作流管理系统,对比两个版本的实现,有助于开发者了解其演进和改进,选择适合项目的版本。 4. Java、PHPRPC、Hessian、Burlap、AMF3、XML序列化的效率对比:这些是不同...

    纵观jBPM:从jBPM3到jBPM5以及Activiti5.doc

    【jBPM5与Activiti5的对比】 jBPM5在设计上更注重面向业务人员,增强了BPMS特性,如支持BPMN2.0标准,提供业务规则集成,以及更强大的流程模拟和监控能力。与此同时,Activiti5作为jBPM的一个分支,保留了jBPM4的...

    jbpm4的用户手册与开发向导

    2. 集成应用:讲解如何将jBPM4与Spring、Hibernate等常见框架集成,实现业务逻辑与流程控制的无缝结合。 3. 流程持久化:解释jBPM4如何存储和恢复流程实例的状态,确保流程的持久性。 4. 测试与调试:提供测试策略和...

    JBPM4.4与SSH2之整合(附可运行源码和jar包列表)(my_jbpm4.4_ssh2.rar)

    这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了不少别人的整合资料和源码,但是最终...

    jbpm文档+ppt

    4. **案例分析**:提供实际业务场景,如人力资源审批流程、订单处理流程等,演示如何用jbpm实现。 5. **最佳实践**:分享在设计和实现流程时应遵循的原则和技巧,以提高效率和可维护性。 6. **扩展与集成**:讨论...

    根据jbpm4的.jpdl.xml流程定义文件,绘制出流程图

    3. **创建流程图**:使用流程图工具(如Jbpm本身的Designer或第三方工具如PlantUML),根据JPDL文件中的信息手动或自动生成图形化表示。每个节点需要在图上正确放置,转换线连接它们,确保流程的逻辑清晰可见。 4. ...

    完善jbpm学习资料

    jbpm,全称为Java Business Process Management,是一款开源的工作流管理系统,用于实现业务流程自动化和管理。这个压缩包包含了丰富的jbpm学习资源,旨在为初学者和有经验的开发者提供全面的指导。 首先,"jBPM...

    两款java工作流引擎BPM领域的流行的20种模式jbpm与ccbpm的对比

    在IT行业中,工作流引擎是实现业务流程自动化的关键组件,特别是在BPM(Business Process Management)领域。本篇文章将深入探讨两种流行的Java工作流引擎——jbpm和ccbpm,并对比它们的特点、功能以及适用场景,...

    JBoss jBPM 实例说明

    该研究采用工作流模式框架,不仅比较了这些开源系统的功能特点,还与 Staffware、WebSphere MQ 和 Oracle BPEL PM 这三款商业 BPM 系统进行了对比分析。 根据研究结果,可以得出以下几点结论: 1. **目标用户群体**...

    一个Jbpm员工请假流程的实例(doc)

    4. **环境与兼容性** 该流程实例是在JBoss-IDE 1.6环境下测试通过的,特别指出它适用于jbpm3.1版本。原文中的流程不适用于jbpm3.1,因此进行了相应的修改和优化。 5. **学习资源** 原文来源于...

    Java四大主流开源工作流引擎分析Shark,osworkflow,jbpm,jflow

    jbpm则由JBoss公司开发,其最新版本jbpm3采用了Hibernate3作为持久层,这也是由于二者同属JBoss生态系统的缘故。jbpm3的一大亮点是其图形化流程定义已整合到JBoss Eclipse IDE中,开发者可以通过插件轻松编辑流程...

    JBPM online design

    3. **版本控制**:系统可以记录每次设计的修改,便于回溯和对比不同版本的流程模型。 4. **协同编辑**:多人可以同时在线编辑同一个流程图,增强了团队协作效率。 5. **兼容BPMN标准**:遵循Business Process ...

    JBPM开发手册和用户手册

    3. **持久化机制**:JBPM使用Hibernate作为默认的持久化层,确保流程实例、任务状态等数据能够安全存储和恢复。 4. **任务管理**:包括任务分配、任务处理和任务查询等功能,支持自定义任务工作流,以适应不同业务...

Global site tag (gtag.js) - Google Analytics