( 二 )、Activiti 表結構介紹、核心接口介紹


( 二 )、Activiti 表結構介紹、核心接口介紹

 

 

1、表結構介紹

官網地址:https://www.activiti.org/userguide/#creatingDatabaseTable

1.1、表前綴說明

  • act_ge_ 通用數據表,ge是general的縮寫
  • act_hi_ 歷史數據表,hi是history的縮寫,對應 HistoryService 接口
  • act_id_ 身份數據表,id是identity的縮寫,對應 IdentityService 接口
  • act_re_ 流程存儲表,re是repository的縮寫,對應 RepositoryService 接口,存儲流程部署和流程定義等靜態數據
  • act_ru_ 運行時數據表,ru是runtime的縮寫,對應 RuntimeService 接口和 TaskService 接口,存儲流程實例和用戶任務等動態數據

1.2、Activiti 數據表清單:

表分類 表名 備注說明
一般數據 ACT_GE_BYTEARRAY 流程定義的bpmn和png文件
ACT_GE_PROPERTY 系統相關屬性
流程歷史記錄 ACT_HI_ACTINST 歷史的流程實例
ACT_HI_ATTACHMENT 歷史的流程附件
ACT_HI_COMMENT 歷史的說明性信息
ACT_HI_DETAIL 歷史的流程運行中的細節信息
ACT_HI_IDENTITYLINK 歷史的流程運行過程中用戶關系
ACT_HI_PROCINST 歷史的流程實例
ACT_HI_TASKINST 歷史的任務實例
ACT_HI_VARINST 歷史的流程實例變量表
用戶用戶組表 ACT_ID_GROUP 身份信息-組信息
ACT_ID_INFO 身份信息-組信息
ACT_ID_MEMBERSHIP 身份信息-用戶和組關系的中間表
ACT_ID_USER 身份信息-用戶信息
流程定義表 ACT_RE_DEPLOYMENT 流程定義部署表
ACT_RE_MODEL 模型信息
ACT_RE_PROCDEF 流程定義信息
運行實例表 ACT_RU_EVENT_SUBSCR 運行時事件
ACT_RU_EXECUTION 運行時流程執行實例
ACT_RU_IDENTITYLINK 運行時參與者的用戶信息
ACT_RU_JOB 運行時作業
ACT_RU_TASK 運行時任務
ACT_RU_VARIABLE 流程運行時變量表,記錄當前流程可使用的變量,包括 global 和 local

 

2、核心API介紹
官網介紹:https://www.activiti.org/userguide/#chapterApi

 引擎 API 是與 Activiti 交互的最常見方式。中心起點是ProcessEngine,可以按照 配置部分中所述的多種方式創建。您可以從 ProcessEngine 獲取包含工作流/BPM 方法的各種服務。ProcessEngine 和服務對象是線程安全的。因此,您可以為整個服務器保留對其中 1 個的引用。

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RuntimeService runtimeService = processEngine.getRuntimeService(); RepositoryService repositoryService = processEngine.getRepositoryService(); TaskService taskService = processEngine.getTaskService(); ManagementService managementService = processEngine.getManagementService(); IdentityService identityService = processEngine.getIdentityService(); HistoryService historyService = processEngine.getHistoryService(); FormService formService = processEngine.getFormService(); DynamicBpmnService dynamicBpmnService = processEngine.getDynamicBpmnService();

  ProcessEngines.getDefaultProcessEngine()將在第一次調用時初始化並構建流程引擎,然后總是返回相同的流程引擎。可以使用ProcessEngines.init() 和正確創建和關閉所有流程引擎ProcessEngines.destroy()

activiti.cfg.xmlProcessEngines類將掃描所有activiti-context.xml文件。對於所有activiti.cfg.xml文件,流程引擎將以典型的 Activiti 方式構建:ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(inputStream).buildProcessEngine(). 對於所有activiti-context.xml文件,流程引擎將以 Spring 方式構建:首先創建 Spring 應用程序上下文,然后從該應用程序上下文中獲取流程引擎。

所有服務都是無狀態的。這意味着您可以輕松地在集群中的多個節點上運行 Activiti,每個節點都訪問同一個數據庫,而不必擔心哪台機器實際執行了先前的調用。無論在何處執行,對任何服務的任何調用都是冪等的。

2.1、RepositoryService: 

