/* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.activiti.engine.test.api.history; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.impl.history.HistoryLevel; import org.activiti.engine.impl.test.PluggableActivitiTestCase; import org.activiti.engine.task.Task; /** * @author Tijs Rademakers */ public class HistoricProcessInstanceAndVariablesQueryTest extends PluggableActivitiTestCase { private static String PROCESS_DEFINITION_KEY = "oneTaskProcess"; private static String PROCESS_DEFINITION_KEY_2 = "oneTaskProcess2"; private List<String> processInstanceIds; /** * Setup starts 4 process instances of oneTaskProcess * and 1 instance of oneTaskProcess2 */ protected void setUp() throws Exception { super.setUp(); repositoryService.createDeployment() .addClasspathResource("org/activiti/engine/test/api/runtime/oneTaskProcess.bpmn20.xml") .addClasspathResource("org/activiti/engine/test/api/runtime/oneTaskProcess2.bpmn20.xml") .deploy(); Map<String, Object> startMap = new HashMap<String, Object>(); startMap.put("test", "test"); startMap.put("test2", "test2"); processInstanceIds = new ArrayList<String>(); for (int i = 0; i < 4; i++) { processInstanceIds.add(runtimeService.startProcessInstanceByKey(PROCESS_DEFINITION_KEY, i + "", startMap).getId()); if (i == 0) { Task task = taskService.createTaskQuery().processInstanceId(processInstanceIds.get(0)).singleResult(); taskService.complete(task.getId()); } } startMap.clear(); startMap.put("anothertest", 123); processInstanceIds.add(runtimeService.startProcessInstanceByKey(PROCESS_DEFINITION_KEY_2, "1", startMap).getId()); } protected void tearDown() throws Exception { for (org.activiti.engine.repository.Deployment deployment : repositoryService.createDeploymentQuery().list()) { repositoryService.deleteDeployment(deployment.getId(), true); } super.tearDown(); } public void testQuery() { if(processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.ACTIVITY)) { HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables() .variableValueEquals("anothertest", 123).singleResult(); Map<String, Object> variableMap = processInstance.getProcessVariables(); assertEquals(1, variableMap.size()); assertEquals(123, variableMap.get("anothertest")); List<HistoricProcessInstance> instanceList = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().list(); assertEquals(5, instanceList.size()); instanceList = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().processDefinitionKey(PROCESS_DEFINITION_KEY).list(); assertEquals(4, instanceList.size()); processInstance = instanceList.get(0); variableMap = processInstance.getProcessVariables(); assertEquals(2, variableMap.size()); assertEquals("test", variableMap.get("test")); assertEquals("test2", variableMap.get("test2")); processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables() .processDefinitionKey(PROCESS_DEFINITION_KEY_2).singleResult(); variableMap = processInstance.getProcessVariables(); assertEquals(1, variableMap.size()); assertEquals(123, variableMap.get("anothertest")); processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().finished().singleResult(); variableMap = processInstance.getProcessVariables(); assertEquals(2, variableMap.size()); assertEquals("test", variableMap.get("test")); assertEquals("test2", variableMap.get("test2")); } } }