上節對工作流和activiti有了一個基本認識,本節主要目的是構建源碼工程,瞭解如何從git上創建本地的工程,同時對源碼有個基本的瞭解。
目錄
6、Activity-app如何構建spring容器和servlet容器
1、克隆到本地
由於github現在對國內網速限制的厲害,所以基本上無法從github直接下載使用。一個簡單的辦法是“曲線救國”,從碼雲gitee將github上的項目clone過去,然後在從雲上克隆到本地。
首先要有gitee賬號,然後在gitee上創建一個新庫,注意創建的時候要設定導入已有倉庫
在上面的地址欄目填入github上的url:https://github.com/cwqsolo/Activiti.git
這樣就可以創建一個activiti的副本了。
注意一下標註紅框的地方,後續我們研究和學習都是基於6.x的基礎之上。
下面我們clone到本地,使用如下命令:
git clone https://gitee.com/cwqsolo/Activiti.git
克隆完成後,在本地可以看到裏面的內容。見下圖
2、建立遠程git庫分支
因爲學習和實踐會對原有分支產生影響,因此需要建立一個分支,在此基礎上進行代碼的研究和修改,使用如下命令進行分支的創建:
創建後,本地目錄如下所示
下面進行編譯mvn clean test-compile
編譯完成後,我們下一步,用開發IDE導入工程。
3、導入到工程
下面通過IDEA的導入功能,將這個分支導入並創建工程。打開IDEA
選中import Project後,在彈出界面上找到剛纔工程目錄下的pom.xml
後面一路next,在選中jdk的時候,注意選中1.8
工程創建後,就會根據pom.xml中的依賴進行相關依賴的下載,整個過程比較長,可以去喫點茶點。
完成後的工程結構如下所示:
導入後pom.xml有些現實紅色,暫時不管他
4、源碼基本結構
在model目錄下,是activiti的核心模塊,其中activiti-engine又是其中最重要的包
幾個activiti核心模塊:
Module/activity-engine 流程引擎(重點)
Module/activity-spring 提供了spring的配置方式
Module/activity-springboot 提供了springboot的配置方式
Modele/activity-rest 提供了restapi模塊
5、基於源碼啓動activiti-app
下面通過命令行方式,我們啓動基於源碼的activiti-app,通過以下三個步驟可以啓動activiti-app
- 進入app所在的目錄: cd modules/activity-ui/activiti-app
- 執行mvn命令: mvn clean tomcat7:run
- http://localhost:9999/activiti-app
下面是第2,3步的一些截圖:
看到這個9999端口,說明app已經啓動成功了。打開url後呈現如下:
使用admin/test登陸後,呈現如下界面(說明:這裏是沒有漢化的)。
Activiti-app的源碼結構分析:
Activiti-app: 集成發佈的war工程
Activiti-app-conf: ui獨立於業務外的配置
Activiti-app-logic: ui的業務邏輯
Activiti-app-rest: 提供接口的rest api
除了war工程外,其他都是生產jar包。
6、Activity-app如何構建spring容器和servlet容器
在activiti-app包下,有工作流初始化入口的重要類,webconfigurer,它Activiti\modules\activiti-ui\activiti-app-conf\src\main\java\org\activiti\app\servlet\WebConfigurer.java。這個是類
是一個servletlistener的實現,在內部通過代碼實現了兩個dispatchservlet的創建,同時將應用(spring)容器和這兩個(servlet)容器進行了綁定。