diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/workflow/workflow-instances.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/repository/workflow/workflow-instances.get.desc.xml index 89b241cf94..ec8a53fbfa 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/workflow/workflow-instances.get.desc.xml +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/workflow/workflow-instances.get.desc.xml @@ -1,7 +1,7 @@ Get Workflow Instance Collection Retrieves all workflow instances, the returned list can be optionally filtered by the state of the workflow instance and by the authority that initiated the workflow instance. - /api/workflow-instances?state={state?}&initiator={initiator?}&priority={priority?}&dueBefore={dueBefore?}&dueAfter={dueAfter?}&definitionId={workflow_definition_id?}&startedBefore={startedBefore?}&startedAfter={startedAfter?}&completedBefore={completedBefore?}&completedAfter={completedAfter?}&maxItems={maxItems?}&skipCount={skipCount?}&exclude={exclude?} + /api/workflow-instances?state={state?}&initiator={initiator?}&priority={priority?}&dueBefore={dueBefore?}&dueAfter={dueAfter?}&definitionId={definitionId?}&definitionName={definitionName?}&startedBefore={startedBefore?}&startedAfter={startedAfter?}&completedBefore={completedBefore?}&completedAfter={completedAfter?}&maxItems={maxItems?}&skipCount={skipCount?}&exclude={exclude?} /api/workflow-definitions/{workflow_definition_id}/workflow-instances?state={state?}&initiator={initiator?}&priority={priority?}&dueBefore={dueBefore?}&dueAfter={dueAfter?}&startedBefore={startedBefore?}&startedAfter={startedAfter?}&completedBefore={completedBefore?}&completedAfter={completedAfter?}&maxItems={maxItems?}&skipCount={skipCount?}&exclude={exclude?} user diff --git a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowInstancesGet.java b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowInstancesGet.java index 8cf4299636..e56e4d46b3 100644 --- a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowInstancesGet.java +++ b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowInstancesGet.java @@ -51,6 +51,7 @@ public class WorkflowInstancesGet extends AbstractWorkflowWebscript public static final String PARAM_STARTED_AFTER = "startedAfter"; public static final String PARAM_COMPLETED_BEFORE = "completedBefore"; public static final String PARAM_COMPLETED_AFTER = "completedAfter"; + public static final String PARAM_DEFINITION_NAME = "definitionName"; public static final String PARAM_DEFINITION_ID = "definitionId"; public static final String VAR_DEFINITION_ID = "workflow_definition_id"; @@ -66,6 +67,7 @@ public class WorkflowInstancesGet extends AbstractWorkflowWebscript filters.put(PARAM_STATE, req.getParameter(PARAM_STATE)); filters.put(PARAM_INITIATOR, req.getParameter(PARAM_INITIATOR)); filters.put(PARAM_PRIORITY, req.getParameter(PARAM_PRIORITY)); + filters.put(PARAM_DEFINITION_NAME, req.getParameter(PARAM_DEFINITION_NAME)); String excludeParam = req.getParameter(PARAM_EXCLUDE); if (excludeParam != null && excludeParam.length() > 0) @@ -154,6 +156,49 @@ public class WorkflowInstancesGet extends AbstractWorkflowWebscript break; } } + else if (key.equals(PARAM_INITIATOR)) + { + NodeRef initiator = workflowInstance.getInitiator(); + + if (initiator == null) + { + result = false; + break; + } + else + { + if (!nodeService.exists(initiator) || + !filterValue.equals(nodeService.getProperty(workflowInstance.getInitiator(), ContentModel.PROP_USERNAME))) + { + result = false; + break; + } + } + } + else if (key.equals(PARAM_PRIORITY)) + { + String priority = "0"; + if (workflowInstance.getPriority() != null) + { + priority = workflowInstance.getPriority().toString(); + } + + if (!filterValue.equals(priority)) + { + result = false; + break; + } + } + else if (key.equals(PARAM_DEFINITION_NAME)) + { + String definitionName = workflowInstance.getDefinition().getName(); + + if (!filterValue.equals(definitionName)) + { + result = false; + break; + } + } else if (key.equals(PARAM_STATE)) { WorkflowState filter = WorkflowState.getState(filterValue.toString()); @@ -228,39 +273,6 @@ public class WorkflowInstancesGet extends AbstractWorkflowWebscript break; } } - else if (key.equals(PARAM_INITIATOR)) - { - NodeRef initiator = workflowInstance.getInitiator(); - - if (initiator == null) - { - result = false; - break; - } - else - { - if (!nodeService.exists(initiator) || - !filterValue.equals(nodeService.getProperty(workflowInstance.getInitiator(), ContentModel.PROP_USERNAME))) - { - result = false; - break; - } - } - } - else if (key.equals(PARAM_PRIORITY)) - { - String priority = "0"; - if (workflowInstance.getPriority() != null) - { - priority = workflowInstance.getPriority().toString(); - } - - if (!filterValue.equals(priority)) - { - result = false; - break; - } - } } } diff --git a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowRestApiTest.java b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowRestApiTest.java index f35dfadbf1..c45e4b7b9a 100644 --- a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowRestApiTest.java +++ b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowRestApiTest.java @@ -606,6 +606,9 @@ public class WorkflowRestApiTest extends BaseWebScriptTest // filter by state checkFiltering(URL_WORKFLOW_INSTANCES + "?state=active"); + // filter by definition name + checkFiltering(URL_WORKFLOW_INSTANCES + "?definitionName=jbpm$wf:adhoc"); + // paging int maxItems = 3; for (int skipCount = 0; skipCount < totalItems; skipCount += maxItems)