mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-8140 Created unit test in AbstractWorkflowServiceIntegrationTest to test the number of results returned by queryTasks() can be limited. Implemented this functionality for ActivitiWorkflowEngine.queryTasks().
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28357 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -73,6 +73,7 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
|||||||
protected final static String USER3 = "WFUser3" + GUID.generate();
|
protected final static String USER3 = "WFUser3" + GUID.generate();
|
||||||
protected final static String GROUP = "WFGroup" + GUID.generate();
|
protected final static String GROUP = "WFGroup" + GUID.generate();
|
||||||
protected final static String SUB_GROUP = "WFSubGroup" + GUID.generate();
|
protected final static String SUB_GROUP = "WFSubGroup" + GUID.generate();
|
||||||
|
protected final static QName customStringProp = QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "customStringProp");
|
||||||
|
|
||||||
protected WorkflowService workflowService;
|
protected WorkflowService workflowService;
|
||||||
protected AuthenticationComponent authenticationComponent;
|
protected AuthenticationComponent authenticationComponent;
|
||||||
@@ -576,26 +577,7 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
|||||||
WorkflowDefinition workflowDef = deployDefinition(getAdhocDefinitionPath());
|
WorkflowDefinition workflowDef = deployDefinition(getAdhocDefinitionPath());
|
||||||
assertNotNull(workflowDef);
|
assertNotNull(workflowDef);
|
||||||
|
|
||||||
// Create params
|
String workflowInstanceId = startAdhocWorkflow(workflowDef, USER2);
|
||||||
Map<QName, Serializable> params = new HashMap<QName, Serializable>();
|
|
||||||
Serializable wfPackage = workflowService.createPackage(null);
|
|
||||||
params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage);
|
|
||||||
Date dueDate = new Date();
|
|
||||||
params.put(WorkflowModel.PROP_WORKFLOW_DUE_DATE, dueDate);
|
|
||||||
params.put(WorkflowModel.PROP_WORKFLOW_PRIORITY, 1);
|
|
||||||
params.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, "Test workflow description");
|
|
||||||
QName customStringProp = QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "customStringProp");
|
|
||||||
params.put(customStringProp, "stringValue");
|
|
||||||
|
|
||||||
// Assign to USER2
|
|
||||||
NodeRef assignee = personManager.get(USER2);
|
|
||||||
params.put(WorkflowModel.ASSOC_ASSIGNEE, assignee);
|
|
||||||
|
|
||||||
// Start a workflow instance
|
|
||||||
WorkflowPath path = workflowService.startWorkflow(workflowDef.getId(), params);
|
|
||||||
assertNotNull(path);
|
|
||||||
assertTrue(path.isActive());
|
|
||||||
String workflowInstanceId = path.getInstance().getId();
|
|
||||||
|
|
||||||
// End start task to progress workflow
|
// End start task to progress workflow
|
||||||
WorkflowTask startTask = workflowService.getStartTask(workflowInstanceId);
|
WorkflowTask startTask = workflowService.getStartTask(workflowInstanceId);
|
||||||
@@ -605,30 +587,54 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
|||||||
WorkflowTask theTask = getNextTaskForWorkflow(workflowInstanceId);
|
WorkflowTask theTask = getNextTaskForWorkflow(workflowInstanceId);
|
||||||
|
|
||||||
// Set some custom properties on the task
|
// Set some custom properties on the task
|
||||||
params = new HashMap<QName, Serializable>();
|
HashMap<QName, Serializable> params = new HashMap<QName, Serializable>();
|
||||||
params.put(customStringProp, "stringValue");
|
params.put(customStringProp, "stringValue");
|
||||||
workflowService.updateTask(theTask.getId(), params, null, null);
|
workflowService.updateTask(theTask.getId(), params, null, null);
|
||||||
|
|
||||||
// Test all query features for running tasks
|
// Test all query features for running tasks
|
||||||
testTaskQueryInProgress(workflowInstanceId, theTask);
|
checkTaskQueryInProgress(workflowInstanceId, theTask);
|
||||||
|
|
||||||
// Test all query features for the start-task
|
// Test all query features for the start-task
|
||||||
testTaskQueryStartTaskCompleted(workflowInstanceId, startTask);
|
checkTaskQueryStartTaskCompleted(workflowInstanceId, startTask);
|
||||||
|
|
||||||
// Finish the task adhoc-task
|
// Finish the task adhoc-task
|
||||||
workflowService.endTask(theTask.getId(), null);
|
workflowService.endTask(theTask.getId(), null);
|
||||||
|
|
||||||
// Test all query features for completed tasks
|
// Test all query features for completed tasks
|
||||||
testTaskQueryTaskCompleted(workflowInstanceId, theTask, startTask);
|
checkTaskQueryTaskCompleted(workflowInstanceId, theTask, startTask);
|
||||||
|
|
||||||
// Finally end the workflow and check the querying isActive == false
|
// Finally end the workflow and check the querying isActive == false
|
||||||
WorkflowTask lastTask = getNextTaskForWorkflow(workflowInstanceId);
|
WorkflowTask lastTask = getNextTaskForWorkflow(workflowInstanceId);
|
||||||
workflowService.endTask(lastTask.getId(), null);
|
workflowService.endTask(lastTask.getId(), null);
|
||||||
|
|
||||||
testQueryTasksInactiveWorkflow(workflowInstanceId);
|
checkQueryTasksInactiveWorkflow(workflowInstanceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void testQueryTasksInactiveWorkflow(String workflowInstanceId) {
|
public void testQueryTaskLimit() throws Exception
|
||||||
|
{
|
||||||
|
WorkflowDefinition workflowDef = deployDefinition(getAdhocDefinitionPath());
|
||||||
|
|
||||||
|
// execute 5 instances of the adhoc workflow
|
||||||
|
for (int x = 0; x < 5; x++)
|
||||||
|
{
|
||||||
|
executeAdhocWorkflow(workflowDef);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ensure there more than 5 tasks returned.
|
||||||
|
WorkflowTaskQuery query = new WorkflowTaskQuery();
|
||||||
|
query.setActive(false);
|
||||||
|
query.setActorId(USER3);
|
||||||
|
query.setTaskState(WorkflowTaskState.COMPLETED);
|
||||||
|
List<WorkflowTask> tasks = workflowService.queryTasks(query);
|
||||||
|
assertTrue(tasks.size()>5);
|
||||||
|
|
||||||
|
// limit the results and ensure we get the correct number of results back
|
||||||
|
query.setLimit(5);
|
||||||
|
tasks = workflowService.queryTasks(query);
|
||||||
|
assertEquals(5, tasks.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void checkQueryTasksInactiveWorkflow(String workflowInstanceId) {
|
||||||
WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(WorkflowTaskState.COMPLETED);
|
WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(WorkflowTaskState.COMPLETED);
|
||||||
taskQuery.setActive(false);
|
taskQuery.setActive(false);
|
||||||
|
|
||||||
@@ -641,7 +647,7 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
|||||||
checkNoTasksFoundUsingQuery(taskQuery);
|
checkNoTasksFoundUsingQuery(taskQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void testTaskQueryTaskCompleted(String workflowInstanceId,
|
protected void checkTaskQueryTaskCompleted(String workflowInstanceId,
|
||||||
WorkflowTask theTask, WorkflowTask startTask)
|
WorkflowTask theTask, WorkflowTask startTask)
|
||||||
{
|
{
|
||||||
List<String> expectedTasks = Arrays.asList(theTask.getId(), startTask.getId());
|
List<String> expectedTasks = Arrays.asList(theTask.getId(), startTask.getId());
|
||||||
@@ -661,7 +667,7 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
|||||||
checkTaskPropsQuery(expectedTasks, WorkflowTaskState.COMPLETED, null);
|
checkTaskPropsQuery(expectedTasks, WorkflowTaskState.COMPLETED, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void testTaskQueryInProgress(String workflowInstanceId, WorkflowTask expectedTask)
|
protected void checkTaskQueryInProgress(String workflowInstanceId, WorkflowTask expectedTask)
|
||||||
{
|
{
|
||||||
List<String> expectedTasks = Arrays.asList(expectedTask.getId());
|
List<String> expectedTasks = Arrays.asList(expectedTask.getId());
|
||||||
|
|
||||||
@@ -676,7 +682,7 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
|||||||
checkProcessPropsQuery(expectedTasks, WorkflowTaskState.IN_PROGRESS);
|
checkProcessPropsQuery(expectedTasks, WorkflowTaskState.IN_PROGRESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void testTaskQueryStartTaskCompleted(String workflowInstanceId, WorkflowTask startTask) {
|
protected void checkTaskQueryStartTaskCompleted(String workflowInstanceId, WorkflowTask startTask) {
|
||||||
List<String> expectedTasks = Arrays.asList(startTask.getId());
|
List<String> expectedTasks = Arrays.asList(startTask.getId());
|
||||||
|
|
||||||
checkProcessIdQuery(workflowInstanceId, expectedTasks, WorkflowTaskState.COMPLETED);
|
checkProcessIdQuery(workflowInstanceId, expectedTasks, WorkflowTaskState.COMPLETED);
|
||||||
@@ -928,7 +934,6 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
|||||||
String optionalProcessId)
|
String optionalProcessId)
|
||||||
{
|
{
|
||||||
WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(state);
|
WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(state);
|
||||||
QName customStringProp = QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "customStringProp");
|
|
||||||
Map<QName, Object> taskProps = new HashMap<QName, Object>();
|
Map<QName, Object> taskProps = new HashMap<QName, Object>();
|
||||||
|
|
||||||
taskProps.put(customStringProp, "stringValue");
|
taskProps.put(customStringProp, "stringValue");
|
||||||
@@ -1070,6 +1075,52 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
|||||||
assertEquals(expDef.getVersion(), actualDef.getVersion());
|
assertEquals(expDef.getVersion(), actualDef.getVersion());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void executeAdhocWorkflow(WorkflowDefinition workflowDef)
|
||||||
|
{
|
||||||
|
personManager.setUser(USER3);
|
||||||
|
String workflowId = startAdhocWorkflow(workflowDef, USER3);
|
||||||
|
|
||||||
|
// End start task to progress workflow
|
||||||
|
WorkflowTask startTask = workflowService.getStartTask(workflowId);
|
||||||
|
String startTaskId = startTask.getId();
|
||||||
|
workflowService.endTask(startTaskId, null);
|
||||||
|
|
||||||
|
// finish the adhoc task
|
||||||
|
WorkflowTask adhocTask = getNextTaskForWorkflow(workflowId);
|
||||||
|
workflowService.endTask(adhocTask.getId(), null);
|
||||||
|
|
||||||
|
// finish the workflow
|
||||||
|
WorkflowTask lastTask = getNextTaskForWorkflow(workflowId);
|
||||||
|
workflowService.endTask(lastTask.getId(), null);
|
||||||
|
|
||||||
|
// ensure the workflow has completed
|
||||||
|
assertFalse(workflowService.getWorkflowById(workflowId).isActive());
|
||||||
|
}
|
||||||
|
|
||||||
|
private String startAdhocWorkflow(WorkflowDefinition workflowDef, String assigneeId)
|
||||||
|
{
|
||||||
|
// Create params
|
||||||
|
Map<QName, Serializable> params = new HashMap<QName, Serializable>();
|
||||||
|
Serializable wfPackage = workflowService.createPackage(null);
|
||||||
|
params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage);
|
||||||
|
Date dueDate = new Date();
|
||||||
|
params.put(WorkflowModel.PROP_WORKFLOW_DUE_DATE, dueDate);
|
||||||
|
params.put(WorkflowModel.PROP_WORKFLOW_PRIORITY, 1);
|
||||||
|
params.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, "Test workflow description");
|
||||||
|
|
||||||
|
params.put(customStringProp, "stringValue");
|
||||||
|
|
||||||
|
// Assign to USER2
|
||||||
|
NodeRef assignee = personManager.get(assigneeId);
|
||||||
|
params.put(WorkflowModel.ASSOC_ASSIGNEE, assignee);
|
||||||
|
|
||||||
|
// Start a workflow instance
|
||||||
|
WorkflowPath path = workflowService.startWorkflow(workflowDef.getId(), params);
|
||||||
|
assertNotNull(path);
|
||||||
|
assertTrue(path.isActive());
|
||||||
|
return path.getInstance().getId();
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
protected void onSetUpInTransaction() throws Exception
|
protected void onSetUpInTransaction() throws Exception
|
||||||
|
@@ -111,7 +111,6 @@ import org.xml.sax.InputSource;
|
|||||||
* @since 3.4.e
|
* @since 3.4.e
|
||||||
* @author Nick Smith
|
* @author Nick Smith
|
||||||
* @author Frederik Heremans
|
* @author Frederik Heremans
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
||||||
{
|
{
|
||||||
@@ -1002,7 +1001,7 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
|||||||
throw new WorkflowException(msg, ae);
|
throw new WorkflowException(msg, ae);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@@ -1419,60 +1418,72 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
|||||||
|
|
||||||
private List<WorkflowTask> queryRuntimeTasks(WorkflowTaskQuery query)
|
private List<WorkflowTask> queryRuntimeTasks(WorkflowTaskQuery query)
|
||||||
{
|
{
|
||||||
// Runtime-tasks only exist on process-instances that are active
|
// Runtime-tasks only exist on process-instances that are active
|
||||||
// so no use in querying runtime tasks if not active
|
// so no use in querying runtime tasks if not active
|
||||||
if(!Boolean.FALSE.equals(query.isActive()))
|
if (!Boolean.FALSE.equals(query.isActive()))
|
||||||
{
|
{
|
||||||
// Add task name
|
// Add task name
|
||||||
TaskQuery taskQuery = taskService.createTaskQuery();
|
TaskQuery taskQuery = taskService.createTaskQuery();
|
||||||
if(query.getTaskName() != null) {
|
if (query.getTaskName() != null)
|
||||||
// Task 'key' is stored as variable on task
|
{
|
||||||
String formKey = query.getTaskName().toPrefixString(namespaceService);
|
// Task 'key' is stored as variable on task
|
||||||
taskQuery.taskVariableValueEquals(ActivitiConstants.PROP_TASK_FORM_KEY, formKey);
|
String formKey = query.getTaskName().toPrefixString(namespaceService);
|
||||||
}
|
taskQuery.taskVariableValueEquals(ActivitiConstants.PROP_TASK_FORM_KEY, formKey);
|
||||||
|
}
|
||||||
if(query.getProcessId() != null) {
|
|
||||||
String processInstanceId = createLocalId(query.getProcessId());
|
|
||||||
taskQuery.processInstanceId(processInstanceId);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(query.getProcessName() != null)
|
if (query.getProcessId() != null)
|
||||||
{
|
{
|
||||||
String processName = getProcessNameMTSafe(query.getProcessName());
|
String processInstanceId = createLocalId(query.getProcessId());
|
||||||
taskQuery.processDefinitionKey(processName);
|
taskQuery.processInstanceId(processInstanceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(query.getActorId() != null) {
|
|
||||||
taskQuery.taskAssignee(query.getActorId());
|
|
||||||
}
|
|
||||||
|
|
||||||
if(query.getTaskId() != null) {
|
|
||||||
String taskId = createLocalId(query.getTaskId());
|
|
||||||
taskQuery.taskId(taskId);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Custom task properties
|
|
||||||
if(query.getTaskCustomProps() != null)
|
|
||||||
{
|
|
||||||
addTaskPropertiesToQuery(query.getTaskCustomProps(), taskQuery);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(query.getProcessCustomProps() != null)
|
if (query.getProcessName() != null)
|
||||||
{
|
{
|
||||||
addProcessPropertiesToQuery(query.getProcessCustomProps(), taskQuery);
|
String processName = getProcessNameMTSafe(query.getProcessName());
|
||||||
}
|
taskQuery.processDefinitionKey(processName);
|
||||||
// Add ordering
|
}
|
||||||
if (query.getOrderBy() != null)
|
|
||||||
{
|
if (query.getActorId() != null)
|
||||||
WorkflowTaskQuery.OrderBy[] orderBy = query.getOrderBy();
|
{
|
||||||
orderQuery(taskQuery, orderBy);
|
taskQuery.taskAssignee(query.getActorId());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<WorkflowTask> currentTasks = typeConverter.convert(taskQuery.list());
|
if (query.getTaskId() != null)
|
||||||
return currentTasks;
|
{
|
||||||
}
|
String taskId = createLocalId(query.getTaskId());
|
||||||
return new ArrayList<WorkflowTask>();
|
taskQuery.taskId(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Custom task properties
|
||||||
|
if (query.getTaskCustomProps() != null)
|
||||||
|
{
|
||||||
|
addTaskPropertiesToQuery(query.getTaskCustomProps(), taskQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (query.getProcessCustomProps() != null)
|
||||||
|
{
|
||||||
|
addProcessPropertiesToQuery(query.getProcessCustomProps(), taskQuery);
|
||||||
|
}
|
||||||
|
// Add ordering
|
||||||
|
if (query.getOrderBy() != null)
|
||||||
|
{
|
||||||
|
WorkflowTaskQuery.OrderBy[] orderBy = query.getOrderBy();
|
||||||
|
orderQuery(taskQuery, orderBy);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Task> results;
|
||||||
|
int limit = query.getLimit();
|
||||||
|
if (limit > 0)
|
||||||
|
{
|
||||||
|
results = taskQuery.listPage(0, limit);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
results = taskQuery.list();
|
||||||
|
}
|
||||||
|
return typeConverter.convert(results);
|
||||||
|
}
|
||||||
|
return new ArrayList<WorkflowTask>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addProcessPropertiesToQuery(
|
private void addProcessPropertiesToQuery(
|
||||||
@@ -1611,78 +1622,87 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
|||||||
|
|
||||||
private List<WorkflowTask> queryHistoricTasks(WorkflowTaskQuery query)
|
private List<WorkflowTask> queryHistoricTasks(WorkflowTaskQuery query)
|
||||||
{
|
{
|
||||||
HistoricTaskInstanceQuery historicQuery = historyService
|
HistoricTaskInstanceQuery historicQuery = historyService.createHistoricTaskInstanceQuery().finished();
|
||||||
.createHistoricTaskInstanceQuery()
|
|
||||||
.finished();
|
if (query.getTaskId() != null)
|
||||||
|
{
|
||||||
if(query.getTaskId() != null) {
|
String taskId = createLocalId(query.getTaskId());
|
||||||
String taskId = createLocalId(query.getTaskId());
|
historicQuery.taskId(taskId);
|
||||||
historicQuery.taskId(taskId);
|
}
|
||||||
}
|
|
||||||
|
if (query.getProcessId() != null)
|
||||||
if(query.getProcessId() != null)
|
{
|
||||||
{
|
String processInstanceId = createLocalId(query.getProcessId());
|
||||||
String processInstanceId = createLocalId(query.getProcessId());
|
historicQuery.processInstanceId(processInstanceId);
|
||||||
historicQuery.processInstanceId(processInstanceId);
|
}
|
||||||
}
|
|
||||||
|
if (query.getTaskName() != null)
|
||||||
if(query.getTaskName() != null)
|
{
|
||||||
{
|
historicQuery.taskDefinitionKey(query.getTaskName().toPrefixString());
|
||||||
historicQuery.taskDefinitionKey(query.getTaskName().toPrefixString());
|
}
|
||||||
}
|
|
||||||
|
if (query.getActorId() != null)
|
||||||
if(query.getActorId() != null)
|
{
|
||||||
{
|
historicQuery.taskAssignee(query.getActorId());
|
||||||
historicQuery.taskAssignee(query.getActorId());
|
}
|
||||||
}
|
|
||||||
|
if (query.getProcessName() != null)
|
||||||
if(query.getProcessName() != null)
|
{
|
||||||
{
|
String processName = getProcessNameMTSafe(query.getProcessName());
|
||||||
String processName = getProcessNameMTSafe(query.getProcessName());
|
historicQuery.processDefinitionKey(processName);
|
||||||
historicQuery.processDefinitionKey(processName);
|
}
|
||||||
}
|
|
||||||
|
if (query.getTaskCustomProps() != null)
|
||||||
if(query.getTaskCustomProps() != null)
|
{
|
||||||
{
|
addTaskPropertiesToQuery(query.getTaskCustomProps(), historicQuery);
|
||||||
addTaskPropertiesToQuery(query.getTaskCustomProps(), historicQuery);
|
}
|
||||||
}
|
|
||||||
|
if (query.getProcessCustomProps() != null)
|
||||||
if(query.getProcessCustomProps() != null)
|
{
|
||||||
{
|
addProcessPropertiesToQuery(query.getProcessCustomProps(), historicQuery);
|
||||||
addProcessPropertiesToQuery(query.getProcessCustomProps(), historicQuery);
|
}
|
||||||
}
|
|
||||||
|
if (query.isActive() != null)
|
||||||
if(query.isActive() != null)
|
{
|
||||||
{
|
if (query.isActive())
|
||||||
if(query.isActive()) {
|
{
|
||||||
historicQuery.processUnfinished();
|
historicQuery.processUnfinished();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
historicQuery.processFinished();
|
historicQuery.processFinished();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Order query
|
// Order query
|
||||||
if(query.getOrderBy() != null)
|
if (query.getOrderBy() != null)
|
||||||
{
|
{
|
||||||
orderQuery(historicQuery, query.getOrderBy());
|
orderQuery(historicQuery, query.getOrderBy());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<WorkflowTask> workflowTasks = new ArrayList<WorkflowTask>();
|
List<HistoricTaskInstance> results;
|
||||||
List<HistoricTaskInstance> historicTasks = historicQuery.list();
|
int limit = query.getLimit();
|
||||||
|
if (limit > 0)
|
||||||
for(HistoricTaskInstance historicTask : historicTasks)
|
{
|
||||||
{
|
results = historicQuery.listPage(0, limit);
|
||||||
WorkflowTask wfTask = typeConverter.convert(historicTask);
|
}
|
||||||
if(wfTask != null)
|
else
|
||||||
{
|
{
|
||||||
// Converter returns null if the task belongs to deleted/cancelled WF
|
results = historicQuery.list();
|
||||||
workflowTasks.add(wfTask);
|
}
|
||||||
}
|
|
||||||
}
|
List<WorkflowTask> workflowTasks = new ArrayList<WorkflowTask>();
|
||||||
return workflowTasks;
|
for (HistoricTaskInstance historicTask : results)
|
||||||
|
{
|
||||||
|
WorkflowTask wfTask = typeConverter.convert(historicTask);
|
||||||
|
if (wfTask != null)
|
||||||
|
{
|
||||||
|
// Converter returns null if the task belongs to
|
||||||
|
// deleted/cancelled WF
|
||||||
|
workflowTasks.add(wfTask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return workflowTasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addTaskPropertiesToQuery(Map<QName, Object> taskCustomProps,
|
private void addTaskPropertiesToQuery(Map<QName, Object> taskCustomProps,
|
||||||
|
@@ -82,7 +82,8 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ
|
|||||||
assertEquals("Approve", outcome);
|
assertEquals("Approve", outcome);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void testTaskQueryStartTaskCompleted(String workflowInstanceId, WorkflowTask startTask)
|
@Override
|
||||||
|
protected void checkTaskQueryStartTaskCompleted(String workflowInstanceId, WorkflowTask startTask)
|
||||||
{
|
{
|
||||||
// In activiti, start-tasks only show up when the workflowInstanceId or taskId is passed
|
// In activiti, start-tasks only show up when the workflowInstanceId or taskId is passed
|
||||||
List<String> expectedTasks = Arrays.asList(startTask.getId());
|
List<String> expectedTasks = Arrays.asList(startTask.getId());
|
||||||
@@ -98,7 +99,8 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ
|
|||||||
checkTaskPropsQuery(expectedTasks, WorkflowTaskState.COMPLETED, workflowInstanceId);
|
checkTaskPropsQuery(expectedTasks, WorkflowTaskState.COMPLETED, workflowInstanceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void testTaskQueryTaskCompleted(String workflowInstanceId,
|
@Override
|
||||||
|
protected void checkTaskQueryTaskCompleted(String workflowInstanceId,
|
||||||
WorkflowTask theTask, WorkflowTask startTask)
|
WorkflowTask theTask, WorkflowTask startTask)
|
||||||
{
|
{
|
||||||
List<String> bothTasks = Arrays.asList(theTask.getId(), startTask.getId());
|
List<String> bothTasks = Arrays.asList(theTask.getId(), startTask.getId());
|
||||||
@@ -124,7 +126,8 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ
|
|||||||
checkProcessPropsQuery(withoutStartTask, WorkflowTaskState.COMPLETED);
|
checkProcessPropsQuery(withoutStartTask, WorkflowTaskState.COMPLETED);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void testQueryTasksInactiveWorkflow(String workflowInstanceId) {
|
@Override
|
||||||
|
protected void checkQueryTasksInactiveWorkflow(String workflowInstanceId) {
|
||||||
WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(WorkflowTaskState.COMPLETED);
|
WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(WorkflowTaskState.COMPLETED);
|
||||||
taskQuery.setActive(false);
|
taskQuery.setActive(false);
|
||||||
|
|
||||||
|
@@ -176,6 +176,7 @@ public class WorkflowTaskQuery
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Filters ont he {@link WorkflowInstance} Id.
|
||||||
* @param processId
|
* @param processId
|
||||||
*/
|
*/
|
||||||
public void setProcessId(String processId)
|
public void setProcessId(String processId)
|
||||||
@@ -192,6 +193,7 @@ public class WorkflowTaskQuery
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Filters on the {@link WorkflowDefinition} name.
|
||||||
* @param processName
|
* @param processName
|
||||||
*/
|
*/
|
||||||
public void setProcessName(QName processName)
|
public void setProcessName(QName processName)
|
||||||
|
Reference in New Issue
Block a user