package org.activiti.engine.test.api.history;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.activiti.engine.history.HistoricData;
import org.activiti.engine.history.HistoricVariableInstance;
import org.activiti.engine.history.HistoricVariableUpdate;
import org.activiti.engine.history.ProcessInstanceHistoryLog;
import org.activiti.engine.impl.history.HistoryLevel;
import org.activiti.engine.impl.persistence.entity.HistoricDetailVariableInstanceUpdateEntity;
import org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity;
import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.task.Task;
/**
* @author Daisuke Yoshimoto
*/
public class ProcessInstanceLogQueryAndByteArrayTypeVariableTest extends PluggableActivitiTestCase {
protected String processInstanceId;
private static String LARGE_STRING_VALUE;
static {
StringBuilder sb = new StringBuilder("a");
for(int i = 0; i < 4001; i++) {
sb.append("a");
}
LARGE_STRING_VALUE = sb.toString();
}
@Override
protected void setUp() throws Exception {
super.setUp();
// Deploy test process
deployTwoTasksTestProcess();
// Start process instance
Map<String, Object> vars = new HashMap<String, Object>();
// ByteArrayType Variable
vars.put("var", LARGE_STRING_VALUE);
this.processInstanceId = runtimeService.startProcessInstanceByKey("twoTasksProcess", vars).getId();
// Finish tasks
for (Task task : taskService.createTaskQuery().list()) {
taskService.complete(task.getId());
}
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testIncludeVariables() {
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.FULL)) {
HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery()
.processInstanceId(processInstanceId).variableName("var").singleResult();
assertEquals(historicVariableInstance.getValue(), LARGE_STRING_VALUE);
ProcessInstanceHistoryLog log = historyService.createProcessInstanceHistoryLogQuery(processInstanceId)
.includeVariables()
.singleResult();
List<HistoricData> events = log.getHistoricData();
assertEquals(1, events.size());
for (HistoricData event : events) {
assertTrue(event instanceof HistoricVariableInstance);
assertEquals(((HistoricVariableInstanceEntity) event).getValue(), LARGE_STRING_VALUE);
}
}
}
public void testIncludeVariableUpdates() {
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.FULL)) {
HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery()
.processInstanceId(processInstanceId).variableName("var").singleResult();
assertEquals(historicVariableInstance.getValue(), LARGE_STRING_VALUE);
ProcessInstanceHistoryLog log = historyService.createProcessInstanceHistoryLogQuery(processInstanceId)
.includeVariableUpdates()
.singleResult();
List<HistoricData> events = log.getHistoricData();
assertEquals(1, events.size());
for (HistoricData event : events) {
assertTrue(event instanceof HistoricVariableUpdate);
assertEquals(((HistoricDetailVariableInstanceUpdateEntity) event).getValue(), LARGE_STRING_VALUE);
}
}
}
}