1.1 課程導學
--- 什么是工作流引擎?
是用來驅動業務按照流程圖逐步流轉的核心框架。
--- 為什么學習工作流引擎?
早期:企業OA、CRM、流程審批
現在:電商購物、金融出行、中台支撐
--- Activiti6.0流程引擎配置

--- 核心API

--- 數據模型設計

--- BPMN2.0規范

--- BPMN2.0元素

2.1 本章概述
工作流入門:工作流介紹、工作流技術選型、Activiti6.0快速體驗。
2.2 工作流介紹
工作流是什么?為什么學習工作流?如何去學習工作流?
1、審批業務場景(如請假,有一系列步驟)
2、審批流程模型化(抽象出一系列流程圖模型)

“開始節點”(開始StartEvent)->填寫審批信息的“用戶節點”->通過“流程判斷”(排他網關Exclusive Gateway)可以流轉到“主管審批”(任務UserTask)->...->“結束節點”(結束EndEvent)
3、常見的網上購物流程

4、購物工作流程模型化

有3個參與者,“電商購物流程”是泳池Pool,“倉儲物流”等是泳道Line,“檢驗庫存”是服務任務ServiceTask(服務任務是指不是由人工操作,而是由系統自動完成實現的邏輯)。
5、工作流是什么

6、為什么需要工作流


2.3 工作流引擎技術選型

2.4 Activiti6.0快速體驗--部署環境介紹






默認的用戶名和密碼是:admin和test
2.5 Activiti6.0快速體驗--部署環境實操
win10下打開Cygwin,進行如下操作:
1、curl -s "http://get.sdkman.io" | bash
報錯:
Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Not found.
Please install zip on your system using your favourite package manager.
參考:https://blog.csdn.net/IOIO_/article/details/84946257
解決方法是重新點擊cygwin的安裝包,把zip的package安裝一遍,重啟cygwin,再輸入一遍這個命令即可。
補充:
cygwin必須安裝的package:
(1)Net->curl
(2)Archive->unzip
(3)Web->wget
(4)Editors->vim
(5)Devel->binutils
(6)zip
2、source "$HOME/.sdkman/bin/sdkman-init.sh"
3、sdk version
4、sdk install java 8u161-oracle
報錯:
Stop! java 8u161-oracle is not available. Possible causes:
* 8u161-oracle is an invalid version
* java binaries are incompatible with CYGWIN_NT-10.0
* java has not been released yet
輸入sdk ls
看到java可下載版本為11.0.2-open,對應的網站是zulu.org,訪問后首頁就提示:
Free JDK 8 updates are ending. Keep Java supported and secure with Zulu Enterprise
輸入sdk ls java,可以看到現在可以下載的java版本,這里暫時還是選擇oracle版本:
sdk install java 8.0.201-oracle
5、java -version
6、echo $JAVA_HOME
7、wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.zip
8、tar -zxvf apache-tomcat-8.5.37.zip
報錯:
gzip: stdin has more than one entry--rest ignored
tar: Child returned status 2
tar: Error is not recoverable: exiting now
由於這個是zip文件而不是tar.gz,所以用unzip命令:
unzip apache-tomcat-8.5.37.zip
9、./apache-tomcat-8.5.37/bin/startup.sh
報錯:-bash: ./apache-tomcat-8.5.37/bin/startup.sh: Permission denied
參考:https://blog.csdn.net/u012273127/article/details/78608417
改成:sh ./apache-tomcat-8.5.37/bin/startup.sh
還是不行,參考:https://blog.csdn.net/u014520797/article/details/80382792
chmod u+x ./apache-tomcat-8.5.37/bin/startup.sh
./apache-tomcat-8.5.37/bin/startup.sh
報錯:
Cannot find ./apache-tomcat-8.5.37/bin/catalina.sh
The file is absent or does not have execute permission
This file is needed to run this program
參考:https://blog.csdn.net/limm33/article/details/52698334/
最終命令如下:
cd apache-tomcat-8.5.37/bin
chmod 777 *.sh
./startup.sh
然后再回到之前的根目錄:
cd ~
10、jps -mlv
11、wget https://github.com/Activiti/Activiti/releases/download/activiti-6.0.0/activiti-6.0.0.zip
12、tar -zxvf activiti-6.0.0.zip
改成unzip activiti-6.0.0.zip
13、cp activiti-6.0.0/wars/activiti-app.war apache-tomcat-8.5.37/webapps
14、cp activiti-6.0.0/wars/activiti-admin.war apache-tomcat-8.5.37/webapps
15、./apache-tomcat-8.5.37/bin/startup.sh
16、open http://localhost:8080/activiti-app
在瀏覽器打開http://localhost:8080/activiti-app
輸入用戶名:admin,密碼:test
2.6 Activiti6.0快速體驗--流程體驗

流程如下:

流程參與者:

流程整體如下:

步驟如下:
1、在http://localhost:8080/activiti-app首頁的Identity management的User中create user(共3個,userdev,userhr,usertl,密碼和用戶名設成一樣):

2、創建流程:在首頁的Kickstart App的Processes中Create Process

然后畫流程:

在TL審批這一節點中,點擊“Assignments”,彈出Assignment框,配置如下:

保存:

3、選擇“Apps”,create:

創建完成后,可以點擊界面中的“Edit included models”查看詳情,這里點擊保存,勾選publish...:

