mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +00:00
ACE-4493 - [Upgrade] Workflow Type filter is not applying for some activiti workflows after upgrade from 4.1.10
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@115157 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -30,6 +30,7 @@ import java.util.Map;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.alfresco.repo.workflow.WorkflowModel;
|
import org.alfresco.repo.workflow.WorkflowModel;
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowInstanceQuery;
|
import org.alfresco.service.cmr.workflow.WorkflowInstanceQuery;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowInstanceQuery.DatePosition;
|
import org.alfresco.service.cmr.workflow.WorkflowInstanceQuery.DatePosition;
|
||||||
@@ -125,13 +126,6 @@ public class WorkflowInstancesGet extends AbstractWorkflowWebscript
|
|||||||
if (workflowDefinitionId == null)
|
if (workflowDefinitionId == null)
|
||||||
{
|
{
|
||||||
workflowDefinitionId = req.getParameter(PARAM_DEFINITION_ID);
|
workflowDefinitionId = req.getParameter(PARAM_DEFINITION_ID);
|
||||||
if (workflowDefinitionId == null)
|
|
||||||
{
|
|
||||||
if (req.getParameter(PARAM_DEFINITION_NAME) != null)
|
|
||||||
{
|
|
||||||
workflowDefinitionId = workflowService.getDefinitionByName(req.getParameter(PARAM_DEFINITION_NAME)).getId();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// default workflow state to ACTIVE if not supplied
|
// default workflow state to ACTIVE if not supplied
|
||||||
@@ -144,19 +138,67 @@ public class WorkflowInstancesGet extends AbstractWorkflowWebscript
|
|||||||
workflowInstanceQuery.setCustomProps(filters);
|
workflowInstanceQuery.setCustomProps(filters);
|
||||||
|
|
||||||
List<WorkflowInstance> workflows = new ArrayList<WorkflowInstance>();
|
List<WorkflowInstance> workflows = new ArrayList<WorkflowInstance>();
|
||||||
|
|
||||||
if (workflowDefinitionId != null)
|
int total = 0;
|
||||||
{
|
|
||||||
workflowInstanceQuery.setWorkflowDefinitionId(workflowDefinitionId);
|
|
||||||
}
|
|
||||||
|
|
||||||
// MNT-9074 My Tasks fails to render if tasks quantity is excessive
|
// MNT-9074 My Tasks fails to render if tasks quantity is excessive
|
||||||
int maxItems = getIntParameter(req, PARAM_MAX_ITEMS, DEFAULT_MAX_ITEMS);
|
int maxItems = getIntParameter(req, PARAM_MAX_ITEMS, DEFAULT_MAX_ITEMS);
|
||||||
int skipCount = getIntParameter(req, PARAM_SKIP_COUNT, DEFAULT_SKIP_COUNT);
|
int skipCount = getIntParameter(req, PARAM_SKIP_COUNT, DEFAULT_SKIP_COUNT);
|
||||||
|
|
||||||
workflows.addAll(workflowService.getWorkflows(workflowInstanceQuery, maxItems, skipCount));
|
if (workflowDefinitionId == null && req.getParameter(PARAM_DEFINITION_NAME) != null)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* If we are searching by workflow definition name then there may be many workflow definition instances.
|
||||||
|
*/
|
||||||
|
int workingSkipCount = skipCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Yes there could be multiple process definitions with that definition name
|
||||||
|
*/
|
||||||
|
String definitionName = req.getParameter(PARAM_DEFINITION_NAME);
|
||||||
|
|
||||||
|
List<WorkflowDefinition> defs = workflowService.getAllDefinitionsByName(definitionName);
|
||||||
|
|
||||||
|
int itemsToQuery = maxItems;
|
||||||
|
|
||||||
|
for(WorkflowDefinition def : defs)
|
||||||
|
{
|
||||||
|
workflowDefinitionId = def.getId();
|
||||||
|
workflowInstanceQuery.setWorkflowDefinitionId(workflowDefinitionId);
|
||||||
|
if(maxItems < 0 || itemsToQuery > 0)
|
||||||
|
{
|
||||||
|
workflows.addAll(workflowService.getWorkflows(workflowInstanceQuery, itemsToQuery, workingSkipCount));
|
||||||
|
}
|
||||||
|
if(maxItems > 0)
|
||||||
|
{
|
||||||
|
itemsToQuery = maxItems - workflows.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
total += (int) workflowService.countWorkflows(workflowInstanceQuery);
|
||||||
|
|
||||||
|
if(workingSkipCount > 0)
|
||||||
|
{
|
||||||
|
workingSkipCount = skipCount - total;
|
||||||
|
|
||||||
|
if(workingSkipCount < 0)
|
||||||
|
{
|
||||||
|
workingSkipCount = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This is the old single task implementation
|
||||||
|
*/
|
||||||
|
if (workflowDefinitionId != null)
|
||||||
|
{
|
||||||
|
workflowInstanceQuery.setWorkflowDefinitionId(workflowDefinitionId);
|
||||||
|
}
|
||||||
|
workflows.addAll(workflowService.getWorkflows(workflowInstanceQuery, maxItems, skipCount));
|
||||||
|
|
||||||
int total = (int) workflowService.countWorkflows(workflowInstanceQuery);
|
total = (int) workflowService.countWorkflows(workflowInstanceQuery);
|
||||||
|
}
|
||||||
|
|
||||||
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>(total);
|
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>(total);
|
||||||
|
|
||||||
@@ -170,7 +212,7 @@ public class WorkflowInstancesGet extends AbstractWorkflowWebscript
|
|||||||
|
|
||||||
skipCount++;
|
skipCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create and return results, paginated if necessary
|
// create and return results, paginated if necessary
|
||||||
return createResultModel(req, "workflowInstances", results);
|
return createResultModel(req, "workflowInstances", results);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user