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);