文本介绍基于Activiti6.0源码,运行与剖析activiti-app
一、编译运行
1.启动activiti-app
cd modules/activiti-ui/activiti-app
2.编译
mvn clean tomcat7:run (因为在activiti-app的pom.xml中配置的是tomcat7)
可以看到启动的是9999端口
3.浏览器中访问(可以看到效果和采用war包部署是一样的)
http://192.168.2.41:9999/activiti-app
二、剖析activiti-app
activiti-app在activiti-ui之下
conf就是集成的数据源、引擎或者集成的内容等等,logic为真正的业务逻辑(activiti-app是没有前端代码的,只有一些前端的配置和maven依赖jar包的配置,实现了业务的分离和解耦,把不同的层级的内容放在不同的模块里面)
在activiti-ui下面有两个和存储相关的、和图片渲染相关的工程;有两个脚本,用脚本启动的方式和用编译的方式效果一致。start-jrebel为热部署(当修改完java代码的时候,tomcat不用重启,整个编译完的class会应用到应用服务器里面,节省重启tomcat的时间)相关的脚本
activiti-app为web程序,从web.xml入手
其中的主要配置为一个listener
<listener>
<listener-class>org.activiti.app.servlet.WebConfigurer</listener-class>
</listener>
三、查看WebConfigurer
Alt+7查看一个类中的所有方法
该类在activiti-app-conf/src/main/java/下面的org.activiti.app.servlet中
listener会在容器启动的时候执行初始化方法,在容器销毁的时候执行对应的销毁方法。
在初始化方法中,做了容器的双向绑定(Spring容器和servlet容器),然后做了两次初始化容器的方法。
在初始化方法中,先注册了一个根容器,然后注册了两个子容器appDispatcher和apiDispatcher
销毁方法中,在容器要关闭的时候把对应的容器close掉。
ApplicationConfiguration.java在org.activiti.app.conf目录下面
@PropertySource三个优先级为从低到高,@ComponentScan为扫描包结构