工作流核心API
萬事開頭難,把以前學java的步驟重來一遍,所以這次決定先介紹Activiti的“JDK”!!!
1.ProcessEngine
說明:
1) 在Activiti中最核心的類,其他的類都是由他而來。
2) 產生方式:
在前面看到了兩種建立ProcessEngine(流程引擎)的方式,而這裡要簡化很多,呼叫ProcessEngines的getDefaultProceeEngine方法時會自動載入classpath下名為activiti.cfg.xml檔案。
1) 可以產生RepositoryService
2) 可以產生RuntimeService
3) 可以產生TaskService
各個Service的作用:
RepositoryService |
管理流程定義 |
RuntimeService |
執行管理,包括啟動、推進、刪除流程例項等操作 |
TaskService |
任務管理 |
HistoryService |
歷史管理(執行完的資料的管理) |
IdentityService |
組織機構管理 |
FormService |
一個可選服務,任務表單管理 |
ManagerService |
2.RepositoryService
是Activiti的倉庫服務類。所謂的倉庫指流程定義文件的兩個檔案:bpmn檔案和流程圖片。
1) 產生方式
2) 可以產生DeploymentBuilder,用來定義流程部署的相關引數
3) 刪除流程定義
3.RuntimeService
是activiti的流程執行服務類。可以從這個服務類中獲取很多關於流程執行相關的資訊。
4.TaskService
是activiti的任務服務類。可以從這個類中獲取任務的資訊。
5.HistoryService
是activiti的查詢歷史資訊的類。在一個流程執行完成後,這個物件為我們提供查詢歷史資訊。
6.ProcessDefinition
流程定義類。可以從這裡獲得資原始檔等。
7.ProcessInstance
代表流程定義的執行例項。如范冰冰請了一天的假,她就必須發出一個流程例項的申請。一個流程例項包括了所有的執行節點。我們可以利用這個物件來了解當前流程例項的進度等資訊。流程例項就表示一個流程從開始到結束的最大的流程分支,即一個流程中流程例項只有一個。
8.Execution
Activiti用這個物件去描述流程執行的每一個節點。在沒有併發的情況下,Execution就是同ProcessInstance。流程按照流程定義的規則執行一次的過程,就可以表示執行物件Execution。
如圖為ProcessInstance的原始碼:
從原始碼中可以看出ProcessInstance就是Execution。但在現實意義上有所區別:
在單線流程中,如上圖的貸款流程,ProcessInstance與Execution是一致的。
這個例子有一個特點:wiremoney(匯錢)和archive(存檔)是併發執行的。 這個時候,匯流排路代表ProcessInstance,而分線路中每個活動代表Execution。
總結:
* 一個流程中,執行物件可以存在多個,但是流程例項只能有一個。
* 當流程按照規則只執行一次的時候,那麼流程例項就是執行物件。