可能是使用 Activiti 引擎時需要的第一個服務。該服務提供用於管理和操作的操作deployments以及process definitions. 在此不贅述,流程定義是 BPMN 2.0 流程的 Java 對應物。它是過程中每個步驟的結構和行為的表示。deployment是 Activiti 引擎中的封裝單位。一個部署可以包含多個 BPMN 2.0 xml 文件和任何其他資源。一個部署中包含的內容的選擇取決於開發人員。它的范圍可以從單個流程 BPMN 2.0 xml 文件到整個流程包和相關資源(例如部署hr-processes可以包含與 hr 流程相關的所有內容)。RepositoryService允許這樣的deploy包。部署部署意味着它被上傳到引擎,在存儲到數據庫之前,所有流程都經過檢查和解析。從那時起,系統就知道部署了,現在可以啟動部署中包含的任何進程。

此外,該服務還允許

  • 查詢引擎已知的部署和流程定義。

  • 暫停和激活作為一個整體或特定流程定義的部署。掛起意味着不能對它們進行進一步的操作,而激活是相反的操作。

  • 檢索各種資源,例如引擎自動生成的部署或流程圖中包含的文件。

  • 檢索流程定義的 POJO 版本,該版本可用於使用 Java 而不是 xml 內省流程。

// 部署流程
repositoryService.createDeployment(); // 刪除流程
repositoryService.deleteDeployment(deploymentId); // 刪除模型
repositoryService.deleteModel(modelId);

 

2.2、RuntimeService 

恰恰相反。它處理啟動流程定義的新流程實例。如上所述,aprocess definition定義了流程中不同步驟的結構和行為。流程實例是此類流程定義的一次執行。對於每個流程定義,通常有許多實例同時運行。RuntimeService同樣是用於檢索和存儲的服務process variables。這是特定於給定流程實例的數據,並且可以被流程中的各種結構使用(例如,獨占網關經常使用流程變量來確定選擇哪個路徑來繼續流程)。這Runtimeservice還允許查詢流程實例和執行。執行是'token'BPMN 2.0 概念的一種表示。基本上,執行是指向流程實例當前所在位置的指針。最后,RuntimeService當流程實例等待外部觸發器並且流程需要繼續時使用。流程實例可以有多種wait states,並且該服務包含各種操作以向實例發出信號,表明接收到外部觸發器並且流程實例可以繼續。

runtimeService.startProcessInstanceByKey(key) // 或者
runtimeService.startProcessInstanceById(processDefinitionId);

 

2.3、TaskService

需要由系統的實際人類用戶執行的任務是 BPM 引擎(如 Activiti)的核心。圍繞任務的所有內容都分組在,例如

  • 查詢分配給用戶或組的任務

  • 創建新的獨立任務。這些是與流程實例無關的任務。

  • 操縱任務被分配給哪個用戶或哪些用戶以某種方式參與該任務。

  • 要求並完成一項任務。聲明意味着某人決定成為該任務的受讓人,這意味着該用戶將完成該任務。完成意味着完成任務的工作。通常這是填寫某種形式。

// 查詢任務
taskService.createTaskQuery().list(); // 查詢張三的任務
taskService.createTaskQuery().taskCandidateOrAssigned("張三").list(); 完成任務 taskService.complete(String taskId);

 

2.4、IdentityService

非常簡單。它允許管理(創建、更新、刪除、查詢……)組和用戶。重要的是要了解 Activiti 實際上不會在運行時對用戶進行任何檢查。例如,可以將任務分配給任何用戶,但引擎不會驗證系統是否知道該用戶。這是因為 Activiti 引擎還可以與 LDAP、Active Directory 等服務結合使用。

2.5、FormService

一項可選服務。這意味着 Activiti 可以在沒有它的情況下完美使用,而不會犧牲任何功能。該服務引入了啟動表單任務表單的概念。開始表單是在流程實例啟動之前向用戶顯示的表單,而任務表單是在用戶想要完成表單時顯示的表單。Activiti 允許在 BPMN 2.0 流程定義中定義這些表單。該服務以一種易於使用的方式公開這些數據。但同樣,這是可選的,因為表單不需要嵌入到流程定義中。

2.6、HistoryService

暴露了 Activiti 引擎收集的所有歷史數據。執行流程時,引擎可以保留很多數據(這是可配置的),例如流程實例的啟動時間、誰執行了哪些任務、完成任務需要多長時間、每個流程實例中遵循的路徑等. 該服務主要暴露查詢能力來訪問這些數據。

使用Activiti 編寫自定義應用程序時,通常不需要ManagementService 。它允許檢索有關數據庫表和表元數據的信息。此外,它還公開了作業的查詢功能和管理操作。作業在 Activiti 中用於各種事情,例如計時器、異步延續、延遲暫停/激活等。稍后,將更詳細地討論這些主題。

2.7、DynamicBpmnService

可用於更改流程定義的一部分,而無需重新部署它。例如,您可以更改流程定義中用戶任務的受理人定義,或更改服務任務的類名。

有關服務操作和引擎 API 的更多詳細信息,請參閱javadocs

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM