提交 5e012078 编写于 作者: T Tijs Rademakers

Test history cleanup + fix for ACT-2095

上级 61be5c18
......@@ -26,6 +26,7 @@ import java.util.Set;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.ActivitiIllegalArgumentException;
import org.activiti.engine.impl.history.HistoryLevel;
import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
......@@ -166,15 +167,16 @@ public class ProcessInstanceQueryTest extends PluggableActivitiTestCase {
assertEquals(1, runtimeService.createProcessInstanceQuery().processInstanceNameLikeIgnoreCase("new%").list().size());
assertNull(runtimeService.createProcessInstanceQuery().or().processInstanceNameLikeIgnoreCase("%nope").processDefinitionId("undefined").endOr().singleResult());
// History
assertEquals(2, historyService.createHistoricProcessInstanceQuery().or().processInstanceNameLikeIgnoreCase("%name%").processDefinitionId("undefined").endOr().list().size());
assertEquals(2, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("%name%").list().size());
assertEquals(2, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("%NAME%").list().size());
assertEquals(2, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("%NaM%").list().size());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("%the%").list().size());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("new%").list().size());
assertNull(historyService.createHistoricProcessInstanceQuery().or().processInstanceNameLikeIgnoreCase("%nope").processDefinitionId("undefined").endOr().singleResult());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
assertEquals(2, historyService.createHistoricProcessInstanceQuery().or().processInstanceNameLikeIgnoreCase("%name%").processDefinitionId("undefined").endOr().list().size());
assertEquals(2, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("%name%").list().size());
assertEquals(2, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("%NAME%").list().size());
assertEquals(2, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("%NaM%").list().size());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("%the%").list().size());
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processInstanceNameLikeIgnoreCase("new%").list().size());
assertNull(historyService.createHistoricProcessInstanceQuery().or().processInstanceNameLikeIgnoreCase("%nope").processDefinitionId("undefined").endOr().singleResult());
}
}
public void testQueryByBusinessKeyAndProcessDefinitionKey() {
......
......@@ -16,6 +16,7 @@ import java.util.Date;
import java.util.List;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.impl.history.HistoryLevel;
import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.task.Task;
......@@ -41,10 +42,10 @@ public class TaskDueDateTest extends PluggableActivitiTestCase {
Date now = processEngineConfiguration.getClock().getCurrentTime();
// 4 tasks with a due date
Task task0 = createTask("task0", new Date(now.getTime() + (4L * 7L * 24L * 60L * 60L * 1000L))); // 4 weeks in future
Task task1 = createTask("task1", new Date(now.getTime() + (2 * 24L * 60L * 60L * 1000L))); // 2 days in future
Task task2 = createTask("task2", new Date(now.getTime() + (7L * 24L * 60L * 60L * 1000L))); // 1 week in future
Task task3 = createTask("task3", new Date(now.getTime() + (24L * 60L * 60L * 1000L))); // 1 day in future
createTask("task0", new Date(now.getTime() + (4L * 7L * 24L * 60L * 60L * 1000L))); // 4 weeks in future
createTask("task1", new Date(now.getTime() + (2 * 24L * 60L * 60L * 1000L))); // 2 days in future
createTask("task2", new Date(now.getTime() + (7L * 24L * 60L * 60L * 1000L))); // 1 week in future
createTask("task3", new Date(now.getTime() + (24L * 60L * 60L * 1000L))); // 1 day in future
// 2 tasks without a due date
createTask("task4", null);
......@@ -100,56 +101,55 @@ public class TaskDueDateTest extends PluggableActivitiTestCase {
assertEquals("task1", tasks.get(4).getName());
assertEquals("task3", tasks.get(5).getName());
// And now the same, but for history!
List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery().orderByDueDateNullsLast().asc().list();
for (int i=0; i<4; i++) {
assertNotNull(historicTasks.get(i).getDueDate());
}
assertEquals("task3", historicTasks.get(0).getName());
assertEquals("task1", historicTasks.get(1).getName());
assertEquals("task2", historicTasks.get(2).getName());
assertEquals("task0", historicTasks.get(3).getName());
assertNull(historicTasks.get(4).getDueDate());
assertNull(historicTasks.get(5).getDueDate());
// The same, but now desc
historicTasks = historyService.createHistoricTaskInstanceQuery().orderByDueDateNullsLast().desc().list();
for (int i=0; i<4; i++) {
assertNotNull(historicTasks.get(i).getDueDate());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// And now the same, but for history!
List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery().orderByDueDateNullsLast().asc().list();
for (int i=0; i<4; i++) {
assertNotNull(historicTasks.get(i).getDueDate());
}
assertEquals("task3", historicTasks.get(0).getName());
assertEquals("task1", historicTasks.get(1).getName());
assertEquals("task2", historicTasks.get(2).getName());
assertEquals("task0", historicTasks.get(3).getName());
assertNull(historicTasks.get(4).getDueDate());
assertNull(historicTasks.get(5).getDueDate());
// The same, but now desc
historicTasks = historyService.createHistoricTaskInstanceQuery().orderByDueDateNullsLast().desc().list();
for (int i=0; i<4; i++) {
assertNotNull(historicTasks.get(i).getDueDate());
}
assertEquals("task0", historicTasks.get(0).getName());
assertEquals("task2", historicTasks.get(1).getName());
assertEquals("task1", historicTasks.get(2).getName());
assertEquals("task3", historicTasks.get(3).getName());
assertNull(historicTasks.get(4).getDueDate());
assertNull(historicTasks.get(5).getDueDate());
// The same but now nulls first
historicTasks = historyService.createHistoricTaskInstanceQuery().orderByDueDateNullsFirst().asc().list();
assertNull(historicTasks.get(0).getDueDate());
assertNull(historicTasks.get(1).getDueDate());
assertEquals("task3", historicTasks.get(2).getName());
assertEquals("task1", historicTasks.get(3).getName());
assertEquals("task2", historicTasks.get(4).getName());
assertEquals("task0", historicTasks.get(5).getName());
// And now desc
historicTasks = historyService.createHistoricTaskInstanceQuery().orderByDueDateNullsFirst().desc().list();
assertNull(historicTasks.get(0).getDueDate());
assertNull(historicTasks.get(1).getDueDate());
assertEquals("task0", historicTasks.get(2).getName());
assertEquals("task2", historicTasks.get(3).getName());
assertEquals("task1", historicTasks.get(4).getName());
assertEquals("task3", historicTasks.get(5).getName());
}
assertEquals("task0", historicTasks.get(0).getName());
assertEquals("task2", historicTasks.get(1).getName());
assertEquals("task1", historicTasks.get(2).getName());
assertEquals("task3", historicTasks.get(3).getName());
assertNull(historicTasks.get(4).getDueDate());
assertNull(historicTasks.get(5).getDueDate());
// The same but now nulls first
historicTasks = historyService.createHistoricTaskInstanceQuery().orderByDueDateNullsFirst().asc().list();
assertNull(historicTasks.get(0).getDueDate());
assertNull(historicTasks.get(1).getDueDate());
assertEquals("task3", historicTasks.get(2).getName());
assertEquals("task1", historicTasks.get(3).getName());
assertEquals("task2", historicTasks.get(4).getName());
assertEquals("task0", historicTasks.get(5).getName());
// And now desc
historicTasks = historyService.createHistoricTaskInstanceQuery().orderByDueDateNullsFirst().desc().list();
assertNull(historicTasks.get(0).getDueDate());
assertNull(historicTasks.get(1).getDueDate());
assertEquals("task0", historicTasks.get(2).getName());
assertEquals("task2", historicTasks.get(3).getName());
assertEquals("task1", historicTasks.get(4).getName());
assertEquals("task3", historicTasks.get(5).getName());
}
private Task createTask(String name, Date dueDate) {
......
......@@ -15,6 +15,7 @@ package org.activiti.engine.test.api.task;
import java.util.Date;
import java.util.List;
import org.activiti.engine.impl.history.HistoryLevel;
import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskInfo;
......@@ -54,16 +55,17 @@ public class TaskInfoQueryTest extends PluggableActivitiTestCase {
assertEquals(3, taskInfos.size());
// History
taskInfoQueryWrapper = new TaskInfoQueryWrapper(historyService.createHistoricTaskInstanceQuery());
taskInfos = taskInfoQueryWrapper.getTaskInfoQuery().or()
.taskNameLike("%k1%")
.taskDueAfter(new Date(now.getTime() + (3 * 24L * 60L * 60L * 1000L)))
.endOr()
.list();
assertEquals(3, taskInfos.size());
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
// History
taskInfoQueryWrapper = new TaskInfoQueryWrapper(historyService.createHistoricTaskInstanceQuery());
taskInfos = taskInfoQueryWrapper.getTaskInfoQuery().or()
.taskNameLike("%k1%")
.taskDueAfter(new Date(now.getTime() + (3 * 24L * 60L * 60L * 1000L)))
.endOr()
.list();
assertEquals(3, taskInfos.size());
}
}
private Task createTask(String name, Date dueDate) {
......
......@@ -21,6 +21,7 @@ import java.util.TreeMap;
import org.activiti.engine.HistoryService;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
......@@ -307,11 +308,12 @@ public class AdminRunningInstancesPanel extends DetailPanel {
addDetailComponent(imageHeader);
}
ProcessDiagramGenerator diagramGenerator = ((ProcessEngineImpl) ProcessEngines.getDefaultProcessEngine()).getProcessEngineConfiguration().getProcessDiagramGenerator();
ProcessEngineConfiguration processEngineConfig = ((ProcessEngineImpl) ProcessEngines.getDefaultProcessEngine()).getProcessEngineConfiguration();
ProcessDiagramGenerator diagramGenerator = processEngineConfig.getProcessDiagramGenerator();
StreamResource diagram = new ProcessDefinitionImageStreamResourceBuilder()
.buildStreamResource(processInstance.getId(), processInstance.getProcessDefinitionId(),
repositoryService, runtimeService, diagramGenerator);
repositoryService, runtimeService, diagramGenerator, processEngineConfig);
currentEmbedded = new Embedded(null, diagram);
currentEmbedded.setType(Embedded.TYPE_IMAGE);
......@@ -364,7 +366,7 @@ public class AdminRunningInstancesPanel extends DetailPanel {
List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstance.getId())
.orderByHistoricTaskInstanceEndTime().desc()
.orderByHistoricTaskInstanceStartTime().desc()
.orderByTaskCreateTime().desc()
.list();
if(!tasks.isEmpty()) {
......
......@@ -222,7 +222,7 @@ public class ProcessInstanceDetailPanel extends DetailPanel {
ProcessEngineConfiguration processEngineConfiguration = ProcessEngines.getDefaultProcessEngine().getProcessEngineConfiguration();
ProcessDiagramGenerator diagramGenerator = processEngineConfiguration.getProcessDiagramGenerator();
StreamResource diagram = new ProcessDefinitionImageStreamResourceBuilder()
.buildStreamResource(processInstance, repositoryService, runtimeService, diagramGenerator);
.buildStreamResource(processInstance, repositoryService, runtimeService, diagramGenerator, processEngineConfiguration);
if(diagram != null) {
Label header = new Label(i18nManager.getMessage(Messages.PROCESS_HEADER_DIAGRAM));
......
......@@ -22,7 +22,6 @@ import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
......@@ -68,7 +67,8 @@ public class ProcessDefinitionImageStreamResourceBuilder {
return imageResource;
}
public StreamResource buildStreamResource(ProcessInstance processInstance, RepositoryService repositoryService, RuntimeService runtimeService, ProcessDiagramGenerator diagramGenerator) {
public StreamResource buildStreamResource(ProcessInstance processInstance, RepositoryService repositoryService,
RuntimeService runtimeService, ProcessDiagramGenerator diagramGenerator, ProcessEngineConfiguration processEngineConfig) {
StreamResource imageResource = null;
......@@ -79,11 +79,10 @@ public class ProcessDefinitionImageStreamResourceBuilder {
try {
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
ProcessEngineConfiguration processEngineConfiguration = Context.getProcessEngineConfiguration();
InputStream definitionImageStream = diagramGenerator.generateDiagram(bpmnModel, "png",
runtimeService.getActiveActivityIds(processInstance.getId()), Collections.<String>emptyList(),
processEngineConfiguration.getActivityFontName(), processEngineConfiguration.getLabelFontName(),
processEngineConfiguration.getClassLoader(), 1.0);
processEngineConfig.getActivityFontName(), processEngineConfig.getLabelFontName(),
processEngineConfig.getClassLoader(), 1.0);
if(definitionImageStream != null) {
StreamSource streamSource = new InputStreamStreamSource(definitionImageStream);
......@@ -102,7 +101,9 @@ public class ProcessDefinitionImageStreamResourceBuilder {
return imageResource;
}
public StreamResource buildStreamResource(String processInstanceId, String processDefinitionId, RepositoryService repositoryService, RuntimeService runtimeService, ProcessDiagramGenerator diagramGenerator) {
public StreamResource buildStreamResource(String processInstanceId, String processDefinitionId,
RepositoryService repositoryService, RuntimeService runtimeService, ProcessDiagramGenerator diagramGenerator,
ProcessEngineConfiguration processEngineConfig) {
StreamResource imageResource = null;
......@@ -111,11 +112,10 @@ public class ProcessDefinitionImageStreamResourceBuilder {
if (processDefinition != null && processDefinition.isGraphicalNotationDefined()) {
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
ProcessEngineConfiguration processEngineConfiguration = Context.getProcessEngineConfiguration();
InputStream definitionImageStream = diagramGenerator.generateDiagram(bpmnModel, "png",
runtimeService.getActiveActivityIds(processInstanceId), Collections.<String>emptyList(),
processEngineConfiguration.getActivityFontName(), processEngineConfiguration.getLabelFontName(),
processEngineConfiguration.getClassLoader(), 1.0);
processEngineConfig.getActivityFontName(), processEngineConfig.getLabelFontName(),
processEngineConfig.getClassLoader(), 1.0);
StreamSource streamSource = new InputStreamStreamSource(definitionImageStream);
......
......@@ -61,24 +61,24 @@
<!-- A simple Jetty test server at http://localhost:8080/activiti-webapp-explorer2
can be launched with the Maven goal jetty:run and stopped with jetty:stop -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.24</version>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.2.v20140723</version>
<configuration>
<stopPort>9966</stopPort>
<stopKey>activiti-webapp-explorer2</stopKey>
<!-- Redeploy every x seconds if changes are detected, 0 for no
automatic redeployment -->
<scanIntervalSeconds>0</scanIntervalSeconds>
<!-- make sure Jetty also finds the widgetset -->
<webAppConfig>
<webApp>
<contextPath>/activiti-explorer2</contextPath>
<baseResource implementation="org.mortbay.resource.ResourceCollection">
<!-- make sure Jetty also finds the widgetset -->
<baseResource implementation="org.eclipse.jetty.util.resource.ResourceCollection">
<!-- Workaround for Maven/Jetty issue http://jira.codehaus.org/browse/JETTY-680 -->
<!-- <resources>src/main/webapp,${project.build.directory}/${project.build.finalName}</resources> -->
<resourcesAsCSV>src/main/webapp</resourcesAsCSV>
</baseResource>
</webAppConfig>
</webApp>
</configuration>
</plugin>
</plugins>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册