《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:CodeActivitipom.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包没有下载成功:orgsonatypeossoss-parent7

猜测是因为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:CodeActivitimodulesactiviti-uiactiviti-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

原文地址:https://www.cnblogs.com/z-y-x/p/10311867.html