jbpm4_execution流转详解.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
jbpm4_execution流转详解

PVM提供了一套和token类似的execution过程调度机制,通过对execution的完全操控,节点运行期行为有了无限的可能 PVM的流程定义模型 上图里的类全是接口。位于最上层的是ObservableElement,其提供给流程元素以附加Event(事件)的能力。在 ObservableElementImpl里,它持有一个events的集合属性。对于流程元素来说,典型的事件有:流程启动/结束,节点启动/结束和 转移线执行(take)。 EventImpl透过EventListenerReference实例的集合持有EventListener实例。这样在引擎执行过程调度时,就非常容易地通过流程元素本身获取事件监听器并在相应的时候执行它们。 protected ListEventListenerReference listenerReferences; EventListenerReference.java protected EventListener eventListener; 和传统的观察者模式一致,EventListener接口有且只有一个方法: 紧接着ObservableElement的是CompositeElement,其扩展了ObservableElement接口。先看看它的方法: 很明显,它持有了Activity的集合,对于ProcessDefinition来说,这是一件很自然地事情:流程定义包含多个节点定义。重要的是Activity自身华丽的变身:节点定义实现了嵌套,出现了结构块。看图说话: 结构块是BPEL和BPMN里的重要概念。既然号称PVM,则必须向BPEL和BPMN致敬。稍后我们可以看到,结构块的引入给引擎过程调度增加了很大的复杂度。在jPDL里,与之对应的实现是group。这是jBPM4流程定义模型的最重要改变。 ProcessDefinition和Activity分别继承自CompositeElement,Activity和Transition建立起双向关联,这三者也是工作流模型里的标准建模。 PVM的过程调度 jBPM4采用execution来记录当前流程执行的位置,并通过移动execution来推动流程的流转。 execution通过activity和transition属性来记录位置。 execution是可以嵌套的,即会存在一种父子关系构成树状结构,在任何时间,只有叶子execution处于活动状态。最上层的 execution称为根execution,jBPM4里,根execution即为流程实例(在jBPM3里,记录流程执行位置的token和流程实 例processInstance是独立分开的)。 在两种情况下,execution会产生子execution。一种情况是流程定义里存在并发路径,此时execution会根据并发的路 径个数产生相应的子execution,子execution执行完毕并汇聚后则会触发它们的父execution继续流转。另外一种情况是节点定义存在 自己的变量定义和时间服务定义,则执行该节点时会为该节点产生一个独立的子execution,产生该execution的目的在于使得该节点拥有独立的 作用域,这个子execution也被称为scope execution。节点执行完毕后,与之关联的scope execution将会被移除,同时,父execution被重新激活流转。 execution的移动 execution的移动操作被封装在atomicOperation里。execution通过执行atomicOperation来推动其的转移。目前移动execution的atomicOperation有7种,如下图所示: ExecutionActivity执行节点定义的运行期行为。节点的运行期行为委派给ActivityBehaviour实现,当需要对节点行为进行扩 展时,需要实现ActivityBehaviour接口。jBPM4存在两个对节点行为进行扩展的接口,分别是ActivityBehaviour和 ExternalActivityBehaviour,ActivityBehaviour的execute方法在节点被执行时调 用;ExternalActivityBehaviour继承自ActivityBehaviour,多出一个signal方法,在节点处于等待状态被触 发流转时调用。 ActivityImpl activity = execution.getActivity(); //拿到需要执行操作的活动节点例如 [org.jbpm.jpdl.internal.activity.StartActivit

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档