1. 程式人生 > >Activiti流程引擎學習筆記

Activiti流程引擎學習筆記

一、Activiti的核心物件及資料庫對應表

(一)ProcessEngine-流程引擎,通過流程引擎可以獲取各種服務。

(二)核心服務

  • RepositoryService 管理流程定義
  • RuntimeService 執行管理,包括啟動、推進、刪除流程例項等操作
  • TaskService 任務管理
  • HistoryService 歷史資料管理(管理正在執行或歷史執行的資料)
  • IdentityService 組織機構管理 (一般很少用、因為提供的欄位太少不能滿足一般專案,一般的系統自己維護組織機構相關的表)
  • FormService 一個可選服務,任務表單管理,提供啟動表單和任務表單相關的服務。 啟動表單會在流程例項啟動之前展示給使用者, 任務表單會在使用者完成任務時展示。
  • ManagerService 查詢資料庫表中的資料、表的元資料、以及執行命令的方法,在使用Activiti的定製環境中基本上不會用到。 它可以查詢資料庫的表和表的元資料。另外,它提供了查詢和管理非同步操作的功能。 Activiti的非同步操作用途很多,比如定時器,非同步操作, 延遲暫停、啟用,等等。

(三)各個服務對應管理的表

1.RepositoryService

  • act_re_deployment-流程部署表
  • act_re_procdef-流程定義表
  • act_ge_bytearray-二進位制檔案表(存放BPM檔案,PNG檔案,以及流程變數中的物件序列化之後的二進位制流)

2.RunTimeService、TaskService

  • act_ru_execution-執行物件表,如果一個流程有分支和聚合(併發執行),那麼執行物件ID和流程例項ID就不相同,到分支時會新增新的執行物件資料
  • act_ru_task-正在執行的任務表
  • act_ru_variable-正在執行的流程變量表
  • act_ru_identitylink-任務辦理人表

3.HistoryService

  • act_hi_procinst 流程例項歷史表
  • act_hi_taskinst 任務歷史表(只有節點是UserTask的時候,該表中存在資料)
  • act_hi_actinst 活動節點歷史表
  • act_hi_identitylink 任務辦理人歷史表
  • act_hi_comment 批註表
  • act_hi_attachment 附件表

4.IdentityService

  • act_id_group 角色表
  • act_id_membership 使用者角色關係表
  • act_id_info 使用者詳細資訊表
  • act_id_user 使用者表

二、細講

(一)流程引擎

流程引擎初始化主要有兩個目的:

  • 初始化activiti所需要的表,所以最重要的是配置資料來源相關。
  • 通過流程引擎物件獲取各種核心服務

(二)idea外掛的使用

針對不同的IDE有不同的外掛,IDEA的使用的是actiBPM外掛,但這個外掛沒有eclipse的外掛好用。 目前遇到的情況有:

  • 中文亂碼問題 需要修改idea目錄下的idea.exe.vmoptions和idea64.exe.vmoptions兩個檔案,用記事本開啟在後面加上"-Dfile.encoding=UTF-8"。
  • 獲取流程圖片問題 需要改字尾為xml,然後右鍵選擇【Diagrams】-->【Show BPMN 2.0 Diagrams...】,開啟後才選擇匯出才能獲取流程圖。
  • 報錯問題 雖然遇到的報錯暫時沒發現有什麼實質影響。

(三)RepositoryService

1.API

(1)獲取流程部署構建物件

  • DeploymentBuilder createDeployment();

(2)流程部署物件相關API

讀取Bpmn和png的流程定義資訊:
  • DeploymentBuilder addInputStream(String resourceName, InputStream inputStream);
  • DeploymentBuilder addClasspathResource(String resource);
  • DeploymentBuilder addString(String resourceName, String text);
  • DeploymentBuilder addZipInputStream(ZipInputStream zipInputStream);
  • DeploymentBuilder addBpmnModel(String resourceName, BpmnModel bpmnModel);
設定流程定義其他資訊:
  • DeploymentBuilder name(String name);設定流程部署名稱
  • DeploymentBuilder category(String category);設定流程部署類別
  • DeploymentBuilder tenantId(String tenantId);設定流程部署租戶ID(該功能主要用於資料共享在一個數據庫的使用場景。一個或者多個的引擎但是他們使用的資料庫為同一個。 因此操作的時候需要區分這些資料(部署的流程資源)的來源,以方便程式後續的處理。)
部署流程:
  • Deployment deploy();

(3)獲取流程定義查詢物件

  • ProcessDefinitionQuery createProcessDefinitionQuery();

(4)刪除流程定義

  • void deleteDeployment(String deploymentId);若有執行時的流程例項刪除將會失敗
  • void deleteDeploymentCascade(String deploymentId);若有執行時的流程例項則將其相關的act_ru_xxx中的所有資料刪除
  • void deleteDeployment(String deploymentId, boolean cascade);boolean為true則同第二個,false則同第一個

(4)獲取流程圖

  • InputStream getProcessDiagram(String process