JBPM5.2 重要的API
1) Knowledge Base
jBPM允许你先创建一个knowledge base。这个knowledge base应该包含你所有的流程定义,就是需要被会话执行的流程。创建一个knowledge base,先用knowledge builder来连接不同资源的流程,然后从builder创建一个新的knowledge base。
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("MyProcess.bpmn"), ResourceType.BPMN2); KnowledgeBase kbase = kbuilder.newKnowledgeBase();
2)Session
创建一个会话来和引擎结合。然后会话就能够被来启动一个流程或单独的事件。
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); ProcessInstance processInstance = ksession.startProcess("com.sample.MyProcess");
3)Event
会话提供了监听器的注册和删除的方法,一个流程事件监听器可以被用来监听和流程相关的事件,比如开始或完成一个流程,进入或离开一个节点等等。
public interface ProcessEventListener { void beforeProcessStarted( ProcessStartedEvent event ); void afterProcessStarted( ProcessStartedEvent event ); void beforeProcessCompleted( ProcessCompletedEvent event ); void afterProcessCompleted( ProcessCompletedEvent event ); void beforeNodeTriggered( ProcessNodeTriggeredEvent event ); void afterNodeTriggered( ProcessNodeTriggeredEvent event ); void beforeNodeLeft( ProcessNodeLeftEvent event ); void afterNodeLeft( ProcessNodeLeftEvent event ); void beforeVariableChanged(ProcessVariableChangedEvent event); void afterVariableChanged(ProcessVariableChangedEvent event); }
流程构造细节
BPMN2.0规范定义了三种主要的节点类型:
? Events:是用来建模特定事件的发生。事件有开始事件,结束事件,中间事件。
? Activities:这些动作定义了在流程执行过程当中需要被执行的不同动作。不同类型的任务是要依赖于你正在建模的动作的类型,并且动作是可以嵌套的。
? Gateways:你能够在流程中定义多个路径。依赖gateway的类型,这可以是指示并行的执行、选择等待。
BPMN 2.0 定义的元素:
流程对象
事件
* Start Event (None, Conditional, Signal, Message, Timer)
* End Event (None, Terminate, Error, Escalation, Signal, Message, Compensation)
* Intermediate Catch Event (Signal, Timer, Conditional, Message) 立即捕获事件
* Intermediate Throw Event (None, Signal, Escalation, Message, Compensation)
* Non-interrupting Boundary Event (Escalation, Timer) 非中断边界事件
* Interrupting Boundary Event (Escalation, Error, Timer, Compensation)
活动
* Script Task (Java 、 MVEL) JAVA或MVEL脚本表达式语言
* Task
* Service Task
* User Task
* Business Rule Task
* Manual Task
* Send Task
* Receive Task
* Reusable Sub-Process (Call Activity) 可复用的子流程
* Embedded Sub-Process 嵌入的子流程
* Ad-Hoc Sub-Process 点对点的子流程
* Data-Object
关口
* 分支
* Exclusive (Java, MVEL or XPath expression language) 排斥
* Inclusive (Java, MVEL or XPath expression language) 包含
* Parallel 并行
* Event-Based
* 合并
* Exclusive 排斥
* Parallel 并行
* Lanes
数据
* Java type language
* Process properties
* Embedded Sub-Process properties
* 活动properties
连接对象
* Sequence flow 时序流
流程属性的细节
BPMN2流程图式就是使用连线将不同类型的节点链接起来。流程以下属性:
ID: 惟一
NAME: 显示名称
VERSION: 版本
Package: 命名空间
Variables: 变量,用于传递数据
Swimlanes: 泳道(专用通道),指定执行人工任务的actor
Connection Layout连接布局
Manual : 人工
Shortest path : 最短路径