Ⅰ activiti6.0源碼剖析之多實例減簽與加簽操作
1. 當需要減少一個或多個人參與的多實例流程中的參與者時,我們稱之為減簽操作。
2. 相反地,如果需要增加一個人參與多實例流程,這被稱為加簽操作。
3. 理解減簽操作的實現並不復雜,通過分析多實例的運行過程可以清晰地了解如何執行減簽。對於想要深入了解多實例運行過程的讀者,可以參考之前的文章《Activiti6.0源碼剖析之多實例運行過程》。
4. 以該流程圖為例,我們可以從兩個角度來理解減簽操作:是被減掉的參與者已經執行完畢並成功,還是他們從未真正參與過流程。
5. 根據上述兩種角度,可以巧妙地區分並理清執行減簽操作的思路。
Ⅱ Activiti架構分析及源碼詳解
工作流引擎如Activiti在業務流程管理和編排中扮演重要角色,它遵循BPMN2.0標准,與其他開源引擎如flowable和Jbpm4競爭。本文將深入剖析Activiti的架構設計和源碼細節,特別關注流程啟動和原子操作。
首先,理解本文的前提是對Activiti有一定基礎並能進行基本開發。在遇到問題時,交流群186233599將提供作者的實時解答。
Activiti採用分層架構,其中包含命令模式和責任鏈模式。命令模式允許外部通過實現類完成特定需求,而責任鏈模式則通過攔截器鏈條管理命令執行,如事務攔截器和命令上下文攔截器。
解析流程定義時,Activiti依賴STAX的拉模型解析BPMN2.0規范的XML文件,將其轉化為Java表達式。核心過程包括從BPMN XML解析為POJO類,再到進一步解析為PVM中的ActivityImpl類。
Activiti採用領域模型中的充血模型,業務邏輯直接關聯到ExecutionEntity。數據持久化採用數據集中提交,確保內存中的實體變化會自動持久化。DbSqlSession負責數據的緩存和提交,包括實體的插入、更新和刪除操作。
核心理念是PVM,它提供一組API描述工作流。PVM在流程定義期和運行期都有對應的抽象和介面,允許靈活適應不同工作流語言。活動實例(ActivityImpl)和作用域在流程執行中起關鍵作用。
Ⅲ activiti6.0源碼剖析之使用圖片生成器設置流程圖高亮顯示
1. 在流程執行過程中,為了直觀展示流程已完成的節點和當前所處位置,Activiti提供了圖片生成器ProcessDiagramGenerator。
2. 該生成器能夠對流程圖中的節點或連線進行高亮標記,並生成帶有高亮效果的圖片。
3. 用戶可以自定義流程圖中節點圖標和字體等元素。
4. 若默認的高亮效果不滿足業務需求,例如要求用戶任務高亮時使用特定顏色,或圖片中字體為特定樣式,則需自定義圖片生成器。
5. 可以通過繼承DefaultProcessDiagramCanvas類並重寫drawConnection方法來自定義連線高亮顏色。
6. 擴展類,並在initProcessDiagramCanvas方法中使用自定義的ProcessDiagramCanvas。
7. 必須同時定義generateProcessDiagram方法,以替換默認的中的實現,否則程序將調用默認方法。
8. 使用自定義圖片生成器生成流程圖,以實現特定高亮效果。
9. 生成結果將展示自定義後的流程圖高亮效果。
Ⅳ SpringBoot整合Activiti工作流(附源碼)
依賴:
在新建springBoot項目時勾選activiti,或在已建立的springBoot項目中添加以下依賴:
數據源和activiti配置:
在activiti的默認配置中,process-definition-location-prefix指定activiti流程描述文件的前綴,啟動時,activiti將自動尋找此路徑下的文件並部署。suffix為String數組,表示描述文件的默認後綴名。
springMVC配置:
配置靜態資源和直接訪問頁面,採用thymeleaf依賴解析視圖,主要採用非同步方式獲取數據,通過angularJS進行前端數據處理與展示。
使用activiti:
配置數據源和activiti後,啟動項目,activiti服務組件自動加入到spring容器中。使用注入方法直接訪問。在非自動配置的spring環境中,可通過指定bean的init-method配置activiti服務組件。
案例:請假流程示例:
1. 員工申請請假
設置請假信息,完成申請時傳入參數。
2. 老闆審批請假
(1) 查詢審批任務
老闆查看需審批的請假任務,設置VacTask對象用於頁面展示。
(2) 完成審批
傳入審批結果和任務ID。根據結果進行流程跳轉。
3. 查詢請假記錄
在history表中查詢已完成的請假記錄,設置VO對象展示。
4. 前端展示與操作
(1) 審批列表與操作
展示審批列表及操作示例,完成一個springBoot與activiti6.0整合示例項目的說明與代碼。
完整項目代碼參考:
推薦閱讀:
1. SpringBoot內容聚合
2. 設計模式內容聚合
3. Mybatis內容聚合
4. 多線程內容聚合