上节对工作流和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)容器进行了绑定。