《Activiti6.0工作流引擎深度解析与实战》笔记
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