JBPM对常见流程问题的解决

前两天在一群里看到个一码农的分享,觉得还不错,今天弄上来给大家看看,关于JBPM对常见流程问题的解决 ,下面进入正文。

首先JBPM 的API文档非常匮乏,但是,JBPM的源码内部有很多注释,其代码可读性非常强,核心代码我认为不超过1w行,引擎核心代码也许只有两三千行。另外,阅读源码,最好对UML活动图、Petri网、Workflow模式较熟悉,譬如Join. setDiscriminator(),如果不了解Workflow模式的Discriminator模式,该方法就会不知所措。

Process本质上,只有两个对象:Node和Transition(节点和有向弧),只要这两类对象就可以完整绘出一个流程图,当然,Node有很多子类,譬如Start、End、Fork、Join、Decision等。

JBPM 的过程调度,是通过Token在流程节点之间转移实现的。譬如TaskInstance.end()的时候,调用Token.signal(),在 signal()内部,依次调用:Node.leave(),Transition.take(),Node.enter(),这三个调用依次引发如下三个event:node-leave,transition,node-enter,在event内部,就处理我们自定义的ActionHandler和写日志。从中我们可以看出,事件(event)处理和Token调度是分离的。上面的三个event是重复循环的,可以驱动流程向前进行:离开当前节点 进入下一节点。过渡上面就是JBPM的大致调度过程,清晰而简洁。最后给大家推荐这个群,真心不错!群号:152654373,全是讨论这东西的。

你可能感兴趣的:(源码,Activiti,jbpm,Bonita,开源工作流引擎)