ActivitiAPITest package com.rainhowchan;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.zip.ZipInputSt
package com.rainhowchan; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; 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 { private ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine(); /** * 部署流程定义(方式一:读取单个流程定义文件 方式二:读取zip文件) */ @Test public void test1(){ DeploymentBuilder builder=processEngine.getRepositoryService().createDeployment(); //方式一 // builder.addClasspathResource("test1.bpmn"); // builder.addClasspathResource("test1.png"); //方式二 ZipInputStream zip = new ZipInputStream(getClass().getClassLoader().getResourceAsStream("process.zip")); builder.addZipInputStream(zip); Deployment deployment=builder.deploy(); System.out.println(deployment.getId()); } /** * 删除部署信息 */ @Test public void test2(){ String deploymentId ="301"; processEngine.getRepositoryService().deleteDeployment(deploymentId, true); } /** * 删除流程定义(通过删除部署信息达到删除流程定义的目的) */ @Test public void test3() { String deploymentId = "1401"; // processEngine.getRepositoryService().deleteDeployment(deploymentId); processEngine.getRepositoryService().deleteDeployment(deploymentId, true); } /** * 查询部署列表 */ @Test public void test4(){ DeploymentQuery query= processEngine.getRepositoryService().createDeploymentQuery(); Listlist=query.list(); for(Deployment deployment:list){ System.out.println(deployment.getId()); } } /** * 查询流程定义列表 */ @Test public void test5(){ ProcessDefinitionQuery query = processEngine.getRepositoryService() .createProcessDefinitionQuery(); List list = query.list(); for(ProcessDefinition pd: list){ System.out.println(pd.getName()+"---->"+pd.getId()); } } /** * 查询一次部署对应的流程定义文件和对应的输入流(bpmn png) * @throws IOException */ @Test public void test6() throws IOException{ String deploymentId="801"; List names = processEngine.getRepositoryService() .getDeploymentResourceNames(deploymentId); for(String name: names){ System.out.println(name); InputStream is = processEngine.getRepositoryService() .getResourceAsStream(deploymentId, name); try { FileUtils.copyInputStreamToFile(is, new File("d:\\"+name)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } is.close(); } } /** * 获得png文件的输入流 */ @Test public void test7() throws Exception { String processDefinitionId = "qjlc:3:204"; InputStream pngInputStream = processEngine.getRepositoryService() .getProcessDiagram(processDefinitionId); FileUtils.copyInputStreamToFile(pngInputStream, new File("d:\\my.png")); } /** * 启动流程实例 * 方式一: 根据流程定义的id启动 * 方式二: 根据流程定义的key启动(自动选择最新版本的流程定义启动流程实例) */ @Test public void test8() { /* * String processDefinitionId = "qjlc:9:1204"; ProcessInstance * processInstance = * processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId ); * System.out.println(processInstance.getId()); */ String processDefinitionKey = "qjlc"; ProcessInstance processInstance = processEngine.getRuntimeService() .startProcessInstanceByKey(processDefinitionKey); System.out.println(processInstance.getId()); } /** * 查询流程实例列表 查询act_ru_execution act_re_procdef表 */ @Test public void test9(){ ProcessInstanceQuery query =processEngine.getRuntimeService().createProcessInstanceQuery(); query.processDefinitionKey("qjlc"); query.orderByProcessDefinitionId().desc(); query.listPage(0, 10); List list = query.list(); System.out.println(list.size()); for(ProcessInstance pi: list){ System.out.println(pi.getId()+"---->"+pi.getActivityId()); } } /** * 结束流程实例 操作的表act_ru_execution act_ru_task */ @Test public void test10(){ String processInstanceId = "901"; processEngine.getRuntimeService().deleteProcessInstance(processInstanceId , "我愿意"); } /** * 查询任务列表 查询act_ru_task表 */ @Test public void test11(){ TaskQuery query = processEngine.getTaskService().createTaskQuery(); String assignee = "张三"; query.taskAssignee(assignee); query.orderByTaskCreateTime().desc(); List list = query.list(); for (Task task : list) { System.out.println(task.getId()); } } /** * 办理任务 */ @Test public void test12(){ String taskId = "1004"; processEngine.getTaskService().complete(taskId); } /** * 直接将流程向下执行一步(管理员专属) */ @Test public void test13(){ String executionId = "1001";//流程实例id processEngine.getRuntimeService().signal(executionId); } /** * 查询最新版本的流程定义列表 */ @Test public void test14(){ ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery(); query.orderByProcessDefinitionVersion().asc(); List list = query.list(); Map map = new HashMap (); for (ProcessDefinition pd : list) { map.put(pd.getKey(), pd); //利用map键唯一特性 } ArrayList lastList = new ArrayList<>(map.values()); for (ProcessDefinition processDefinition : lastList) { System.out.println(processDefinition.getName() + "----->"+ processDefinition.getVersion() ); } } }