核心入口
| 類/介面 | 職責 | 關鍵方法 |
ProcessEngineConfiguration | 引擎配置:資料源、建表策略、事務管理 | buildProcessEngine() |
ProcessEngine | 核心入口,管理所有 Service | getRepositoryService(), getRuntimeService(), getTaskService()... |
七大核心 Service
| Service | 領域 | 典型用途 |
RepositoryService | 靜態資源 | 部署流程定義、查詢/刪除/掛起/激活、讀取 BPMN/PNG 資源 |
RuntimeService | 運行時流程 | 啟動流程實例、變數操作、信號/訊息觸發、查詢執行對象 |
TaskService | 人工任務 | 查詢待辦/已辦、簽收/完成/委派/轉交、任務變數、候選人/組 |
IdentityService | 用戶/組 | 用戶/組 CRUD、成員關係、驗證密碼 |
FormService | 表單 | 啟動/任務表單資料渲染、提交表單 |
HistoryService | 歷史資料 | 查詢歷史流程/活動/任務/變數/詳細、報表統計 |
ManagementService | 引擎維護 | 資料庫表結構檢查、作業執行器管理、異步作業查詢/重試 |
關鍵實體類
- 部署相關:
Deployment、DeploymentBuilder、ProcessDefinition、Resource。
- 運行相關:
ProcessInstance (流程實例)、Execution (執行分支/並行)、ActivityImpl (節點定義)、TransitionImpl (流轉)。
- 任務相關:
Task (人工任務)、TaskQuery、NativeTaskQuery。
- 歷史相關:
HistoricProcessInstance、HistoricActivityInstance、HistoricTaskInstance、HistoricVariableInstance。
常用操作速查
// 1. 部署
repositoryService.createDeployment()
.name("請假流程")
.addClasspathResource("processes/leave.bpmn20.xml")
.addClasspathResource("processes/leave.png")
.deploy();
// 2. 啟動流程
Map vars = new HashMap<>();
vars.put("applicant", "張三");
vars.put("days", 3);
ProcessInstance pi = runtimeService.startProcessInstanceByKey("leaveProcess", vars);
// 3. 查詢待辦任務
List tasks = taskService.createTaskQuery()
.taskAssignee("李經理")
.processDefinitionKey("leaveProcess")
.list();
// 4. 完成任務
taskService.complete(task.getId(), Collections.singletonMap("approved", true));
// 5. 讀取流程圖片
InputStream png = repositoryService.getResourceAsStream(
pd.getDeploymentId(), pd.getDiagramResourceName());
建表策略 (ProcessEngineConfiguration)
| 策略常數 | 行為 |
DB_SCHEMA_UPDATE_CREATE_DROP | 啟動建表、關閉刪表 (測試用) |
DB_SCHEMA_UPDATE_TRUE | 啟動檢查並建立/更新表 (開發常用) |
DB_SCHEMA_UPDATE_FALSE | 不自動建表 (生產環境,需手動執行 SQL) |