Added method to find tasks based on workflow definition name (String instead of QName as in setProcessName)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28578 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Frederik Heremans
2011-06-24 15:22:20 +00:00
parent 855a129c80
commit 28161f0e2b
7 changed files with 99 additions and 4 deletions

View File

@@ -961,12 +961,22 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
{
WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(state);
// Test depricated method, using QName
taskQuery.setProcessName(getAdhocProcessName());
checkTasksFoundUsingQuery(expectedTaskIds, taskQuery);
taskQuery = createWorkflowTaskQuery(state);
taskQuery.setProcessName(QName.createQName("dummyProcessName"));
checkNoTasksFoundUsingQuery(taskQuery);
// Test method, using String
taskQuery.setWorkflowDefinitionName(getAdhocProcessName().toPrefixString());
checkTasksFoundUsingQuery(expectedTaskIds, taskQuery);
taskQuery = createWorkflowTaskQuery(state);
taskQuery.setWorkflowDefinitionName("dummyProcessName");
checkNoTasksFoundUsingQuery(taskQuery);
}
protected void checkProcessPropsQuery(List<String> expectedTaskIds, WorkflowTaskState state)

View File

@@ -24,7 +24,6 @@ import org.alfresco.repo.tenant.TenantService;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.workflow.WorkflowException;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QNameCache;
/**
* @since 3.4.e

View File

@@ -28,7 +28,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.extensions.surf.util.I18NUtil;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.admin.BaseInterpreter;
import org.alfresco.repo.avm.AVMNodeConverter;
@@ -69,6 +68,7 @@ import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.GUID;
import org.springframework.context.ApplicationEvent;
import org.springframework.core.io.ClassPathResource;
import org.springframework.extensions.surf.util.I18NUtil;
/**
* An interactive console for Workflows.
@@ -665,6 +665,10 @@ public class WorkflowInterpreter extends BaseInterpreter
{
query.setProcessName(QName.createQName(predicate[1], namespaceService));
}
else if (predicate[0].equals("workflowDefinitionName"))
{
query.setWorkflowDefinitionName(predicate[1]);
}
else if (predicate[0].equals("processActive"))
{
Boolean active = Boolean.valueOf(predicate[1]);

View File

@@ -1467,6 +1467,12 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
String processName = getProcessNameMTSafe(query.getProcessName());
taskQuery.processDefinitionKey(processName);
}
if (query.getWorkflowDefinitionName() != null)
{
String processName = getWorkflowDefinitionNameMTSafe(query.getWorkflowDefinitionName());
taskQuery.processDefinitionKey(processName);
}
if (query.getActorId() != null)
{
@@ -1534,6 +1540,21 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
}
return processName;
}
protected String getWorkflowDefinitionNameMTSafe(String name)
{
String processName = null;
if (tenantService.isEnabled())
{
String baseName = tenantService.getBaseName(name, true);
processName = tenantService.getName(baseName);
}
else
{
processName = name;
}
return processName;
}
private void orderQuery(TaskQuery taskQuery, OrderBy[] orderBy) {
for (WorkflowTaskQuery.OrderBy orderByPart : orderBy)
@@ -1676,6 +1697,12 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
String processName = getProcessNameMTSafe(query.getProcessName());
historicQuery.processDefinitionKey(processName);
}
if (query.getWorkflowDefinitionName() != null)
{
String processName = getWorkflowDefinitionNameMTSafe(query.getWorkflowDefinitionName());
historicQuery.processDefinitionKey(processName);
}
if (query.getTaskCustomProps() != null)
{
@@ -1826,6 +1853,7 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
}
}
// Query by process name deprecated, but still implemented.
if(query.getProcessName() != null)
{
String processName = factory.mapQNameToName(query.getProcessName());
@@ -1834,6 +1862,14 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
return false;
}
}
if(query.getWorkflowDefinitionName() != null)
{
if(!query.getWorkflowDefinitionName().equals(workflowTask.getPath().getInstance().getDefinition().getName()))
{
return false;
}
}
if(query.getTaskCustomProps() != null)
{

View File

@@ -29,8 +29,8 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import java.util.Set;
import java.util.zip.ZipInputStream;
import org.alfresco.model.ContentModel;
@@ -1601,6 +1601,11 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine
query.setProcessName(tenantService.getName(query.getProcessName()));
}
if ((query.getWorkflowDefinitionName() != null) && (tenantService.isEnabled()))
{
query.setWorkflowDefinitionName(tenantService.getName(query.getWorkflowDefinitionName()));
}
Criteria criteria = createTaskQueryCriteria(session, query);
List<TaskInstance> tasks = criteria.list();
return getWorkflowTasks(tasks);
@@ -1915,6 +1920,25 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine
processDef.add(Restrictions.eq("name", processName));
}
// Process definition name
if (query.getWorkflowDefinitionName() != null)
{
process = (process == null) ? root.createCriteria("processInstance") : process;
Criteria processDef = process.createCriteria("processDefinition");
String processName = null;
if (tenantService.isEnabled())
{
String baseProcessName = tenantService.getBaseName(query.getWorkflowDefinitionName(), true);
processName = tenantService.getName(baseProcessName);
}
else
{
processName = query.getWorkflowDefinitionName();
}
processDef.add(Restrictions.eq("name", processName));
}
return process;
}