原创 activiti學習(二十三)——流程虛擬機源碼分析(四)——多實例任務的行爲

前言 通過《activiti學習(十七)——多實例任務的使用(會籤功能)》一文,相信讀者已經大概瞭解多實例任務的含義,以及流程行進中數據庫的變化。本文會對流程虛擬機離開多實例任務的過程進行剖析。   對象解析階段 在對象解析階段,多實例任

原创 activiti學習(二十四)——自定義行爲類

前言 前面幾篇文章,我們知道每個活動節點,都有對應的行爲類。activiti的擴展性極好,我們當然也可以自定義自己的行爲類。   自定義行爲類 我們嘗試自定義userTask的行爲類,創建MyUserTaskBehavior publi

原创 activiti學習(十一)——全局事件監聽器的基本使用及其原理

在流程運轉的過程中,流程引擎會發出很多不同的事件,前面的文章,我們通過執行監聽器和任務監聽器捕獲到對應事件並進行處理。除了這兩個監聽器以外,activiti從5.15版開始加入了全局事件監聽器,這樣很多重複的監聽器就不需要在每個活動上去綁

原创 activiti學習(八)——自定義攔截器和命令類

上一章我們activiti的命令、攔截器等進行了剖析。我們已經很熟悉其執行的原理,本章我們自己動手寫攔截器和命令類。 首先我們明確一下攔截器調用鏈的執行先後順序。上一章代碼剖析,已經能看出來,每個攔截器,都在自己的execute方法中執行

原创 activiti學習(七)——命令模式和職責鏈模式在activiti中的應用

activiti中很多api的調用,最終會把這個調用封裝成一個命令,使用命令模式去調用。另外還會把命令放在調用鏈上,當調用該命令時會依次調用職責鏈上的每一個攔截器(Interceptor),例如日誌、事務相關攔截器,然後調用指定的命令。本

原创 activiti學習(十)——自定義對象解析器

上一篇博文分析了對象解析器的原理。本文來編寫一個自定義對象解析器。考慮這樣的場景:生產中我們常常在流程的上一環節選擇下環節的處理人,然後再提交流程。之後流程運轉到下一個環節後,會在對應的處理人名下,即userTask的candidate或

原创 activiti學習(二十二)——常規任務節點跳轉(退回、自由跳轉功能)

概述 通過前面幾篇文章的瞭解,目前我們已經具備足夠的知識進行常規userTask的跳轉。在“中國式流程”中,駁回、自由跳轉等皆是通過這種改方式實現。可以說這也是玩activiti流程比較重要的一環。 activiti本身沒有提供駁回和自由

原创 activiti學習(二十)——流程虛擬機源碼分析(二)——從開始節點離開到下個節點前

簡述 《activiti學習(十九)——流程虛擬機源碼分析(一)——流程啓動源碼分析》一文中最後,流程從startEvent節點執行takeAll準備離開。本文我們分析一下從開始節點到下一個節點之前虛擬機做了什麼。由於流程虛擬機條件分支情

原创 activiti學習(四)——任務查詢與任務提交

上一章流程啓動後,根據流程圖,會到達用戶任務userTask1上。通常實際應用中,流程使用userTask比較多。因此本章就講講userTask提交。 首先我們新建一個bpmn圖,secondBPM.bpmn <?xml version

原创 activiti學習(二十一)——流程虛擬機源碼分析(三)——從進入到離開userTask

前言 承接上文《activiti學習(二十)——流程虛擬機源碼分析(二)——從開始節點離開到下個節點前》,假設execution接下來進入的節點是userTask,本文分析一下進入userTask的準備工作,到執行userTask的行爲類

原创 activiti學習(二)——activiti流程的部署

進行了流程引擎的構建和初始化之後,接下來要做的就是把寫好的流程文檔部署到流程引擎中,後續activiti.cfg.xml的配置如果沒有特指的話,一般就用第一章提供的例子。 首先畫一個bpmn的圖,可以通過集成開發環境的插件,也可以直接寫x

原创 activiti學習(三)——activiti流程引擎的服務、數據庫表與流程啓動

activiti流程引擎的服務 activit流程引擎爲用戶提供了好幾種服務及api,用於查詢和操作流程,通過ProcessEngine的getXXXService方法可以獲取。現在對幾個接下來會用得比較多的進行介紹: Repositor

原创 activiti學習(十九)——流程虛擬機源碼分析(一)——流程啓動源碼分析

從這篇文章開始,將從源碼分析流程虛擬機的運轉情況。本文主要講講流程啓動相關的。流程虛擬機的調用與運轉,跟前面對象解析器解析與設置是息息相關的。我看代碼的時候,也常常需要來回翻閱對象解析器的設置。流程虛擬機在調用某個對象時,這個對象到底是什

原创 activiti學習(九)——對象解析器原理

概述 在《activiti學習(六)——從bpmn文件轉化爲bpmnModel的過程》提到過,activiti會把bpmn圖中的元素轉化到bpmnModel中,然後再通過對象解析器,把各元素解析流程虛擬機識別的對象。本章主要講解這個解析過

原创 activiti學習(十二)——activiti數據庫存儲(一)——數據連接初始化與mybatis封裝原理

activiti對持久化層的初始化主要有幾個步驟:1、初始化數據源。這個很好理解,就是配置好要連接的數據庫;2、初始化mybatis的SqlSessionFactory。因爲activiti使用mybatis作爲持久化層,所以需要對myb