4、退出切換用戶,用userdev登錄,啟動一個流程:

然后在界面右側會出現一個“Comments”,點“+”號,填寫“申請出差”
5、退出切換用戶,用usertl登錄,在Task里可以看到這個申請,先點“Claim”獲取,然后點“Complete”通過。
6、退出切換用戶,用userhr登錄,看到該任務,先點“Claim”獲取,然后點“Complete”通過。這時候由於流程已經結束,所以無法再查看流程,只能通過另一個項目看到:localhost:8080/activiti-admin/
用戶名和密碼都是admin
3.1 本章概述(Activiti6.0源碼初探)
源碼概述、基於源碼運行activiti-app、Hello World之Activiti6.0。
3.2 Activiti6.0源碼初探--概覽與獲取

GitHub工作方式:

具體步驟:


(0)先fork
(1)
git clone https://github.com/zyuxuan/Activiti.git
cd Activiti
git checkout -b study6 activiti-6.0.0
(2)mvn clean test-compile
報錯:
The project org.activiti:activiti-root:6.0.0 (D:\Code\Activiti\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM for org.activiti:activiti-root:6.0.0: Could not find artifact org.sonatype.oss:oss-parent:pom:7 in jboss-public-repository-group (http://repository.jboss.org/nexus/content/groups/public) and 'parent.relativePath' points at wrong local POM @ line 10, column 10 -> [Help 2]
參考:https://blog.csdn.net/z69183787/article/details/22182855
原因是這個jar包沒有下載成功:org\sonatype\oss\oss-parent\7
猜測是因為maven的配置文件只配置了阿里雲鏡像,應該要再配一個jboss鏡像,參考:https://www.cnblogs.com/manliu/p/4682003.html
具體解決步驟如下:
先進入http://repository.jboss.org/nexus/content/groups/public/org/sonatype/oss/oss-parent/
發現這個倉庫並沒有對oss-parent分具體版本。
再進入http://repository.jboss.org/nexus/content/groups/public-jboss/org/sonatype/oss/oss-parent/
發現這個倉庫有對oss-parent分具體版本,所以要在maven的配置文件添加這一倉庫:
<mirror>
<id>jboss-public-repository-group2</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public-jboss</url>
</mirror>
配置完后,重新輸入mvn clean test-compile即可。
這時候大部分jar都能開始下載,直到下面這個錯誤:
Failed to execute goal on project activiti-bpmn-layout: Could not resolve dependencies for project org.activiti:activiti-bpmn-layout:jar:6.0.0: The following artifacts could not be resolved: org.slf4j:slf4j-api:jar:1.7.6, org.slf4j:jcl-over-slf4j:jar:1.7.6: Could not find artifact org.slf4j:slf4j-api:jar:1.7.6 in jboss-public-repository-group2 (http://repository.jboss.org/nexus/content/groups/public-jboss) -> [Help 1]
原因是在jboss這個鏡像中找不到版本為1.7.6的org.slf4j.slf4j-api
於是我在網上搜到了更齊全的maven鏡像,參考:https://blog.csdn.net/qq_39949109/article/details/80590739
http://repo1.maven.org/maven2/
把maven配置文件最終設置鏡像如下(其實用不到上面這個,改一下阿里雲的鏡像地址就搜得到了):
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> <!--<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/mvn/view</url> <mirrorOf>central</mirrorOf> </mirror>--> <mirror> <id>jboss-public-repository-group2</id> <mirrorOf>central</mirrorOf> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public-jboss</url> </mirror> <mirror> <id>jboss-public-repository-group</id> <mirrorOf>central</mirrorOf> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url> </mirror> <mirror> <id>ibiblio</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url> </mirror> <mirror> <id>central</id> <name>Maven Repository Switchboard</name> <url>http://repo1.maven.org/maven2/</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo2.maven.org/maven2/</url> </mirror>
配置完后,重新輸入mvn clean test-compile即可。
3.3 Activiti6.0源碼初探--engine
3.4 Activiti6.0源碼初探--模塊介紹



3.5 Activiti6.0源碼初探--activiti-app運行

由於這里是基於源碼運行,所以進入我的本地目錄然后進行上述操作:D:\Code\Activiti\modules\activiti-ui\activiti-app
完成上述操作后,剖析activiti-ui下的這幾個工程:

更多具體分析步驟參考視頻。
3.6 Activiti6.0源碼初探--WebConfigurer

更多具體分析參考視頻。
3.7 Activiti6.0源碼初探--helloworld1
3.8 Activiti6.0源碼初探--helloworld2
都是基於eclipse畫流程圖,設置流程節點詳細信息(如form信息等)
3.9 Activiti6.0源碼初探--helloworld_idea-1
3.10 Activiti6.0源碼初探--helloworld_idea-2
3.11 Activiti6.0源碼初探--helloworld_idea-3
...
8.1 本章概述(集成Spring Boot2.0)
8.2 本章概述
8.3 Spring Boot2.0入門實例2
8.4 Spring Boot2.0啟動依賴和自動裝配-1
8.5 Spring Boot2.0啟動依賴和自動裝配-2
Activiti源碼里有一個module:activiti-spring-boot -> spring-boot-starters -> activiti-spring-boot-starter-basic
8.6 Activiti6.0與Spring Boot2.0集成-1
