博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
疯狂Activiti6.0连载(3)Activiti开发环境搭建
阅读量:6431 次
发布时间:2019-06-23

本文共 5570 字,大约阅读时间需要 18 分钟。

hot3.png

本文节选自《疯狂工作流讲义(第2版)》

京东购买地址:

疯狂Activiti电子书:

工作流Activiti教学视频:

3 Activiti开发环境搭建

3.1 安装开发环境

        本小节所说的Activiti开发环境包括以下内容:

              Eclipse IDE

              Eclipse的Activiti插件

3.1.1 下载Eclipse

        本书使用Eclipse作为开发工具,如果想使用Activiti的Eclipse设计器,官方建议使用Kepler(4.3)或者 Luna(4.4)版本,本书所使用的版本为Luna,大家可以从以下的地址得到该版本的Eclipse:

 

        目前Eclipse已经发展到4.7版本,本书所使用的Eclipse功能不多,主要使用Activiti的设计器插件,本书的全部代码,理论上可以在高版本的Eclipse中运行。

        安装Eclipse插件的过程较为漫长,如果想直接使用已经安装好插件的Eclipse,可以到以下链接下载: ,如以上链接失效,可以与笔者联系,笔者邮箱地址:。如果下载到了安装好插件的Eclipse,则可以跳过相应章节。

3.1.2 安装Activiti插件

        使用Eclipse的Luna版本,在安装Activiti插件前,要安装EMF插件(2.6.0版本)。打开Eclipse,在“Help”菜单中选择“Install New Software”,点击“Add”按钮,弹出窗口如图2-23所示。

图2-23 安装EMF插件

        输入的名称为EMF,位置URL为:

注意在选择版本时,要选择2.6.0版本,安装完成后重启Eclipse,再进行Activiti插件安装。

        使用Activiti的Eclipse插件,开发者可以对流程模型进行可视化操作,对于流程元素可以进行拖拉,插件会自动生成相应的XML代码。安装方法与EMF插件安装方法一样,输入的插件信息如图2-24所示,输入的位置URL为:。

图2-24 Eclipse中添加软件仓库

        插件安装完成后重启Eclipse,在新建文件的对话框,如看到图2-25的选项,则表示已经安装成功。

图2-25 成功安装Activiti插件

        再次强调一下,在安装过程中,由于网络的原因,会导致安装中断或者安装时间过长,如果不是为了体验插件安装,笔者建议直接下载安装好插件的Eclipse,笔者提供的下载地址为:。

3.2 编写第一个Activiti程序

        完成了Activiti的开发环境搭建后,可以进行第一个Activiti程序的开发,开发Activiti应用,基本上只需要Eclipse即可,但是为了能更加方便设计流程,还要求使用Eclipse的Activiti插件,在编写Activiti程序前,请先确认Eclipse和Activiti插件已经成功安装。

        注:Activiti的可视化插件,是为了更加方便进行流程模型设计,笔者建议还是要认真学习BPMN规范,明白插件的工作原理。

3.2.1 如何运行本书案例

        使用Eclipse导入codes\common-lib项目,该项目用于存放本书全部例子所使用的第三方jar包,导入该项目后,可以选择某一章的案例进行导入,例如要查看第4章的案例,就可以在Eclipse可选择codes\04目录,将第4章全部的案例项目导入。每一个项目中都有相应的运行类,绝大部分的运行类都有main方法,直接运行相应案例的main方法即可以看到效果。

        为了能在每个案例运行后看到数据库的变化,因此大部分的案例均会将Activiti的databaseSchemaUpdate属性配置为drop-create(详细请见第4章),该属性会在相应案例运行前将原有的数据表删除,再创建Activiti的数据表,请读者注意该细节。

        注:本书除OA系统、第15章的Web项目和第16章的Web项目外,全部的案例所使用的第三方包均存放在codes\common-lib\lib目录下,因此成功编译和运行全部案例的前提,是先导入codes\common-lib项目。

3.2.2 建立工程环境

        打开Eclipse,将common-lib项目导入到Eclipse中,然后新建一个普通的Java项目,在项目的根目录下建立一个resource的源文件目录。修改项目的“Java Build Path”,在“Libraries”中点击“Add JARs”,选中common-lib/lib目录下的全部jar包。项目结构如图2-26所示。

图2-26 项目结构

        注:项目common-lib/lib目录下面的jar包,是从activiti-6.0.0/libs目录下复制过去的,并且也含有其他框架的jar包。本书后面章节代码,如没有特别说明,也是使用该方法引入jar包。

3.2.3 创建配置文件

        如果没有指定Activiti的配置文件,那么默认情况下将会到CLASSPATH下读取activiti.cfg.xml文件作为Activit的配置文件,该文件主要用于配置Activiti的数据库连接等属性(详细请见第4章)。将activiti-5.10\setup\files\cfg.activiti\standalone目录下的activiti.cfg.xml文件复制到项目的resource目录下,修改该文件,内容如代码清单2-1所示。

        代码清单2-1:codes\02\first\resource\activiti.cfg.xml

        代码清单2-1中的activiti.cfg.xml是一份标准的XML文档,该XML中只配置了一个名称为processEngineConfiguration的bean元素,代码清单2-1中的粗体部分,配置了连接的数据库中act,因此需要在MySQL中建立一个名称为“act”的数据库,数据库的属性如图2-27所示。

