环境搭建
资料准备
Activiti
Activiti官网 http://www.activiti.org/download.html
版本:5.16.4版本|下载地址
activiti的Eclipse插件
版本:activiti-designer-5.18.0|下载地址
MyEclipse
版本:MyEclipse 2014版|下载地址
JDK
版本:1.8
Activiti插件与MyEclipse集成
将activiti-designer-5.18.0解压,得到
将红框选中的两个文件放入MyEclipse的安装根目录下即可
创建项目
打开MyEclipse-》new,输入Activiti可以看到下图
Activiti Project:新建一个Maven项目
Activiti Diagram:新建一个流程图对象
由于Maven技术能力有限,并且后期是将Activiti融入到现有的web项目中,所以后续的示例都在web项目中介绍
新建web项目
新增包diagrams和test,用于存放自己的代码
把多余的引用删除,只保留JRE和自己需要依赖的,否则有可能出现包冲突
导致ProcessEngines.getDefaultProcessEngine() 空指针异常
添加依赖包
将下载的activiti-5.16.4解压,得到activiti-5.16.4文件夹
将libs中的所有jar包拷贝到web项目web-info下的lib中,其中包含了源代码,可以不拷贝,查看源代码时引用就可以了
添加其他依赖包,一下截图是保证本例中能运行的相关依赖包截图
新增流程图
双击打开新建的流程图
右上角打开标签菜单,开始绘制流程图,标签是可以拖拽的
先画一个简单的,测试我们是否能用上
编写测试类
主函数
public static void main(String[] args) throws IOException {
// 加载配置文件activiti.cfg.xml,创建引擎,如果出现null,可能原因
//1.加载路径不是根目录。
//2.依赖包不完全
// 获取配置文件后,引擎开始创建数据库。
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
// 获取流程储存服务组件
RepositoryService rs = engine.getRepositoryService();
// 获取运行时服务组件
RuntimeService rse = engine.getRuntimeService();
// 获取流程中的任务TASK组件
TaskService ts = engine.getTaskService();
// 部署流程,只要是符合BPMN2规范的XML文件,理论上都可以被ACTIVITI部署
rs.createDeployment().addClasspathResource("com/pzr/demo1/diagrams/MyProcess.bpmn").deploy();
// 开启流程,myprocess是流程的ID
rse.startProcessInstanceByKey("myProcess");
// 查询历史表中的Task
List<Task> task = ts.createTaskQuery().list();
Task task1 = task.get(task.size()-1);
System.out.println("第一环节:"+task1);
System.out.println("推动流程到下一环节:"+task1);
ts.complete(task1.getId());
task1 = ts.createTaskQuery().executionId(task1.getExecutionId()).singleResult();
System.out.println("第二环节:" + task1);
}
运行结果