mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Fixed failing workflow tests.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28895 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -98,6 +98,7 @@
|
||||
<property name="environmentHelper" ref="environmentHelper" />
|
||||
<property name="transferManifestNodeFactory" ref="transferManifestNodeFactory" />
|
||||
<property name="publishingEventHelper" ref="publishingEventHelper" />
|
||||
<property name="versionService" ref="VersionService" />
|
||||
</bean>
|
||||
|
||||
<!-- Publishing Service -->
|
||||
|
@@ -64,6 +64,11 @@
|
||||
<constructor-arg value="org.alfresco.repo.policy.BehaviourFilter" />
|
||||
</bean>
|
||||
|
||||
<!-- Mock Workflow Service-->
|
||||
<bean id="VersionService" class="org.mockito.Mockito" factory-method="mock">
|
||||
<constructor-arg value="org.alfresco.service.cmr.version.VersionService" />
|
||||
</bean>
|
||||
|
||||
<bean id="dictionaryBootstrap" class="java.lang.Object" />
|
||||
|
||||
</beans>
|
||||
|
@@ -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<NodeRef, PublishingPackageEntry> entryMap = new HashMap<NodeRef, PublishingPackageEntry>();
|
||||
private final Set<NodeRef> nodesToPublish = new HashSet<NodeRef>();
|
||||
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
@@ -1781,197 +1777,127 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
||||
|
||||
private List<WorkflowTask> queryStartTasks(WorkflowTaskQuery query)
|
||||
{
|
||||
List<WorkflowTask> startTasks = Collections.emptyList();
|
||||
List<WorkflowTask> startTasks = new ArrayList<WorkflowTask>();
|
||||
|
||||
String processInstanceId = null;
|
||||
String taskId = query.getTaskId();
|
||||
if (taskId != null)
|
||||
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);
|
||||
}
|
||||
if(localTaskId.startsWith(ActivitiConstants.START_TASK_PREFIX))
|
||||
processInstanceId = localTaskId.substring(ActivitiConstants.START_TASK_PREFIX.length());
|
||||
}
|
||||
else
|
||||
{
|
||||
QName taskName = query.getTaskName();
|
||||
if(taskName != null)
|
||||
String processId = query.getProcessId();
|
||||
if(processId != null)
|
||||
{
|
||||
startTasks = getStartTasksWithName(taskName);
|
||||
// Start task for a specific process
|
||||
processInstanceId = createLocalId(processId);
|
||||
}
|
||||
}
|
||||
return filterStartTasks(startTasks, query);
|
||||
}
|
||||
|
||||
private List<WorkflowTask> getStartTasksWithName(final QName taskName)
|
||||
// Only return start-task when a process or task id is set
|
||||
if(processInstanceId != null)
|
||||
{
|
||||
List<WorkflowDefinition> definitions = getDefinitionsWithStartTaskName(taskName);
|
||||
return CollectionUtils.transformFlat(definitions, new Function<WorkflowDefinition, Collection<WorkflowTask>>()
|
||||
// Extract processInstanceId
|
||||
WorkflowTask workflowTask = getVirtualStartTaskForProcessInstance(processInstanceId);
|
||||
if(workflowTask != null)
|
||||
{
|
||||
public Collection<WorkflowTask> apply(WorkflowDefinition definition)
|
||||
boolean startTaskMatches = isStartTaskMatching(workflowTask, query);
|
||||
if(startTaskMatches)
|
||||
{
|
||||
List<String> instanceIds = getInstanceIds(definition.getId());
|
||||
return CollectionUtils.transform(instanceIds, toStartTask());
|
||||
startTasks.add(workflowTask);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private List<String> getInstanceIds(String definitionId)
|
||||
{
|
||||
String localDefId = createLocalId(definitionId);
|
||||
List<String> ids = getHistoricInstanceIds(localDefId);
|
||||
List<String> runtimeIds = getRuntimeInstanceIds(localDefId);
|
||||
ids.addAll(runtimeIds);
|
||||
return ids;
|
||||
}
|
||||
|
||||
private List<String> getRuntimeInstanceIds(String efinitionId)
|
||||
{
|
||||
List<ProcessInstance> runtimeInstances = getRuntimeProcessInstances(efinitionId);
|
||||
return CollectionUtils.transform(runtimeInstances, new Function<ProcessInstance, String>()
|
||||
{
|
||||
public String apply(ProcessInstance instance)
|
||||
{
|
||||
return createGlobalId(instance.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private List<String> getHistoricInstanceIds(String efinitionId)
|
||||
{
|
||||
List<HistoricProcessInstance> historicInstances = getHistoricProcessInstances(efinitionId);
|
||||
return CollectionUtils.transform(historicInstances, new Function<HistoricProcessInstance, String>()
|
||||
{
|
||||
public String apply(HistoricProcessInstance instance)
|
||||
{
|
||||
return createGlobalId(instance.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Function<String, WorkflowTask> toStartTask()
|
||||
{
|
||||
return new Function<String, WorkflowTask>()
|
||||
{
|
||||
public WorkflowTask apply(String id)
|
||||
{
|
||||
return getStartTask(id);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private List<WorkflowDefinition> getDefinitionsWithStartTaskName(final QName name)
|
||||
{
|
||||
List<WorkflowDefinition> definitions = getAllDefinitions();
|
||||
return CollectionUtils.filter(definitions, new Filter<WorkflowDefinition>()
|
||||
{
|
||||
public Boolean apply(WorkflowDefinition definition)
|
||||
{
|
||||
QName startTaskName = definition.getStartTaskDefinition().getMetadata().getName();
|
||||
return startTaskName.equals(name);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private List<WorkflowTask> filterStartTasks(List<WorkflowTask> tasks, final WorkflowTaskQuery query)
|
||||
{
|
||||
return CollectionUtils.filter(tasks, new Filter<WorkflowTask>()
|
||||
{
|
||||
public Boolean apply(WorkflowTask workflowTask)
|
||||
{
|
||||
return isMatchingStartTask(workflowTask, query);
|
||||
return startTasks;
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
private boolean isStartTaskMatching(WorkflowTask workflowTask,
|
||||
WorkflowTaskQuery query) {
|
||||
|
||||
if(query.isActive() != null)
|
||||
{
|
||||
if(query.isActive() && !workflowTask.getPath().isActive())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
private Boolean isMatchingStartTask(WorkflowTask workflowTask, WorkflowTaskQuery query)
|
||||
{
|
||||
String queryProcessId = query.getProcessId();
|
||||
if (queryProcessId != null)
|
||||
{
|
||||
if (!queryProcessId.equals(workflowTask.getPath().getInstance().getId()))
|
||||
if(!query.isActive() && workflowTask.getPath().isActive())
|
||||
{
|
||||
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)))
|
||||
if(query.getActorId() != null && !query.getActorId().equals(workflowTask.getProperties().get(ContentModel.PROP_OWNER)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (query.getProcessCustomProps() != null)
|
||||
if(query.getProcessCustomProps() != null)
|
||||
{
|
||||
// Get properties for process instance, based on path of start task,
|
||||
// which is process-instance
|
||||
// Get properties for process instance, based on path of start task, which is process-instance
|
||||
Map<QName, Serializable> props = getPathProperties(workflowTask.getPath().getId());
|
||||
if (!checkPropertiesPresent(query.getProcessCustomProps(), props))
|
||||
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.
|
||||
QName queryProcessName = query.getProcessName();
|
||||
if (queryProcessName != null)
|
||||
if(query.getProcessName() != null)
|
||||
{
|
||||
String processName = factory.mapQNameToName(queryProcessName);
|
||||
if (!processName.equals(workflowTask.getPath().getInstance().getDefinition().getName()))
|
||||
String processName = factory.mapQNameToName(query.getProcessName());
|
||||
if(!processName.equals(workflowTask.getPath().getInstance().getDefinition().getName()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (query.getWorkflowDefinitionName() != null)
|
||||
if(query.getWorkflowDefinitionName() != null)
|
||||
{
|
||||
if (!query.getWorkflowDefinitionName().equals(
|
||||
workflowTask.getPath().getInstance().getDefinition().getName()))
|
||||
if(!query.getWorkflowDefinitionName().equals(workflowTask.getPath().getInstance().getDefinition().getName()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (query.getTaskCustomProps() != null)
|
||||
if(query.getTaskCustomProps() != null)
|
||||
{
|
||||
if (!checkPropertiesPresent(query.getTaskCustomProps(), workflowTask.getProperties()))
|
||||
if(!checkPropertiesPresent(query.getTaskCustomProps(), workflowTask.getProperties()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (query.getTaskId() != null)
|
||||
if(query.getTaskId() != null)
|
||||
{
|
||||
if (!query.getTaskId().equals(workflowTask.getId()))
|
||||
if(!query.getTaskId().equals(workflowTask.getId()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (query.getTaskName() != null)
|
||||
if(query.getTaskName() != null)
|
||||
{
|
||||
if (!query.getTaskName().equals(workflowTask.getDefinition().getMetadata().getName()))
|
||||
if(!query.getTaskName().equals(workflowTask.getDefinition().getMetadata().getName()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (query.getTaskState() != null)
|
||||
if(query.getTaskState() != null)
|
||||
{
|
||||
if (!query.getTaskState().equals(workflowTask.getState()))
|
||||
if(!query.getTaskState().equals(workflowTask.getState()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -2112,34 +2038,24 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
||||
LinkedList<WorkflowInstance> results = new LinkedList<WorkflowInstance>();
|
||||
if(Boolean.FALSE.equals(isActive)==false)
|
||||
{
|
||||
List<ProcessInstance> activeInstances = getRuntimeProcessInstances(processDefId);
|
||||
List<ProcessInstance> activeInstances = runtimeService.createProcessInstanceQuery()
|
||||
.processDefinitionId(processDefId)
|
||||
.list();
|
||||
List<WorkflowInstance> activeResults = typeConverter.convert(activeInstances);
|
||||
results.addAll(activeResults);
|
||||
}
|
||||
if(Boolean.TRUE.equals(isActive)==false)
|
||||
{
|
||||
List<HistoricProcessInstance> completedInstances = getHistoricProcessInstances(processDefId);
|
||||
List<HistoricProcessInstance> completedInstances = historyService.createHistoricProcessInstanceQuery()
|
||||
.processDefinitionId(processDefId)
|
||||
.finished()
|
||||
.list();
|
||||
List<WorkflowInstance> completedResults = typeConverter.convert(completedInstances);
|
||||
results.addAll(completedResults);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
private List<HistoricProcessInstance> getHistoricProcessInstances(String processDefId)
|
||||
{
|
||||
return historyService.createHistoricProcessInstanceQuery()
|
||||
.processDefinitionId(processDefId)
|
||||
.finished()
|
||||
.list();
|
||||
}
|
||||
|
||||
private List<ProcessInstance> getRuntimeProcessInstances(String processDefId)
|
||||
{
|
||||
return runtimeService.createProcessInstanceQuery()
|
||||
.processDefinitionId(processDefId)
|
||||
.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param nodeConverter the nodeConverter to set
|
||||
*/
|
||||
|
@@ -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<String> expectedTasks = Arrays.asList(startTask.getId());
|
||||
|
||||
List<String> 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<String> withoutStartTask = Arrays.asList(theTask.getId());
|
||||
List<String> 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);
|
||||
|
Reference in New Issue
Block a user