package org.activiti.engine.test.api.repository; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.activiti.engine.impl.test.PluggableActivitiTestCase; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.repository.ProcessDefinitionQuery; public class ProcessDefinitionQueryByLatestTest extends PluggableActivitiTestCase { private static String XML_FILE_PATH = "org/activiti/engine/test/repository/latest/"; @Override protected void setUp() throws Exception { super.setUp(); } @Override protected void tearDown() throws Exception { super.tearDown(); } protected List<String> deploy(List<String> xmlFileNameList) throws Exception { List<String> deploymentIdList = new ArrayList<String>(); for(String xmlFileName : xmlFileNameList){ String deploymentId = repositoryService .createDeployment() .name(XML_FILE_PATH + xmlFileName) .addClasspathResource(XML_FILE_PATH + xmlFileName) .deploy() .getId(); deploymentIdList.add(deploymentId); } return deploymentIdList; } private void unDeploy(List<String> deploymentIdList) throws Exception { for(String deploymentId : deploymentIdList){ repositoryService.deleteDeployment(deploymentId, true); } } public void testQueryByLatestAndId() throws Exception { // Deploy List<String> xmlFileNameList = Arrays.asList("name_testProcess1_one.bpmn20.xml", "name_testProcess1_two.bpmn20.xml", "name_testProcess2_one.bpmn20.xml"); List<String> deploymentIdList = deploy(xmlFileNameList); List<String> processDefinitionIdList = new ArrayList<String>(); for(String deploymentId : deploymentIdList){ String processDefinitionId = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).list().get(0).getId(); processDefinitionIdList.add(processDefinitionId); } ProcessDefinitionQuery idQuery1 = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionIdList.get(0)).latestVersion(); List<ProcessDefinition> processDefinitions = idQuery1.list(); assertEquals(0, processDefinitions.size()); ProcessDefinitionQuery idQuery2 = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionIdList.get(1)).latestVersion(); processDefinitions = idQuery2.list(); assertEquals(1, processDefinitions.size()); assertEquals("testProcess1", processDefinitions.get(0).getKey()); ProcessDefinitionQuery idQuery3 = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionIdList.get(2)).latestVersion(); processDefinitions = idQuery3.list(); assertEquals(1, processDefinitions.size()); assertEquals("testProcess2", processDefinitions.get(0).getKey()); // Undeploy unDeploy(deploymentIdList); } public void testQueryByLatestAndName() throws Exception { // Deploy List<String> xmlFileNameList = Arrays.asList("name_testProcess1_one.bpmn20.xml", "name_testProcess1_two.bpmn20.xml", "name_testProcess2_one.bpmn20.xml"); List<String> deploymentIdList = deploy(xmlFileNameList); // name ProcessDefinitionQuery nameQuery = repositoryService.createProcessDefinitionQuery().processDefinitionName("one").latestVersion(); List<ProcessDefinition> processDefinitions = nameQuery.list(); assertEquals(1, processDefinitions.size()); assertEquals(1, processDefinitions.get(0).getVersion()); assertEquals("testProcess2", processDefinitions.get(0).getKey()); // nameLike ProcessDefinitionQuery nameLikeQuery = repositoryService.createProcessDefinitionQuery().processDefinitionName("one").latestVersion(); processDefinitions = nameLikeQuery.list(); assertEquals(1, processDefinitions.size()); assertEquals(1, processDefinitions.get(0).getVersion()); assertEquals("testProcess2", processDefinitions.get(0).getKey()); // Undeploy unDeploy(deploymentIdList); } public void testQueryByLatestAndVersion() throws Exception { // Deploy List<String> xmlFileNameList = Arrays.asList("version_testProcess1_one.bpmn20.xml", "version_testProcess1_two.bpmn20.xml", "version_testProcess2_one.bpmn20.xml"); List<String> deploymentIdList = deploy(xmlFileNameList); // version ProcessDefinitionQuery nameQuery = repositoryService.createProcessDefinitionQuery().processDefinitionVersion(1).latestVersion(); List<ProcessDefinition> processDefinitions = nameQuery.list(); assertEquals(1, processDefinitions.size()); assertEquals("testProcess2", processDefinitions.get(0).getKey()); // Undeploy unDeploy(deploymentIdList); } public void testQueryByLatestAndDeploymentId() throws Exception { // Deploy List<String> xmlFileNameList = Arrays.asList("name_testProcess1_one.bpmn20.xml", "name_testProcess1_two.bpmn20.xml", "name_testProcess2_one.bpmn20.xml"); List<String> deploymentIdList = deploy(xmlFileNameList); // deploymentId ProcessDefinitionQuery deploymentQuery1 = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentIdList.get(0)).latestVersion(); List<ProcessDefinition> processDefinitions = deploymentQuery1.list(); assertEquals(0, processDefinitions.size()); ProcessDefinitionQuery deploymentQuery2 = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentIdList.get(1)).latestVersion(); processDefinitions = deploymentQuery2.list(); assertEquals(1, processDefinitions.size()); assertEquals("testProcess1", processDefinitions.get(0).getKey()); // Undeploy unDeploy(deploymentIdList); } }