Activity工作流框架入门(二)API使用DEMO

工作流API使用Demo

package activity.demo.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.DeploymentQuery;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceQuery;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.apache.commons.io.FileUtils;
import org.junit.Test;

public class ActivitiApiTest {
	ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();

	/**
	 * 部署流程定义 方式一:加载单个的流程定义文件 方式二:加载zip文件(建议)
	 * 
	 * @throws Exception
	 * 
	 */
	@Test
	public void testDeployProcess() throws Exception {
		DeploymentBuilder createDeployment = pe.getRepositoryService()
				.createDeployment();
		// 方式一:加载单个的流程定义文件
		/*
		 * createDeployment.addClasspathResource("bxlc.bpmn");
		 * createDeployment.addClasspathResource("bxlc.png"); Deployment
		 * deployment = createDeployment.deploy();
		 * System.out.println(deployment.getId());
		 */

		// 方式二:加载zip文件(建议)----zip文件在类路径下
		/*
		 * ZipInputStream zipInputStream = new ZipInputStream(this.getClass()
		 * .getClassLoader().getResourceAsStream("process.zip"));
		 */
		// 方式二:加载zip文件(建议)----zip文件不在类路径下
		ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(
				new File("e:\\process.zip")));
		createDeployment.addZipInputStream(zipInputStream);
		createDeployment.name("报销流程");// 指定部署的名称
		Deployment deployment = createDeployment.deploy();
		System.out.println(deployment.getId());
	}

	/**
	 * 查询部署列表
	 */
	@Test
	public void testQueryDeploymentInfo() {
		// 部署查询对象----查询部署表act_re_deployment
		DeploymentQuery query = pe.getRepositoryService()
				.createDeploymentQuery();
		query.orderByDeploymenTime().desc();
		List<Deployment> list = query.list();
		for (Deployment deployment : list) {
			String id = deployment.getId();
			String name = deployment.getName();
			Date deploymentTime = deployment.getDeploymentTime();
			System.out.println(id + " " + name + " " + deploymentTime);
		}
	}

	/**
	 * 删除部署信息
	 */
	@Test
	public void testDeleteDeploymentData() {
		String deploymentId = "301";
		// 参数一:部署id
		// 参数二:是否级联删除
		pe.getRepositoryService().deleteDeployment(deploymentId, true);
	}

	/**
	 * 删除流程定义
	 */
	@Test
	public void testDeleteProcessDefinition() {
		String deploymentId = "101";
		pe.getRepositoryService().deleteDeployment(deploymentId, true);
	}

	/**
	 * 查询流程定义列表(最新版本的流程定义列表)
	 */
	@Test
	public void testQueryProcessDefinition() {
		ProcessDefinitionQuery query = pe.getRepositoryService()
				.createProcessDefinitionQuery();
		query.latestVersion();
		List<ProcessDefinition> list = query.list();
		for (ProcessDefinition pd : list) {
			System.out.println(pd.getId() + " " + pd.getVersion());
		}
	}

	/**
	 * 查询流程定义列表(最新版本的流程定义列表)
	 */
	@Test
	public void testQueryProcessDefinitionList() {
		ProcessDefinitionQuery query = pe.getRepositoryService()
				.createProcessDefinitionQuery();
		// 根据version升序
		query.orderByProcessDefinitionVersion().asc();
		List<ProcessDefinition> list = query.list();
		Map<String, ProcessDefinition> map = new HashMap<String, ProcessDefinition>();
		for (ProcessDefinition pd : list) {
			map.put(pd.getKey(), pd);
			System.out.println(pd.getId() + " " + pd.getVersion());
		}

		List<ProcessDefinition> pdList = new ArrayList<ProcessDefinition>(
				map.values());

		System.out.println(map);
	}

	/**
	 * 查询一次部署对应的流程定义文件名称和输入流
	 * 
	 * @throws Exception
	 */
	@Test
	public void testQueryDeloymentFileAndInputstream() throws Exception {
		String deploymentId = "701";
		List<String> names = pe.getRepositoryService()
				.getDeploymentResourceNames(deploymentId);
		for (String name : names) {
			System.out.println(name);
			InputStream in = pe.getRepositoryService().getResourceAsStream(
					deploymentId, name);
			File destFile = new File("e:\\" + name);// 目标文件
			FileUtils.copyInputStreamToFile(in, destFile);
			in.close();
		}
	}

	/**
	 * 查询一次部署对应的png图片的输入流
	 * 
	 * @throws Exception
	 */
	@Test
	public void testGetDeploymentPic() throws Exception {
		String processDefinitionId = "bxlc:1:704";
		InputStream pngIn = pe.getRepositoryService().getProcessDiagram(
				processDefinitionId);
		File destFile = new File("e:\\my.png");// 目标文件
		FileUtils.copyInputStreamToFile(pngIn, destFile);
	}

	/**
	 * 启动流程实例 方式一:根据流程定义的id启动 方式二:根据流程定义的key启动(建议)----可以自动选择最新版本的流程定义
	 */
	@Test
	public void testStartProcessInstance() {
		// 方式一:根据流程定义的id启动
		// String processDefinitionId = "bxlc:1:704";
		// ProcessInstance pi =
		// pe.getRuntimeService().startProcessInstanceById(processDefinitionId
		// );
		// System.out.println(pi.getId());

		// 方式二:根据流程定义的key启动(建议)----可以自动选择最新版本的流程定义
		String processDefinitionKey = "bxlc";
		ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(
				processDefinitionKey);
		System.out.println(pi.getId());
	}

	/**
	 * 查询流程实例列表
	 */
	@Test
	public void testQueryProcessInstanceList() {
		// 流程实例查询对象,查询执行表act_ru_execution
		ProcessInstanceQuery query = pe.getRuntimeService()
				.createProcessInstanceQuery();
		List<ProcessInstance> list = query.list();
		for (ProcessInstance pi : list) {
			System.out.println(pi.getActivityId() + " " + pi.getId() + " "
					+ pi.getProcessDefinitionId());
		}
	}

	/**
	 * 删除流程实例
	 */
	@Test
	public void testDeleteProcessInstance() {
		String processInstanceId = "1201";// 流程实例id
		String deleteReason = "不请假了";// 删除原因
		pe.getRuntimeService().deleteProcessInstance(processInstanceId,
				deleteReason);
	}

	/**
	 * 查询任务列表
	 */
	@Test
	public void testQueryTaskList(){
		TaskQuery query = pe.getTaskService().createTaskQuery();
		String assignee = "王五";
		query.taskAssignee(assignee);
		query.orderByTaskCreateTime().desc();
		List<Task> list = query.listPage(0, 6);//分页查询
		System.out.println(list.size());
		for (Task task : list) {
			System.out.println(task.getId());
		}
	}

	/**
	 * 办理任务
	 */
	@Test
	public void testExecuteTask(){
		String taskId = "1502";
		pe.getTaskService().complete(taskId );
	}

}



  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值