Activiti6.0学习实践(2)-源码工程构建

上节对工作流和activiti有了一个基本认识,本节主要目的是构建源码工程,了解如何从git上创建本地的工程,同时对源码有个基本的了解。

目录

1、克隆到本地

2、建立远程git库分支

3、导入到工程

4、源码基本结构

5、基于源码启动activiti-app

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

  1. 进入app所在的目录:  cd  modules/activity-ui/activiti-app
  2. 执行mvn命令:   mvn  clean  tomcat7:run
  3. 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)容器进行了绑定。

Activiti6最大的变化点就是对代码进行了重构,该版本修复以往的Bug并不多,但内部实现相对来说变化比较大。其突出的变化如下所示: 新增两款新引擎,Form引擎和DMN引擎(动态引擎)。其中DMN引擎允许开发人员创建自己的决策表。可以通过变量和定义的规则方式从决策表中计算结果。这些决策表的数据可以被rule task调用,决策表与流程实例是完全隔离的,相互之间不需要知道对方的存在。Form引擎可以通过Activiti6 UI界面进行配置,通俗一点的理解就是Activiti6将Form表单独立出来了。Form表单信息可以以JSON格式进行定义和使用。Activiti6 UI 默认包括新的规则引擎和表单引擎。 新增ad-hoc子流程。可以参考文章(ad-hoc子流程使用)。 作业执行器被重构。Activiti6版本仅保留了Activiti5版本中的异步作业执行器(async executor)。定时作业被划分了四个不同的表:executable jobs, timer jobs, suspended jobs 和deadletter jobs。引擎可以更快的执行作业。定时器作业在新的版本存储于单独的表中,一个线程会定时轮训需要执行的作业,快到期的作业会被添加到suspended jobs表中。重试的作业已经被干掉了,需要重试的作业会被添加到deadletter jobs表中。这样的重构意义主要是为了提高查询效率,可以执行的作业可以很快的被查询出来。 作业执行器通过消息队列的方式进行,关于这一点可以参考随后的文章。 瞬态变量的引入。瞬态变量不会存储到 Activiti 变量表中,但仍为单一的事务持续时间执行。比如可以在REST服务之间进行调用的时候使用,或者使用于Java service task。 引入了事务依赖监听器,可以参考Activiti依赖事务监听器(上)的讲解。 Activiti 6 UI 程序中,添加了DMN编辑器。 对于多实例节点而言,添加了终止多实例节点的相关方法。这个特性允许开发人员使用API结束多实例所有节点的执行。 优化补偿活动行为和在子流程中的使用。 在运行流程实例以及执行实例中添加了开始时间以及启动流程实例的人字段。在ru_task中增加了任务的认领时间(claim time)。 妥善解决数据库架构 (oracle/postgres) 的使用。 修复历史数据捕获。 大量重构 Activiti 6 UI 应用程序,例如应用程序中定义现在部署作为正常的活动部署,没有为其单独的应用程序定义表。 改进Activiti 6 QA中的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值