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;
public class HistoricProcessInstanceQueryVersionTest extends PluggableActivitiTestCase{
private static final String PROCESS_DEFINITION_KEY = "oneTaskProcess";
private static final String DEPLOYMENT_FILE_PATH = "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml";
private org.activiti.engine.repository.Deployment oldDeployment;
private org.activiti.engine.repository.Deployment newDeployment;
private List<String> processInstanceIds;
protected void setUp() throws Exception {
super.setUp();
oldDeployment = repositoryService.createDeployment()
.addClasspathResource(DEPLOYMENT_FILE_PATH)
.deploy();
processInstanceIds = new ArrayList<String>();
Map<String, Object> startMap = new HashMap<String, Object>();
startMap.put("test", 123);
processInstanceIds.add(runtimeService.startProcessInstanceByKey(PROCESS_DEFINITION_KEY, startMap).getId());
newDeployment = repositoryService.createDeployment()
.addClasspathResource(DEPLOYMENT_FILE_PATH)
.deploy();
startMap.clear();
startMap.put("anothertest", 456);
processInstanceIds.add(runtimeService.startProcessInstanceByKey(PROCESS_DEFINITION_KEY, startMap).getId());
}
protected void tearDown() throws Exception {
repositoryService.deleteDeployment(oldDeployment.getId(), true);
repositoryService.deleteDeployment(newDeployment.getId(), true);
}
public void testHistoricProcessInstanceQueryByProcessDefinitionVersion() {
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionVersion(1).list().get(0).getProcessDefinitionVersion().intValue());
assertEquals(2, historyService.createHistoricProcessInstanceQuery().processDefinitionVersion(2).list().get(0).getProcessDefinitionVersion().intValue());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionVersion(1).count());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionVersion(2).count());
assertEquals(0, historyService.createHistoricProcessInstanceQuery().processDefinitionVersion(3).count());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionVersion(1).count());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionVersion(2).list().size());
assertEquals(0, historyService.createHistoricProcessInstanceQuery().processDefinitionVersion(3).list().size());
// Variables Case
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.ACTIVITY)) {
HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables()
.variableValueEquals("test", 123).processDefinitionVersion(1).singleResult();
assertEquals(1, processInstance.getProcessDefinitionVersion().intValue());
Map<String, Object> variableMap = processInstance.getProcessVariables();
assertEquals(123, variableMap.get("test"));
processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables()
.variableValueEquals("anothertest", 456).processDefinitionVersion(1).singleResult();
assertNull(processInstance);
processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables()
.variableValueEquals("anothertest", 456).processDefinitionVersion(2).singleResult();
assertEquals(2, processInstance.getProcessDefinitionVersion().intValue());
variableMap = processInstance.getProcessVariables();
assertEquals(456, variableMap.get("anothertest"));
}
}
public void testHistoricProcessInstanceQueryByProcessDefinitionVersionAndKey() {
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).processDefinitionVersion(1).count());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).processDefinitionVersion(2).count());
assertEquals(0, historyService.createHistoricProcessInstanceQuery().processDefinitionKey("undefined").processDefinitionVersion(1).count());
assertEquals(0, historyService.createHistoricProcessInstanceQuery().processDefinitionKey("undefined").processDefinitionVersion(2).count());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).processDefinitionVersion(1).list().size());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).processDefinitionVersion(2).list().size());
assertEquals(0, historyService.createHistoricProcessInstanceQuery().processDefinitionKey("undefined").processDefinitionVersion(1).list().size());
assertEquals(0, historyService.createHistoricProcessInstanceQuery().processDefinitionKey("undefined").processDefinitionVersion(2).list().size());
}
public void testHistoricProcessInstanceOrQueryByProcessDefinitionVersion() {
assertEquals(1, historyService.createHistoricProcessInstanceQuery().or().processDefinitionVersion(1).processDefinitionId("undefined").endOr().count());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().or().processDefinitionVersion(2).processDefinitionId("undefined").endOr().count());
assertEquals(0, historyService.createHistoricProcessInstanceQuery().or().processDefinitionVersion(3).processDefinitionId("undefined").endOr().count());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().or().processDefinitionVersion(1).processDefinitionId("undefined").endOr().list().size());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().or().processDefinitionVersion(2).processDefinitionId("undefined").endOr().list().size());
assertEquals(0, historyService.createHistoricProcessInstanceQuery().or().processDefinitionVersion(3).processDefinitionId("undefined").endOr().list().size());
// Variables Case
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.ACTIVITY)) {
HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables()
.or().variableValueEquals("test", "invalid").processDefinitionVersion(1).endOr().singleResult();
assertEquals(1, processInstance.getProcessDefinitionVersion().intValue());
Map<String, Object> variableMap = processInstance.getProcessVariables();
assertEquals(123, variableMap.get("test"));
processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables()
.or().variableValueEquals("anothertest", "invalid").processDefinitionVersion(2).endOr().singleResult();
assertEquals(2, processInstance.getProcessDefinitionVersion().intValue());
variableMap = processInstance.getProcessVariables();
assertEquals(456, variableMap.get("anothertest"));
processInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables()
.variableValueEquals("anothertest", "invalid").processDefinitionVersion(3).singleResult();
assertNull(processInstance);
}
}
}