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); } }
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:操做任务的