From 04639c79309381f0677a7ccdcffe86908ed47600 Mon Sep 17 00:00:00 2001 From: N Smith Date: Fri, 8 Jul 2011 15:18:15 +0000 Subject: [PATCH] Fixed failing workflow tests. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28895 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/web-publishing-context.xml | 1 + .../alfresco/test-web-publishing-context.xml | 5 + .../MutablePublishingPackageImpl.java | 21 +- .../publishing/PublishingObjectFactory.java | 11 + .../PublishingPackageEntryImpl.java | 8 +- .../PublishingPackageSerializerTest.java | 4 +- .../repo/publishing/PublishingQueueImpl.java | 11 +- .../StandardPublishingPackageSerializer.java | 4 +- .../activiti/ActivitiWorkflowEngine.java | 348 +++++++----------- ...ctivitiWorkflowServiceIntegrationTest.java | 21 +- 10 files changed, 195 insertions(+), 239 deletions(-) diff --git a/config/alfresco/web-publishing-context.xml b/config/alfresco/web-publishing-context.xml index 6f0ffa46e8..2fb0134cb5 100644 --- a/config/alfresco/web-publishing-context.xml +++ b/config/alfresco/web-publishing-context.xml @@ -98,6 +98,7 @@ + diff --git a/config/test/alfresco/test-web-publishing-context.xml b/config/test/alfresco/test-web-publishing-context.xml index 6393f2065e..bf6af3562a 100644 --- a/config/test/alfresco/test-web-publishing-context.xml +++ b/config/test/alfresco/test-web-publishing-context.xml @@ -64,6 +64,11 @@ + + + + + diff --git a/source/java/org/alfresco/repo/publishing/MutablePublishingPackageImpl.java b/source/java/org/alfresco/repo/publishing/MutablePublishingPackageImpl.java index cc0b560d96..f6cdeabb94 100644 --- a/source/java/org/alfresco/repo/publishing/MutablePublishingPackageImpl.java +++ b/source/java/org/alfresco/repo/publishing/MutablePublishingPackageImpl.java @@ -26,12 +26,13 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import org.alfresco.repo.transfer.manifest.TransferManifestNode; import org.alfresco.repo.transfer.manifest.TransferManifestNodeFactory; import org.alfresco.repo.transfer.manifest.TransferManifestNormalNode; import org.alfresco.service.cmr.publishing.MutablePublishingPackage; import org.alfresco.service.cmr.publishing.PublishingPackageEntry; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.version.Version; +import org.alfresco.service.cmr.version.VersionService; /** * @author Brian @@ -40,6 +41,7 @@ import org.alfresco.service.cmr.repository.NodeRef; */ public class MutablePublishingPackageImpl implements MutablePublishingPackage { + private final VersionService versionService; private final TransferManifestNodeFactory transferManifestNodeFactory; private final Map entryMap = new HashMap(); private final Set nodesToPublish = new HashSet(); @@ -48,9 +50,11 @@ public class MutablePublishingPackageImpl implements MutablePublishingPackage /** * @param transferManifestNodeFactory */ - public MutablePublishingPackageImpl(TransferManifestNodeFactory transferManifestNodeFactory) + public MutablePublishingPackageImpl(TransferManifestNodeFactory transferManifestNodeFactory, + VersionService versionService) { this.transferManifestNodeFactory = transferManifestNodeFactory; + this.versionService = versionService; } /** @@ -68,10 +72,17 @@ public class MutablePublishingPackageImpl implements MutablePublishingPackage { for (NodeRef nodeRef : nodesToAdd) { - TransferManifestNode payload = transferManifestNodeFactory.createTransferManifestNode(nodeRef, null); + Version version = versionService.createVersion(nodeRef, null); + String versionLabel = null; + if(version != null) + { + versionLabel = version.getVersionLabel(); + } + TransferManifestNormalNode payload = (TransferManifestNormalNode) transferManifestNodeFactory.createTransferManifestNode(nodeRef, null); if (TransferManifestNormalNode.class.isAssignableFrom(payload.getClass())) { - entryMap.put(nodeRef, new PublishingPackageEntryImpl(true, nodeRef, (TransferManifestNormalNode) payload)); + PublishingPackageEntryImpl publishingPackage = new PublishingPackageEntryImpl(true, nodeRef, payload, versionLabel); + entryMap.put(nodeRef, publishingPackage); } } nodesToPublish.addAll(nodesToAdd); @@ -92,7 +103,7 @@ public class MutablePublishingPackageImpl implements MutablePublishingPackage { for (NodeRef nodeRef : nodesToRemove) { - entryMap.put(nodeRef, new PublishingPackageEntryImpl(false, nodeRef, null)); + entryMap.put(nodeRef, new PublishingPackageEntryImpl(false, nodeRef, null, null)); } nodesToUnpublish.addAll(nodesToRemove); } diff --git a/source/java/org/alfresco/repo/publishing/PublishingObjectFactory.java b/source/java/org/alfresco/repo/publishing/PublishingObjectFactory.java index f9f2c70864..00931fc00f 100644 --- a/source/java/org/alfresco/repo/publishing/PublishingObjectFactory.java +++ b/source/java/org/alfresco/repo/publishing/PublishingObjectFactory.java @@ -27,6 +27,7 @@ import org.alfresco.repo.transfer.manifest.TransferManifestNodeFactory; import org.alfresco.service.cmr.publishing.Environment; import org.alfresco.service.cmr.publishing.PublishingQueue; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.version.VersionService; /** * @author Brian @@ -39,6 +40,7 @@ public class PublishingObjectFactory implements EnvironmentFactory, PublishingQu private EnvironmentHelper environmentHelper; private TransferManifestNodeFactory transferManifestNodeFactory; private PublishingEventHelper publishingEventHelper; + private VersionService versionService; /** * @param environmentHelper the environmentHelper to set @@ -64,6 +66,14 @@ public class PublishingObjectFactory implements EnvironmentFactory, PublishingQu this.publishingEventHelper = publishingEventHelper; } + /** + * @param versionService the versionService to set + */ + public void setVersionService(VersionService versionService) + { + this.versionService = versionService; + } + /* (non-Javadoc) * @see org.alfresco.repo.publishing.EnvironmentFactory#createEnvironmentObject(java.lang.String, java.lang.String) */ @@ -124,6 +134,7 @@ public class PublishingObjectFactory implements EnvironmentFactory, PublishingQu publishingQueue.setNodeRef(queueNode); publishingQueue.setTransferManifestNodeFactory(transferManifestNodeFactory); publishingQueue.setPublishingEventHelper(publishingEventHelper); + publishingQueue.setVersionService(versionService); return publishingQueue; } diff --git a/source/java/org/alfresco/repo/publishing/PublishingPackageEntryImpl.java b/source/java/org/alfresco/repo/publishing/PublishingPackageEntryImpl.java index 017b397231..17cb585b1b 100644 --- a/source/java/org/alfresco/repo/publishing/PublishingPackageEntryImpl.java +++ b/source/java/org/alfresco/repo/publishing/PublishingPackageEntryImpl.java @@ -37,12 +37,16 @@ class PublishingPackageEntryImpl implements PublishingPackageEntry private final boolean publish; private final NodeRef nodeRef; private final TransferManifestNormalNode payload; + private final String version; - public PublishingPackageEntryImpl(boolean publish, NodeRef nodeRef, TransferManifestNormalNode payload) + public PublishingPackageEntryImpl(boolean publish, + NodeRef nodeRef, TransferManifestNormalNode payload, + String version) { this.publish = publish; this.nodeRef = nodeRef; this.payload = payload; + this.version = version; } /** @@ -75,6 +79,6 @@ class PublishingPackageEntryImpl implements PublishingPackageEntry public NodeSnapshot getSnapshot() { //TODO Add versioning information. - return new NodeSnapshotTransferImpl(payload, null); + return new NodeSnapshotTransferImpl(payload, version); } } diff --git a/source/java/org/alfresco/repo/publishing/PublishingPackageSerializerTest.java b/source/java/org/alfresco/repo/publishing/PublishingPackageSerializerTest.java index f544cb8afa..b4fb6dcea5 100644 --- a/source/java/org/alfresco/repo/publishing/PublishingPackageSerializerTest.java +++ b/source/java/org/alfresco/repo/publishing/PublishingPackageSerializerTest.java @@ -48,6 +48,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.Path; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.transfer.TransferDefinition; +import org.alfresco.service.cmr.version.VersionService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.util.GUID; @@ -128,7 +129,8 @@ public class PublishingPackageSerializerTest extends AbstractPublishingIntegrati public void testSerializer() throws Exception { TransferManifestNodeFactory mockTMNFactory = mock(TransferManifestNodeFactory.class); - MutablePublishingPackageImpl packageImpl = new MutablePublishingPackageImpl(mockTMNFactory); + VersionService mockVersionService = mock(VersionService.class); + MutablePublishingPackageImpl packageImpl = new MutablePublishingPackageImpl(mockTMNFactory, mockVersionService); when(mockTMNFactory.createTransferManifestNode(any(NodeRef.class), any(TransferDefinition.class))) .thenReturn(normalNode1); diff --git a/source/java/org/alfresco/repo/publishing/PublishingQueueImpl.java b/source/java/org/alfresco/repo/publishing/PublishingQueueImpl.java index fc072dd337..5f12cb6587 100644 --- a/source/java/org/alfresco/repo/publishing/PublishingQueueImpl.java +++ b/source/java/org/alfresco/repo/publishing/PublishingQueueImpl.java @@ -30,6 +30,7 @@ import org.alfresco.service.cmr.publishing.PublishingPackage; import org.alfresco.service.cmr.publishing.PublishingQueue; import org.alfresco.service.cmr.publishing.StatusUpdate; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.version.VersionService; /** * @author Brian @@ -41,6 +42,7 @@ public class PublishingQueueImpl implements PublishingQueue private final static String MSG_FAILED_TO_CREATE_PUBLISHING_EVENT = "publishing-create-event-failed"; private NodeRef nodeRef; private TransferManifestNodeFactory transferManifestNodeFactory; + private VersionService versionService; private PublishingEventHelper publishingEventHelper; /** @@ -48,7 +50,7 @@ public class PublishingQueueImpl implements PublishingQueue */ public MutablePublishingPackage createPublishingPackage() { - return new MutablePublishingPackageImpl(transferManifestNodeFactory); + return new MutablePublishingPackageImpl(transferManifestNodeFactory, versionService); } /** @@ -110,4 +112,11 @@ public class PublishingQueueImpl implements PublishingQueue this.publishingEventHelper = publishingEventHelper; } + /** + * @param versionService the versionService to set + */ + public void setVersionService(VersionService versionService) + { + this.versionService = versionService; + } } diff --git a/source/java/org/alfresco/repo/publishing/StandardPublishingPackageSerializer.java b/source/java/org/alfresco/repo/publishing/StandardPublishingPackageSerializer.java index 231d96d0c9..e53ab6a12f 100644 --- a/source/java/org/alfresco/repo/publishing/StandardPublishingPackageSerializer.java +++ b/source/java/org/alfresco/repo/publishing/StandardPublishingPackageSerializer.java @@ -149,7 +149,7 @@ public class StandardPublishingPackageSerializer implements PublishingPackageSer @Override public void processTransferManifestNode(TransferManifestNormalNode node) { - entries.put(node.getNodeRef(), new PublishingPackageEntryImpl(true, node.getNodeRef(), node)); + entries.put(node.getNodeRef(), new PublishingPackageEntryImpl(true, node.getNodeRef(), node, null)); } /* (non-Javadoc) @@ -158,7 +158,7 @@ public class StandardPublishingPackageSerializer implements PublishingPackageSer @Override public void processTransferManifestNode(TransferManifestDeletedNode node) { - entries.put(node.getNodeRef(), new PublishingPackageEntryImpl(false, node.getNodeRef(), null)); + entries.put(node.getNodeRef(), new PublishingPackageEntryImpl(false, node.getNodeRef(), null, null)); } /* (non-Javadoc) diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java index 8e9115e641..514d56a26d 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java @@ -24,7 +24,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -99,9 +98,6 @@ import org.alfresco.service.cmr.workflow.WorkflowTimer; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.util.GUID; -import org.alfresco.util.collections.CollectionUtils; -import org.alfresco.util.collections.Filter; -import org.alfresco.util.collections.Function; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.xerces.parsers.DOMParser; @@ -1779,208 +1775,138 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine } } - private List queryStartTasks(WorkflowTaskQuery query) - { - List startTasks = Collections.emptyList(); - String taskId = query.getTaskId(); - if (taskId != null) - { - String localTaskId = createLocalId(taskId); - if (localTaskId.startsWith(ActivitiConstants.START_TASK_PREFIX)) - { - String processId = localTaskId.substring(ActivitiConstants.START_TASK_PREFIX.length()); - WorkflowTask startTask = getVirtualStartTaskForProcessInstance(processId); - startTasks = Arrays.asList(startTask); - } - } - else - { - QName taskName = query.getTaskName(); - if(taskName != null) - { - startTasks = getStartTasksWithName(taskName); - } - } - return filterStartTasks(startTasks, query); - } + private List queryStartTasks(WorkflowTaskQuery query) + { + List startTasks = new ArrayList(); - private List getStartTasksWithName(final QName taskName) - { - List definitions = getDefinitionsWithStartTaskName(taskName); - return CollectionUtils.transformFlat(definitions, new Function>() - { - public Collection apply(WorkflowDefinition definition) - { - List instanceIds = getInstanceIds(definition.getId()); - return CollectionUtils.transform(instanceIds, toStartTask()); - } - }); - } - - private List getInstanceIds(String definitionId) - { - String localDefId = createLocalId(definitionId); - List ids = getHistoricInstanceIds(localDefId); - List runtimeIds = getRuntimeInstanceIds(localDefId); - ids.addAll(runtimeIds); - return ids; - } - - private List getRuntimeInstanceIds(String efinitionId) - { - List runtimeInstances = getRuntimeProcessInstances(efinitionId); - return CollectionUtils.transform(runtimeInstances, new Function() - { - public String apply(ProcessInstance instance) - { - return createGlobalId(instance.getId()); - } - }); - } - - private List getHistoricInstanceIds(String efinitionId) - { - List historicInstances = getHistoricProcessInstances(efinitionId); - return CollectionUtils.transform(historicInstances, new Function() - { - public String apply(HistoricProcessInstance instance) - { - return createGlobalId(instance.getId()); - } - }); - } - - private Function toStartTask() - { - return new Function() - { - public WorkflowTask apply(String id) - { - return getStartTask(id); - } - }; - } - - private List getDefinitionsWithStartTaskName(final QName name) - { - List definitions = getAllDefinitions(); - return CollectionUtils.filter(definitions, new Filter() - { - public Boolean apply(WorkflowDefinition definition) - { - QName startTaskName = definition.getStartTaskDefinition().getMetadata().getName(); - return startTaskName.equals(name); - } - }); - } + String processInstanceId = null; + String taskId = query.getTaskId(); + if(taskId != null ) + { + String localTaskId = createLocalId(taskId); + if(localTaskId.startsWith(ActivitiConstants.START_TASK_PREFIX)) + processInstanceId = localTaskId.substring(ActivitiConstants.START_TASK_PREFIX.length()); + } + else + { + String processId = query.getProcessId(); + if(processId != null) + { + // Start task for a specific process + processInstanceId = createLocalId(processId); + } + } + + // Only return start-task when a process or task id is set + if(processInstanceId != null) + { + // Extract processInstanceId + WorkflowTask workflowTask = getVirtualStartTaskForProcessInstance(processInstanceId); + if(workflowTask != null) + { + boolean startTaskMatches = isStartTaskMatching(workflowTask, query); + if(startTaskMatches) + { + startTasks.add(workflowTask); + } + } + } + return startTasks; + } + - private List filterStartTasks(List tasks, final WorkflowTaskQuery query) - { - return CollectionUtils.filter(tasks, new Filter() + private boolean isStartTaskMatching(WorkflowTask workflowTask, + WorkflowTaskQuery query) { + + if(query.isActive() != null) + { + if(query.isActive() && !workflowTask.getPath().isActive()) + { + return false; + } + if(!query.isActive() && workflowTask.getPath().isActive()) + { + return false; + } + } + + if(query.getActorId() != null && !query.getActorId().equals(workflowTask.getProperties().get(ContentModel.PROP_OWNER))) + { + return false; + } + + if(query.getProcessCustomProps() != null) + { + // Get properties for process instance, based on path of start task, which is process-instance + Map props = getPathProperties(workflowTask.getPath().getId()); + if(!checkPropertiesPresent(query.getProcessCustomProps(), props)) + { + return false; + } + } + + if(query.getProcessId() != null) + { + if(!query.getProcessId().equals(workflowTask.getPath().getInstance().getId())) + { + return false; + } + } + + // Query by process name deprecated, but still implemented. + if(query.getProcessName() != null) + { + String processName = factory.mapQNameToName(query.getProcessName()); + if(!processName.equals(workflowTask.getPath().getInstance().getDefinition().getName())) + { + return false; + } + } + + if(query.getWorkflowDefinitionName() != null) { - public Boolean apply(WorkflowTask workflowTask) + if(!query.getWorkflowDefinitionName().equals(workflowTask.getPath().getInstance().getDefinition().getName())) { - return isMatchingStartTask(workflowTask, query); + return false; } - - - }); - + } + + if(query.getTaskCustomProps() != null) + { + if(!checkPropertiesPresent(query.getTaskCustomProps(), workflowTask.getProperties())) + { + return false; + } + } + + if(query.getTaskId() != null) + { + if(!query.getTaskId().equals(workflowTask.getId())) + { + return false; + } + } + + if(query.getTaskName() != null) + { + if(!query.getTaskName().equals(workflowTask.getDefinition().getMetadata().getName())) + { + return false; + } + } + + if(query.getTaskState() != null) + { + if(!query.getTaskState().equals(workflowTask.getState())) + { + return false; + } + } + + // If we fall through, start task matches the query + return true; } - private Boolean isMatchingStartTask(WorkflowTask workflowTask, WorkflowTaskQuery query) - { - String queryProcessId = query.getProcessId(); - if (queryProcessId != null) - { - if (!queryProcessId.equals(workflowTask.getPath().getInstance().getId())) - { - return false; - } - } - - Boolean queryIsActive = query.isActive(); - if (queryIsActive != null) - { - if (queryIsActive != workflowTask.getPath().isActive()) - { - return false; - } - } - - String queryActorId = query.getActorId(); - if (queryActorId != null && !queryActorId.equals(workflowTask.getProperties().get(ContentModel.PROP_OWNER))) - { - return false; - } - - if (query.getProcessCustomProps() != null) - { - // Get properties for process instance, based on path of start task, - // which is process-instance - Map props = getPathProperties(workflowTask.getPath().getId()); - if (!checkPropertiesPresent(query.getProcessCustomProps(), props)) - { - return false; - } - } - - // Query by process name deprecated, but still implemented. - QName queryProcessName = query.getProcessName(); - if (queryProcessName != null) - { - String processName = factory.mapQNameToName(queryProcessName); - if (!processName.equals(workflowTask.getPath().getInstance().getDefinition().getName())) - { - return false; - } - } - - if (query.getWorkflowDefinitionName() != null) - { - if (!query.getWorkflowDefinitionName().equals( - workflowTask.getPath().getInstance().getDefinition().getName())) - { - return false; - } - } - - if (query.getTaskCustomProps() != null) - { - if (!checkPropertiesPresent(query.getTaskCustomProps(), workflowTask.getProperties())) - { - return false; - } - } - - if (query.getTaskId() != null) - { - if (!query.getTaskId().equals(workflowTask.getId())) - { - return false; - } - } - - if (query.getTaskName() != null) - { - if (!query.getTaskName().equals(workflowTask.getDefinition().getMetadata().getName())) - { - return false; - } - } - - if (query.getTaskState() != null) - { - if (!query.getTaskState().equals(workflowTask.getState())) - { - return false; - } - } - - // If we fall through, start task matches the query - return true; - } - private boolean checkPropertiesPresent(Map expectedProperties, Map props) { for(Map.Entry entry : expectedProperties.entrySet()) @@ -2112,34 +2038,24 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine LinkedList results = new LinkedList(); if(Boolean.FALSE.equals(isActive)==false) { - List activeInstances = getRuntimeProcessInstances(processDefId); + List activeInstances = runtimeService.createProcessInstanceQuery() + .processDefinitionId(processDefId) + .list(); List activeResults = typeConverter.convert(activeInstances); results.addAll(activeResults); } if(Boolean.TRUE.equals(isActive)==false) { - List completedInstances = getHistoricProcessInstances(processDefId); + List completedInstances = historyService.createHistoricProcessInstanceQuery() + .processDefinitionId(processDefId) + .finished() + .list(); List completedResults = typeConverter.convert(completedInstances); results.addAll(completedResults); } return results; } - private List getHistoricProcessInstances(String processDefId) - { - return historyService.createHistoricProcessInstanceQuery() - .processDefinitionId(processDefId) - .finished() - .list(); - } - - private List getRuntimeProcessInstances(String processDefId) - { - return runtimeService.createProcessInstanceQuery() - .processDefinitionId(processDefId) - .list(); - } - /** * @param nodeConverter the nodeConverter to set */ diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowServiceIntegrationTest.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowServiceIntegrationTest.java index a5dfc806de..dcdf4512f5 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowServiceIntegrationTest.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowServiceIntegrationTest.java @@ -21,7 +21,6 @@ package org.alfresco.repo.workflow.activiti; import java.io.Serializable; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -86,27 +85,27 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ @Override protected void checkTaskQueryStartTaskCompleted(String workflowInstanceId, WorkflowTask startTask) { - // In activiti, start-tasks only show up when the taskId or task name is passed in. + // In activiti, start-tasks only show up when the taskId or workflowInstanceId is passed in. List expectedTasks = Arrays.asList(startTask.getId()); - List noTaskIds = Collections.emptyList(); - checkProcessIdQuery(workflowInstanceId, noTaskIds, WorkflowTaskState.COMPLETED); + checkProcessIdQuery(workflowInstanceId, expectedTasks, WorkflowTaskState.COMPLETED); checkTaskIdQuery(startTask.getId(), WorkflowTaskState.COMPLETED); // Check additional filtering, when workflowInstanceId is passed QName startTaskName = QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "submitAdhocTask"); checkTaskNameQuery(startTaskName, expectedTasks, WorkflowTaskState.COMPLETED, workflowInstanceId); - checkActorIdQuery(USER1, noTaskIds, WorkflowTaskState.COMPLETED, workflowInstanceId); - checkIsActiveQuery(noTaskIds, WorkflowTaskState.COMPLETED, workflowInstanceId); - checkTaskPropsQuery(noTaskIds, WorkflowTaskState.COMPLETED, workflowInstanceId); + checkActorIdQuery(USER1, expectedTasks, WorkflowTaskState.COMPLETED, workflowInstanceId); + checkIsActiveQuery(expectedTasks, WorkflowTaskState.COMPLETED, workflowInstanceId); + checkTaskPropsQuery(expectedTasks, WorkflowTaskState.COMPLETED, workflowInstanceId); } @Override protected void checkTaskQueryTaskCompleted(String workflowInstanceId, WorkflowTask theTask, WorkflowTask startTask) { List withoutStartTask = Arrays.asList(theTask.getId()); + List bothTasks= Arrays.asList(theTask.getId(), startTask.getId()); - checkProcessIdQuery(workflowInstanceId, withoutStartTask, WorkflowTaskState.COMPLETED); + checkProcessIdQuery(workflowInstanceId, bothTasks, WorkflowTaskState.COMPLETED); // Adhoc task should only be returned QName taskName = QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "adhocTask"); @@ -115,9 +114,7 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ // Completed adhocTask is assigned to USER2 checkActorIdQuery(USER2, withoutStartTask, WorkflowTaskState.COMPLETED, null); - // Workflow is still active, but in activiti, active start-task is not returned when - // no process-instance ID is provided - checkIsActiveQuery(withoutStartTask, WorkflowTaskState.COMPLETED, workflowInstanceId); + checkIsActiveQuery(bothTasks, WorkflowTaskState.COMPLETED, workflowInstanceId); // Task has custom property set checkTaskPropsQuery(withoutStartTask, WorkflowTaskState.COMPLETED, null); @@ -136,7 +133,7 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ assertNotNull(tasks); // Activiti doesn't return start-task when no process/task id is set in query, so only 2 tasks will be returned - assertEquals(2, tasks.size()); + assertEquals(3, tasks.size()); taskQuery = createWorkflowTaskQuery(WorkflowTaskState.COMPLETED); taskQuery.setActive(true);