首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Activiti 核心類速查手冊:流程引擎、服務接口與運行時對象全解析

     編輯:Java 相關知識

為什麼選擇 Activiti?

傳統硬編碼流程的弊端:業務屬性與流程屬性混雜、流程邏輯與業務邏輯耦合、流程變更需修改代碼重新部署。Activiti 作為 Apache 許可的開源 BPM 平台,將流程定義外部化(BPMN 2.0),實現流程與業務解耦。

核心引擎配置類

類名 職責 關鍵配置
ProcessEngineConfiguration 流程引擎配置對象 數據源、事務管理、建表策略、郵件服務器等
ProcessEngine 流程引擎核心入口 獲取各 Service、校驗配置、管理服務生命周期

七大核心 Service 接口

RepositoryService(倉庫服務)

  • 部署/刪除/查詢流程定義
  • 管理流程圖、規則文件、表單資源
  • 核心:DeploymentBuilder、ProcessDefinition

RuntimeService(運行時服務)

  • 啟動/掛起/刪除流程實例
  • 執行流程跳轉、設置/獲取流程變量
  • 核心:ProcessInstance、Execution

TaskService(任務服務)

  • 個人/組任務查詢、簽收、辦理、轉交
  • 任務變量、附件、評論管理
  • 核心:Task(ACT_RU_TASK 表數據)

HistoryService(歷史服務)

  • 查詢歷史流程實例、活動、任務、變量
  • 報表統計、審計追溯

IdentityService(身份服務)

  • 用戶/組的增刪改查
  • 用戶組織架構管理

FormService(表單服務)

  • 獲取啟動/任務表單數據
  • 提交表單數據驅動流程流轉

ManagementService(管理服務)

  • 數據庫表元數據、作業管理
  • 執行命令、關閉引擎

關鍵運行時對象關係圖

ProcessInstance (流程實例)
    └─ Execution (執行對象/令牌) ── ActivityImpl (活動節點)
           ├─ 可並行分支(多 Execution)
           └─ Task (用戶任務) ── 身份鏈接
  • ProcessInstance:流程實例根節點,對應 ACT_RU_EXECUTION 表 PARENT_ID_=NULL 記錄
  • Execution:流程執行分支,支持並行網關產生多實例
  • Task:用戶任務節點,擴展自 Execution,包含辦理人、創建時間、截止時間
  • ActivityImpl:流程定義中的靜態節點元數據(類型、坐標、屬性)

典型業務操作代碼片段

部署流程

repositoryService.createDeployment()
    .addClasspathResource("processes/leave.bpmn20.xml")
    .addClasspathResource("processes/leave.png")
    .name("請假流程 v1.0")
    .deploy();

啟動流程並設置業務鍵

ProcessInstance pi = runtimeService.startProcessInstanceByKey(
    "leaveProcess", 
    "businessKey_123",  // 關聯業務表主鍵
    variables);

處理用戶任務

// 簽收
taskService.claim(taskId, userId);
// 完成並攜帶變量
taskService.complete(taskId, Map.of("approved", true, "comment", "同意"));

進階應用場景

  • 動態指派:TaskListener + 表達式 ${userService.findApprover(execution)}
  • 流程變更:RuntimeService.createChangeActivityStateBuilder() 實現節點跳轉/回退
  • 多租戶:Schema 隔離 / 字段隔離 + TenantIdProvider
  • 事件監聽:實現 ActivitiEventListener 監聽流程/任務/變量事件

掌握 Activiti 核心類體系,是構建靈活、可維護工作流應用的基礎。建議配合 act-*.sql 腳本深入理解 23 張核心表結構,事半功倍。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved