Num55 boss09(activiti安装以及API)

安装流程设计器插件:

使用框架提供的方式建立23张表:

流程部署,定义,启动&查询,办理任务:

流程的部署,查询,删除 & 获取流程定义文件 & 流程实例的启动,查询,删除 & 查询,办理我的任务:

package cn.itcast.activiti;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.zip.ZipInputStream;

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

/**
 * 测试API
 * @author zhaoqx
 *
 */
public class ActivitiAPITest {
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	//部署流程定义两种方式
	@Test
	public void test1() throws Exception{
		DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment();
		//方式一:加载单个的流程定义文件
		//deploymentBuilder.addClasspathResource("qjlc.bpmn");
		//deploymentBuilder.addClasspathResource("qjlc.png");
		//deploymentBuilder.deploy();
		
		//方式二:加载zip压缩文件
		ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(new File("d:\\Desktop.zip")));
		deploymentBuilder.addZipInputStream(zipInputStream);
		deploymentBuilder.deploy();
	}
	
	//查询最新版本的流程定义
	@Test
	public void test2() throws Exception{
		//processEngine.getXXXService().createXXXQuery();
		//processEngine.getRepositoryService().createDeploymentQuery().list();
		//processEngine.getRuntimeService().createProcessInstanceQuery().list();
		//processEngine.getTaskService().createTaskQuery().list();
		//processEngine.getHistoryService().createHistoricActivityInstanceQuery().list();
		
		ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();
		//添加过滤条件
		//query.processDefinitionNameLike("请假%");
		//添加过滤条件,查询最新的
		//query.latestVersion();
		//添加排序条件
		query.orderByProcessDefinitionId().asc();
		List<ProcessDefinition> list = query.listPage(0, 10);
		for (ProcessDefinition processDefinition : list) {
			System.out.println(processDefinition);
		}
	}
	
	//删除流程定义
	@Test
	public void test3(){
		String deploymentId = "101";//部署id
		processEngine.getRepositoryService().deleteDeployment(deploymentId);
	}
	
	//查询流程定义文件(bpmn、png)名称和对应的输入流
	@Test
	public void test4() throws Exception{
		String deploymentId = "901";//部署id
		List<String> list = processEngine.getRepositoryService().getDeploymentResourceNames(deploymentId);
		for (String name : list) {
			InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, name);
			System.out.println(name);
			//经过一个输出流写
			OutputStream out = new FileOutputStream(new File("d:\\"+name));
			/*byte[] b = new byte[1024];//1KB
			in.read(b);
			out.write(b);
			out.close();*/
			
			FileUtils.copyInputStreamToFile(in, new File("d:\\"+name));
			
			in.close();
		}
	}
	
	//启动流程实例两种方式
	@Test
	public void test5(){
		//方式一:根据流程定义的id启动流程实例
		//String processDefinitionId;//流程定义id
		//processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId);
		
		//方式二:根据流程定义key启动流程实例(建议使用)----自动选择最新版本的流程定义
		String processDefinitionKey = "qjlc";//流程定义key
		ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);
		System.out.println(processInstance.getId());
	}
	
	//查询流程实例
	@Test
	public void test6(){
		List<ProcessInstance> list = processEngine.getRuntimeService().createProcessInstanceQuery().list();
		for (ProcessInstance processInstance : list) {
			System.out.println(processInstance);
		}
	}
	
	//删除流程实例
	@Test
	public void test7(){
		String processInstanceId = "1301";//流程实例id
		String deleteReason = "不请假了";//删除缘由
		processEngine.getRuntimeService().deleteProcessInstance(processInstanceId, deleteReason);
	}
	
	//查询我的任务
	@Test
	public void test8(){
		//任务查询对象,能够查询act_ru_task
		TaskQuery query = processEngine.getTaskService().createTaskQuery();
		query.taskAssignee("张三");
		//添加排序条件
		query.orderByTaskCreateTime().desc();
		//分页查询
		List<Task> list = query.listPage(0, 5);
		for (Task task : list) {
			System.out.println(task);
		}
	}
	
	//办理我的任务
	@Test
	public void test9(){
		String taskId = "1504";//任务id
		processEngine.getTaskService().complete(taskId);
	}
}

总结API

l         几个接口(和表有对应关系)java

一、Deployment对应部署表act_re_deploymentapache

二、ProcessDefinition对应流程定义表act_re_procdef框架

三、ProcessInstance对应流程实例表act_ru_execution测试

四、Task对应任务表act_ru_taskui

l         几个Query对象(查询对应的数据表)spa

一、DeploymentQuery对应部署表act_re_deployment插件

二、ProcessDefinitionQuery对应流程定义表act_re_procdef设计

三、ProcessInstanceQuery对应流程实例表act_ru_executioncode

四、TaskQuery对应任务表act_ru_task对象

 

l         几个Service对象

一、RepositoryService:操做流程定义相关信息的、部署流程定义、删除流程定义、查询流程定义、查询流程定义文件名称和输入流

二、RuntimeService:操做流程实例的

三、TaskService:操做任务的

框架提供的网页版流程设计器使用:

相关文章
相关标签/搜索