图2-27 数据库属性

        本书的数据库字符集均使用“utf8”,项目中的源文件也使用“UTF-8”编码,如出现乱码问题,请检查数据库及源文件编码。配置文件中的processEngineConfiguration的各个属性及其作用,请参见后面章节。

3.2.4 创建流程文件

        流程描述文件是用XML语言去描述业务流程的文件,Activiti的流程文件需要遵守BPMN2.0规范。使用Activiti的Eclipse插件新建一个流程文件,该流程与Activiti的demo中的费用申请单一致,图2-28为流程图,代码清单2-2为该流程的XML配置。

图2-28 第一个Activiti流程

        代码清单2-2:codes\02\first\resource\bpmn\First.bpmn

        代码清单2-2中为一份流程描述文件,该文件中的process元素用于描述流程信息,而bpmndi:BPMNDiagram元素则用于描述这些流程节点的位置信息。代码清单2-2中,定义了两个userTask元素,分别表示图2-26中的两个用户任务。

        注:在本书的代码清单中,为了减少篇幅,一般情况下不会将这些流程节点的位置信息配置贴出。

3.2.5 加载流程文件与启动流程

        有了流程引擎的配置文件和流程文件后,就可以编写代码启动流程引擎并加载该流程文件,运行类如代码清单2-3所示。

        代码清单2-3:codes\02\first\src\org\crazyit\activiti\First.java

package org.crazyit.activiti;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngines;import org.activiti.engine.RepositoryService;import org.activiti.engine.RuntimeService;import org.activiti.engine.TaskService;import org.activiti.engine.task.Task;/** * 第一个流程运行类 * @author yangenxiong * */public class First {	public static void main(String[] args)  {		// 创建流程引擎		ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();		// 得到流程存储服务组件		RepositoryService repositoryService = engine.getRepositoryService();		// 得到运行时服务组件		RuntimeService runtimeService = engine.getRuntimeService();		// 获取流程任务组件		TaskService taskService = engine.getTaskService();		// 部署流程文件		repositoryService.createDeployment()				.addClasspathResource("bpmn/First.bpmn").deploy();		// 启动流程		runtimeService.startProcessInstanceByKey("process1");		// 查询第一个任务		Task task = taskService.createTaskQuery().singleResult();		System.out.println("第一个任务完成前,当前任务名称:" + task.getName());		// 完成第一个任务		taskService.complete(task.getId());		// 查询第二个任务		task = taskService.createTaskQuery().singleResult();		System.out.println("第二个任务完成前,当前任务名称:" + task.getName());		// 完成第二个任务(流程结束)		taskService.complete(task.getId());		task = taskService.createTaskQuery().singleResult();		System.out.println("流程结束后,查找任务:" + task);		// 退出		System.exit(0);	}}

        代码清单2-3中,使用ProcessEngines类加载默认的流程引擎配置文件(activiti.cfg.xml),再获取Activiti的各个服务组件的实例,RepositoryService主要用于管理流程的资源(请见第7章),RuntimeService主要用于进行流程运行时的流程管理(请见第9章),TaskService主要用于管理流程任务(请见第8章)。代码清单2-3中使用RepositoryService部署流程文件,使用RuntimeService启动流程,然后使用TaskService进行流程任务查找,并对结束查找到的任务。关于这些服务对象的使用以及流程文件的定义,将会在本书后面章节中详细讲解。运行代码清单2-3,输出结果如下:

第一个任务完成前,当前任务名称:Expense Request第二个任务完成前,当前任务名称:Handle Request流程结束后,查找任务:null

3.3 小结

        工欲善其事,必先利其器。本章主要讲解进行Activiti开发的准备工作,包括Activiti的下载和安装,Activiti开发环境的搭建,带领读者试用了Activiti的官方应用,并且开发了第一个Activiti程序。本章作为Activiti开发实践的第一课,学习完本章内容后,将有助于提升学习信心。从下一章开始,我们将一起遨游Activiti与BPMN2.0的世界。

本文节选自《疯狂工作流讲义(第2版)》

京东购买地址:

疯狂Activiti电子书:

工作流Activiti教学视频:

本书代码目录:

140509_5TSO_3665821.png

转载于:https://my.oschina.net/JavaLaw/blog/1543359

你可能感兴趣的文章
vuex源码分析
查看>>
tornado+datatables分页
查看>>
集成 Kubernetes 与 Cloud Foundry,IBM自有一套
查看>>
php 中英文字符分割
查看>>
No module named yum
查看>>
Shell处理用户输入参数----getopts
查看>>
【函数】06、装饰器的应用
查看>>
v$sysstat
查看>>
剑指offer 66通关纪念
查看>>
医疗信息化 医学 医院管理 医疗器械 资料下载
查看>>
nginx.conf 示例配置
查看>>
在办公电脑上设置日志服务器监控思科和华为设备
查看>>
python 字符串替换
查看>>
我的友情链接
查看>>
Linux之常用网络命令
查看>>
linux php 安装 curl
查看>>
思科rip、dhcp、vlan
查看>>
tomcat nginx默许的post大小限制
查看>>
OSI七层模型
查看>>
去除工程的.svn隐藏文件夹
查看>>