1、ProcessEngine
說明:
1) 在Activiti中最核心的類,其他的類都是由他而來。
2) 産生方式:
ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
調用ProcessEngines的getDefaultProceeEngine方法時會自動加載classpath下名為activiti.cfg.xml檔案。
生成資料庫表中用到的兩種方式:
3) 可以産生RepositoryService
RepositoryService repositoryService=processEngine.getRepositoryService();
4) 可以産生RuntimeService
RuntimeService runtimeService=processEngine.getRuntimeService();
5) 可以産生TaskService
TaskService taskService=processEngine.getTaskService();
各個Service的作用:
名稱 | 作用 |
RepositoryService | 管理流程定義 |
RuntimeService | 執行管理,包括啟動、推進、删除流程執行個體等操作 |
TaskService | 任務管理 |
HistoryService | 曆史管理(執行完的資料的管理) |
IdentityService | 組織機構管理 |
FormService | 一個可選服務,任務表單管理 |
2、RepositoryService
是Activiti的倉庫服務類。所謂的倉庫指流程定義文檔的兩個檔案:bpmn檔案和流程圖檔。
1) 産生方式:
RepositoryService repositoryService=processEngine.getRepositoryService();
2) 可以産生DeploymentBuilder,用來定義流程部署的相關參數
DeploymentBuilder deploymentBuilder=repositoryService.createDeployment();
3) 删除流程定義
repositoryService.deleteDeployment(deploymentId);
3、RuntimeService
是activiti的流程執行服務類。可以從這個服務類中擷取很多關于流程執行相關的資訊。
4、TaskService
是activiti的任務服務類。可以從這個類中擷取任務的資訊。
5、HistoryService
是activiti的查詢曆史資訊的類。在一個流程執行完成後,這個對象為我們提供查詢曆史資訊。
6、ProcessDefinition
流程定義類。可以從這裡獲得資源檔案等。
7、ProcessInstance
代表流程定義的執行執行個體。如範冰冰請了一天的假,她就必須發出一個流程執行個體的申請。一個流程執行個體包括了所有的運作節點。我們可以利用這個對象來了解目前流程執行個體的進度等資訊。流程執行個體就表示一個流程從開始到結束的最大的流程分支,即一個流程中流程執行個體隻有一個。
8、Execution
Activiti用這個對象去描述流程執行的每一個節點。在沒有并發的情況下,Execution就是同ProcessInstance。流程按照流程定義的規則執行一次的過程,就可以表示執行對象Execution。
如圖為ProcessInstance的源代碼:
/** Represents one execution of a {@link ProcessDefinition}.
*
* @author Tom Baeyens
* @author Joram Barrez
* @author Daniel Meyer
* @author
public interface ProcessInstance extends Execution
從源代碼中可以看出ProcessInstance就是Execution。但在現實意義上有所差別:
在單線流程中,如上圖的貸款流程,ProcessInstance與Execution是一緻的。
這個例子有一個特點:wire money(彙錢)和archive(存檔)是并發執行的。 這個時候,總線路代表ProcessInstance,而分線路中每個活動代表Execution。
總結: