activiti基础操作

简介: <pre code_snippet_id="1592150" snippet_file_name="blog_20160229_1_7023778" name="code" class="java">package activitiTest;import java.io.InputStream;import java.util.List;import java.util.zip.Z
package activitiTest;

import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

/**
 * activiti基础操作
 */
public class ActTest_jichucaozuo {
	// ProcessEngines.getDefaultProcessEngine()会在第一次调用时
	// 初始化并创建一个流程引擎,以后再调用就会返回相同的流程引擎。
	// 使用对应的方法可以创建和关闭所有流程引擎:ProcessEngines.init() 和
	// ProcessEngines.destroy()。
	private ProcessEngine processEngine = ProcessEngines
			.getDefaultProcessEngine();

	/**
	 * 简单非空判断
	 * 
	 * @author:tuzongxun
	 * @Title: isEmpty
	 * @param @return
	 * @return boolean
	 * @date Feb 29, 2016 12:55:15 PM
	 * @throws
	 */
	public boolean isEmpty(Object object) {
		if (object instanceof List) {
			List list = (List) object;
			if (list != null && list.size() > 0) {
				return false;
			} else {
				return true;
			}

		} else {
			if (object != null) {
				return false;
			} else {
				return true;
			}
		}
	}

	/**
	 * 部署流程定义(发布流程)
	 * 
	 * @author:tuzongxun
	 * @Title: actDeployement
	 * @param
	 * @return void
	 * @date Feb 29, 2016 12:23:48 PM
	 * @throws
	 */
	public void actDeployement() {
		// 使用zip文件形式部署流程定义
		InputStream inputStream = this.getClass().getClassLoader()
				.getResourceAsStream("actTest1.zip");
		ZipInputStream zipInputStream = new ZipInputStream(inputStream);
		processEngine.getRepositoryService().createDeployment()
				.name("activiti测试").addZipInputStream(zipInputStream).deploy();
	}

	/**
	 * 删除流程定义
	 * 
	 * @author:tuzongxun
	 * @Title: deleteDeployement
	 * @param
	 * @return void
	 * @date Feb 29, 2016 12:36:15 PM
	 * @throws
	 */
	public void deleteDeployement() {
		List<Deployment> lists = processEngine.getRepositoryService()
				.createDeploymentQuery().list();
		if (!isEmpty(lists)) {
			for (Deployment deployment : lists) {
				processEngine.getRepositoryService().deleteDeployment(
						deployment.getId());
			}
		}

	}

	/**
	 * 启动流程实例
	 * 
	 * @author:tuzongxun
	 * @Title: startProcessInstance
	 * @param
	 * @return void
	 * @date Feb 29, 2016 12:30:06 PM
	 * @throws
	 */
	public void startProcessInstance() {
		// 这里根据流程定义的key启动,也可以根据id,还可以在启动的时候加入流程变量,
		// 启动流程实例后会获得一个任务task,这里是在流程图中已经写死了任务所有者是张三,因此启动的时候会创建一个任务给张三
		String processDefinitionKey = "myProcess";
		processEngine.getRuntimeService().startProcessInstanceByKey(
				processDefinitionKey);
	}

	/**
	 * 查询当前活动的流程实例
	 * 
	 * @author:tuzongxun
	 * @Title: findCurrentProInstance
	 * @param
	 * @return void
	 * @date Feb 29, 2016 12:53:04 PM
	 * @throws
	 */
	public void findCurrentProInstance() {
		List<ProcessInstance> lists = processEngine.getRuntimeService()
				.createProcessInstanceQuery().list();
		if (!isEmpty(lists)) {
			for (ProcessInstance processInstance : lists) {
				System.out.println(processInstance.getId());
			}
		}
	}

	/**
	 * 查询个人任务及相关信息
	 * 
	 * @author:tuzongxun
	 * @Title: findMyTask
	 * @param
	 * @return void
	 * @date Feb 29, 2016 12:50:05 PM
	 * @throws
	 */
	public void findMyTask() {
		// String userName = "张三";
		String userName = "李四";
		List<Task> lists = processEngine.getTaskService().createTaskQuery()
				.taskAssignee(userName).list();
		if (!isEmpty(lists)) {
			for (Task task : lists) {
				System.out.println(task.getId() + "," + task.getName() + ","
						+ task.getAssignee() + "," + task.getCreateTime());
			}
		}
	}

	/**
	 * 完成个人任务
	 * 
	 * @author:tuzongxun
	 * @Title: endMyTask
	 * @param
	 * @return void
	 * @date Feb 29, 2016 1:17:21 PM
	 * @throws
	 */
	public void endMyTask() {
		String taskId = "5002";
		processEngine.getTaskService().complete(taskId);
	}

	/**
	 * 查询历史流程实例
	 * 
	 * @author:tuzongxun
	 * @Title: findHisProInstance
	 * @param
	 * @return void
	 * @date Feb 29, 2016 2:09:14 PM
	 * @throws
	 */
	public void findHisProInstance() {
		List<HistoricProcessInstance> lists = processEngine.getHistoryService()
				.createHistoricProcessInstanceQuery().list();
		if (!isEmpty(lists)) {
			for (HistoricProcessInstance hisPro : lists) {
				System.out.println(hisPro.getId() + "," + hisPro.getStartTime()
						+ "," + hisPro.getEndTime());
			}
		}
	}

	/**
	 * 查询历史任务列表
	 * 
	 * @author:tuzongxun
	 * @Title: findHisTask
	 * @param
	 * @return void
	 * @date Feb 29, 2016 2:13:05 PM
	 * @throws
	 */
	public void findHisTask() {
		List<HistoricTaskInstance> lists = processEngine.getHistoryService()
				.createHistoricTaskInstanceQuery().list();
		if (!isEmpty(lists)) {
			for (HistoricTaskInstance hisTask : lists) {
				System.out.println(hisTask.getId() + ","
						+ hisTask.getAssignee() + "," + hisTask.getName() + ","
						+ hisTask.getStartTime() + "," + hisTask.getEndTime());
			}
		}
	}
}

目录
相关文章
|
6月前
|
XML Java 应用服务中间件
【小白误闯】Activiti 框架你不得不知道的一些事
Activiti 是一个轻量级的、以Java为中心的开源工作流和业务流程管理(BPM)平台。它允许用户在业务应用程序中定义、执行和监控业务流程。以下是Activiti的核心组件【5月更文挑战第8天】
641 1
|
6月前
activiti5 taskService.setVariable与taskService.setVariableLocal区别
activiti5 taskService.setVariable与taskService.setVariableLocal区别
148 0
activiti5 taskService.setVariable与taskService.setVariableLocal区别
|
6月前
|
存储 XML 数据库
纯干货,activiti入门看这一篇就够了‼️‼️
纯干货,activiti入门看这一篇就够了‼️‼️
393 0
|
SQL Java 关系型数据库
Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
204 0
|
XML 应用服务中间件 数据格式
Activiti入门操作
Activiti入门操作
|
Java 应用服务中间件 数据库
工作流框架Activiti基本介绍!Activiti Explorer流程控制台介绍和Activiti数据库安装说明
本文是对工作流框架的基本介绍,介绍了工作流流程引擎的用户控制台Activiti Explorer和Activiti的集成环境。对工作流框架Activiti安装数据库以及数据库的使用方式进行说明。介绍了工作流框架Activiti生成用户和群组,流程dingyi以及数据模型的方式等功能,以及功能的启用禁用方式。
299 0
工作流框架Activiti基本介绍!Activiti Explorer流程控制台介绍和Activiti数据库安装说明