一 : 重要概念
1 : process definition(流程定義):
工作流的流程的完整定義,包括節(jié)點和節(jié)點之間的走向等關鍵信息。通常以xml格式提供。一個具體的系統往往是由許多個流程組成的。
2 : process instance(流程實例):
每個process defination生成的業(yè)務層的實例。當process instance創(chuàng)建以后,代表流程的執(zhí)行路徑,并被定義到開始節(jié)點。
3 : token(令牌):
表示了一個執(zhí)行的路徑,它是運行時產生的。當實例建立以后,令牌也就產生了。
4 : node:
表示流程中的一個節(jié)點。
5 : transition:
關聯兩個節(jié)點,用于表示節(jié)點的走向
6 : signal:
讓一個token執(zhí)行下一步。process instance也有signal,當用process instance的signal時,其實就是運行process instance根令牌(root token)的signal. 當token進入到一個node時,node會被執(zhí)行,并產生一些事件,比如進入、離開節(jié)點等,這也是執(zhí)行業(yè)務邏輯的地方。事件由action來表示。
7 : 事件Event
Event反映的是流程執(zhí)行中的各個時刻。在流程執(zhí)行中JBPM引擎會在計算下一個狀態(tài)的時候觸發(fā)各種事件。一個事件通常和流程定義中的一個元素相關聯,比如流程定義本身,節(jié)點或者轉移。大部分的元素能夠觸發(fā)不同類型的事件,比如一個節(jié)點可以觸發(fā)節(jié)點進入事件,節(jié)點離開事件。事件其實是和動作連接在一起的。每個事件維護一個動作列表。當JBPM引擎觸發(fā)一個事件的時候,該事件維護的動作列表中的動作將被執(zhí)行。
事件類型
在JBPM中事件類型是寫死在事件類中的,共有16種:
EVENTTYPE_TRANSITION = "transition"; // 轉移
EVENTTYPE_BEFORE_SIGNAL = "before-signal"; // 發(fā)信號前
EVENTTYPE_AFTER_SIGNAL = "after-signal"; // 發(fā)信號后
EVENTTYPE_PROCESS_START = "process-start"; // 處理開始狀態(tài)
EVENTTYPE_PROCESS_END = "process-end"; // 處理結束狀態(tài)
EVENTTYPE_NODE_ENTER = "node-enter"; // 進入節(jié)點
EVENTTYPE_NODE_LEAVE = "node-leave"; // 離開節(jié)點
EVENTTYPE_SUPERSTATE_ENTER = "superstate-enter"; // 進入超級狀態(tài)
EVENTTYPE_SUPERSTATE_LEAVE = "superstate-leave"; // 離開超級狀態(tài)
EVENTTYPE_SUBPROCESS_CREATED = "subprocess-created"; // 子流程創(chuàng)建
EVENTTYPE_SUBPROCESS_END = "subprocess-end"; // 子流程結束
EVENTTYPE_TASK_CREATE = "task-create"; // 任務創(chuàng)建
EVENTTYPE_TASK_ASSIGN = "task-assign"; // 任務分派
EVENTTYPE_TASK_START = "task-start"; // 任務啟動
EVENTTYPE_TASK_END = "task-end"; // 任務結束
EVENTTYPE_TIMER = "timer"; // 定時器
二 : 常用 API
創(chuàng)建執(zhí)行實例很簡單有2種方式 :
1 : 通過 ProcessDefinition 類的 createProcessInstance() 方法




2 :通過 ProcessInstance 類的 構造函數







