diff --git a/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java b/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java index 528effb387..de46ade037 100644 --- a/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java +++ b/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java @@ -58,6 +58,8 @@ import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.util.BaseSpringTest; import org.alfresco.util.GUID; +import org.alfresco.util.collections.CollectionUtils; +import org.alfresco.util.collections.Function; /** * @author Nick Smith @@ -781,6 +783,12 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT checkCompletedWorkflows(defId, instance1); checkWorkflows(defId, instance1, instance2); + checkWorkflowsContains(workflowService.getActiveWorkflows(), instance2); + checkWorkflowsDontContain(workflowService.getActiveWorkflows(), instance1); + checkWorkflowsContains(workflowService.getCompletedWorkflows(), instance1); + checkWorkflowsDontContain(workflowService.getCompletedWorkflows(), instance2); + checkWorkflowsContains(workflowService.getWorkflows(), instance1, instance2); + // End workflow 2 WorkflowTask startTask2 = workflowService.getStartTask(instance2); workflowService.endTask(startTask2.getId(), null); @@ -865,6 +873,28 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT } } + private void checkWorkflowsContains(List workflows, String... expectedIds) + { + List expIds = Arrays.asList(expectedIds); + List workflowIds = CollectionUtils.transform(workflows, new Function() + { + public String apply(WorkflowInstance workflow) + { + return workflow.getId(); + } + }); + assertTrue(workflowIds.containsAll(expIds)); + } + + private void checkWorkflowsDontContain(List workflows, String... expectedIds) + { + List expIds = Arrays.asList(expectedIds); + for (WorkflowInstance instance : workflows) + { + assertFalse(expIds.contains(instance.getId())); + } + } + protected void checkTaskNameQuery(QName taskName, List expectedTaskIds, WorkflowTaskState state, String optionalProcessId) { @@ -974,6 +1004,7 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT checkNoTasksFoundUsingQuery(taskQuery); } + @SuppressWarnings("deprecation") protected void checkProcessNameQuery(List expectedTaskIds, WorkflowTaskState state) { WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(state); diff --git a/source/java/org/alfresco/repo/workflow/WorkflowComponent.java b/source/java/org/alfresco/repo/workflow/WorkflowComponent.java index e147c6c498..76c409099b 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowComponent.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowComponent.java @@ -185,6 +185,30 @@ public interface WorkflowComponent */ public List getWorkflows(String workflowDefinitionId); + /** + * Gets all "in-flight" active workflow instances. + * + * @return the list of "in-flight" workflow instances + * @since 4.0 + */ + public List getActiveWorkflows(); + + /** + * Gets all completed workflow instances. + * + * @return the list of "in-flight" workflow instances + * @since 4.0 + */ + public List getCompletedWorkflows(); + + /** + * Gets all workflow instances (both active and completed). + * + * @return the list of "in-flight" workflow instances + * @since 4.0 + */ + public List getWorkflows(); + /** * Gets a specific workflow instances * diff --git a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java index f61319e378..0c858cb4da 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java @@ -22,6 +22,7 @@ package org.alfresco.repo.workflow; 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.List; @@ -56,6 +57,8 @@ import org.alfresco.service.cmr.workflow.WorkflowTaskQuery; import org.alfresco.service.cmr.workflow.WorkflowTaskState; import org.alfresco.service.cmr.workflow.WorkflowTimer; import org.alfresco.service.namespace.QName; +import org.alfresco.util.collections.CollectionUtils; +import org.alfresco.util.collections.Function; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -414,50 +417,99 @@ public class WorkflowServiceImpl implements WorkflowService throw new UnsupportedOperationException(); } - /* - * (non-Javadoc) - * @see - * org.alfresco.service.cmr.workflow.WorkflowService#getActiveWorkflows( - * java.lang.String) + /** + * {@inheritDoc} */ public List getActiveWorkflows(String workflowDefinitionId) { + if(workflowDefinitionId==null) + { + return getActiveWorkflows(); + } String engineId = BPMEngineRegistry.getEngineId(workflowDefinitionId); WorkflowComponent component = getWorkflowComponent(engineId); return component.getActiveWorkflows(workflowDefinitionId); } - /* - * (non-Javadoc) - * @see - * org.alfresco.service.cmr.workflow.WorkflowService#getCompletedWorkflows( - * java.lang.String) + /** + * {@inheritDoc} */ public List getCompletedWorkflows(String workflowDefinitionId) { + if(workflowDefinitionId==null) + { + return getCompletedWorkflows(); + } + String engineId = BPMEngineRegistry.getEngineId(workflowDefinitionId); WorkflowComponent component = getWorkflowComponent(engineId); return component.getCompletedWorkflows(workflowDefinitionId); } - /* - * (non-Javadoc) - * @see - * org.alfresco.service.cmr.workflow.WorkflowService#getWorkflows( - * java.lang.String) + /** + * {@inheritDoc} */ public List getWorkflows(String workflowDefinitionId) { + if(workflowDefinitionId==null) + { + return getWorkflows(); + } String engineId = BPMEngineRegistry.getEngineId(workflowDefinitionId); WorkflowComponent component = getWorkflowComponent(engineId); return component.getWorkflows(workflowDefinitionId); } - /* - * (non-Javadoc) - * @see - * org.alfresco.service.cmr.workflow.WorkflowService#getWorkflowById(java - * .lang.String) + /** + * {@inheritDoc} + */ + public List getActiveWorkflows() + { + List ids = Arrays.asList(registry.getWorkflowComponents()); + return CollectionUtils.transformFlat(ids, new Function>() + { + public List apply(String id) + { + WorkflowComponent component = registry.getWorkflowComponent(id); + return component.getActiveWorkflows(); + } + }); + } + + /** + * {@inheritDoc} + */ + public List getCompletedWorkflows() + { + List ids = Arrays.asList(registry.getWorkflowComponents()); + return CollectionUtils.transformFlat(ids, new Function>() + { + public List apply(String id) + { + WorkflowComponent component = registry.getWorkflowComponent(id); + return component.getCompletedWorkflows(); + } + }); + } + + /** + * {@inheritDoc} + */ + public List getWorkflows() + { + List ids = Arrays.asList(registry.getWorkflowComponents()); + return CollectionUtils.transformFlat(ids, new Function>() + { + public List apply(String id) + { + WorkflowComponent component = registry.getWorkflowComponent(id); + return component.getWorkflows(); + } + }); + } + + /** + * {@inheritDoc} */ public WorkflowInstance getWorkflowById(String workflowId) { diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java index 3fb4d4fd5b..c2b364af0c 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java @@ -43,6 +43,7 @@ import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.form.StartFormData; import org.activiti.engine.history.HistoricProcessInstance; +import org.activiti.engine.history.HistoricProcessInstanceQuery; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.history.HistoricTaskInstanceQuery; import org.activiti.engine.impl.RepositoryServiceImpl; @@ -65,6 +66,7 @@ import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.Job; import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.runtime.ProcessInstanceQuery; import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; import org.alfresco.model.ContentModel; @@ -201,6 +203,7 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine { super(); } + /** * {@inheritDoc} */ @@ -219,7 +222,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowInstance cancelWorkflow(String workflowId) { String localId = createLocalId(workflowId); @@ -256,7 +258,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowInstance deleteWorkflow(String workflowId) { String localId = createLocalId(workflowId); @@ -292,7 +293,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowDeployment deployDefinition(InputStream workflowDefinition, String mimetype) { return deployDefinition(workflowDefinition, mimetype, null); @@ -301,7 +301,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowDeployment deployDefinition(InputStream workflowDefinition, String mimetype, String name) { try @@ -326,17 +325,65 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowPath fireEvent(String pathId, String event) { String message = messageService.getMessage(ERR_FIRE_EVENT_NOT_SUPPORTED); throw new WorkflowException(message); } + /** + * {@inheritDoc} + */ + public List getActiveWorkflows() + { + try + { + return getWorkflowInstances(null, true); + } + catch(ActivitiException ae) + { + String message = messageService.getMessage(ERR_GET_ACTIVE_WORKFLOW_INSTS, ""); + throw new WorkflowException(message, ae); + } + } + /** * {@inheritDoc} */ @Override + public List getCompletedWorkflows() + { + try + { + return getWorkflowInstances(null, false); + } + catch(ActivitiException ae) + { + String message = messageService.getMessage(ERR_GET_COMPLETED_WORKFLOW_INSTS, ""); + throw new WorkflowException(message, ae); + } + } + + /** + * {@inheritDoc} + */ + @Override + public List getWorkflows() + { + try + { + return getWorkflowInstances(null, null); + } + catch(ActivitiException ae) + { + String message = messageService.getMessage(ERR_GET_WORKFLOW_INSTS, ""); + throw new WorkflowException(message, ae); + } + } + + /** + * {@inheritDoc} + */ public List getActiveWorkflows(String workflowDefinitionId) { try @@ -353,7 +400,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getAllDefinitions() { try @@ -371,7 +417,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getAllDefinitionsByName(String workflowName) { try @@ -392,7 +437,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getCompletedWorkflows(String workflowDefinitionId) { try @@ -409,7 +453,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowDefinition getDefinitionById(String workflowDefinitionId) { try @@ -430,7 +473,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowDefinition getDefinitionByName(String workflowName) { try @@ -452,7 +494,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public byte[] getDefinitionImage(String workflowDefinitionId) { try @@ -494,7 +535,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getDefinitions() { try @@ -514,7 +554,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public Map getPathProperties(String pathId) { String executionId = createLocalId(pathId); @@ -524,7 +563,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getTaskDefinitions(String workflowDefinitionId) { List defs = new ArrayList(); @@ -651,7 +689,7 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override + public List getTasksForWorkflowPath(String pathId) { try @@ -716,7 +754,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getTimers(String workflowId) { try @@ -790,7 +827,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowInstance getWorkflowById(String workflowId) { try @@ -831,7 +867,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getWorkflowPaths(String workflowId) { try @@ -855,7 +890,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getWorkflows(String workflowDefinitionId) { try @@ -872,7 +906,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public boolean isDefinitionDeployed(InputStream workflowDefinition, String mimetype) { String key = null; @@ -930,7 +963,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowPath signal(String pathId, String transitionId) { String execId = createLocalId(pathId); @@ -947,7 +979,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowPath startWorkflow(String workflowDefinitionId, Map parameters) { try @@ -999,7 +1030,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public void undeployDefinition(String workflowDefinitionId) { try @@ -1026,7 +1056,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public boolean hasWorkflowImage(String workflowInstanceId) { boolean hasImage = false; @@ -1052,7 +1081,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public InputStream getWorkflowImage(String workflowInstanceId) { String processInstanceId = createLocalId(workflowInstanceId); @@ -1262,7 +1290,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowTask endTask(String taskId, String transition) { String localTaskId = createLocalId(taskId); @@ -1373,7 +1400,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getAssignedTasks(String authority, WorkflowTaskState state) { try @@ -1403,7 +1429,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List getPooledTasks(List authorities) { try @@ -1482,7 +1507,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowTask getTaskById(String taskId) { try @@ -1514,7 +1538,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public List queryTasks(WorkflowTaskQuery query) { ArrayList result = new ArrayList(); @@ -2007,7 +2030,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowTask getStartTask(String workflowInstanceId) { String instanceId = createLocalId(workflowInstanceId); @@ -2042,7 +2064,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowTask startTask(String taskId) { throw new UnsupportedOperationException(); @@ -2051,7 +2072,7 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override + public WorkflowTask suspendTask(String taskId) { throw new UnsupportedOperationException(); @@ -2060,7 +2081,6 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine /** * {@inheritDoc} */ - @Override public WorkflowTask updateTask(String taskId, Map properties, Map> add, Map> remove) { @@ -2094,22 +2114,28 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine private List getWorkflowInstances(String workflowDefinitionId, Boolean isActive) { - String processDefId = createLocalId(workflowDefinitionId); + String processDefId = workflowDefinitionId==null ? null : createLocalId(workflowDefinitionId); LinkedList results = new LinkedList(); if(Boolean.FALSE.equals(isActive)==false) { - List activeInstances = runtimeService.createProcessInstanceQuery() - .processDefinitionId(processDefId) - .list(); + ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery(); + if(processDefId!=null) + { + query = query.processDefinitionId(processDefId); + } + List activeInstances = query.list(); List activeResults = typeConverter.convert(activeInstances); results.addAll(activeResults); } if(Boolean.TRUE.equals(isActive)==false) { - List completedInstances = historyService.createHistoricProcessInstanceQuery() - .processDefinitionId(processDefId) - .finished() - .list(); + HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery() + .finished(); + if(processDefId!=null) + { + query = query.processDefinitionId(processDefId); + } + List completedInstances = query.list(); List completedResults = typeConverter.convert(completedInstances); results.addAll(completedResults); } diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java index d84950c926..c4f26c0951 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java @@ -443,6 +443,17 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine }); } + private List convertWorkflows(Collection instances) + { + return CollectionUtils.transform(instances, new Function() + { + public WorkflowInstance apply(ProcessInstance value) + { + return createWorkflowInstance(value); + } + }); + } + /* * (non-Javadoc) * @@ -772,55 +783,63 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine return new WorkflowException(msg, e); } - /* (non-Javadoc) - * @see org.alfresco.repo.workflow.WorkflowComponent#getActiveWorkflows(java.lang.String) - */ + /** + * {@inheritDoc} + */ + public List getActiveWorkflows() + { + return getWorkflowsInternal(null, true); + } + + /** + * {@inheritDoc} + */ + @Override + public List getCompletedWorkflows() + { + return getWorkflowsInternal(null, false); + } + + /** + * {@inheritDoc} + */ + @Override + public List getWorkflows() + { + return getWorkflowsInternal(null, null); + } + + /** + * {@inheritDoc} + */ public List getActiveWorkflows(final String workflowDefinitionId) { return getWorkflowsInternal(workflowDefinitionId, true); } - /* (non-Javadoc) - * @see org.alfresco.repo.workflow.WorkflowComponent#getCompletedWorkflows(java.lang.String) - */ + /** + * {@inheritDoc} + */ public List getCompletedWorkflows(final String workflowDefinitionId) { return getWorkflowsInternal(workflowDefinitionId, false); } - /* (non-Javadoc) - * @see org.alfresco.repo.workflow.WorkflowComponent#getWorkflows(java.lang.String) + /** + * {@inheritDoc} */ public List getWorkflows(final String workflowDefinitionId) { return getWorkflowsInternal(workflowDefinitionId, null); } - @SuppressWarnings("unchecked") - private List getWorkflowsInternal(final String workflowDefinitionId, final Boolean active) + private List getWorkflowsInternal(String workflowDefinitionId, Boolean active) { try { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - GraphSession graphSession = context.getGraphSession(); - List processInstances = graphSession - .findProcessInstances(getJbpmId(workflowDefinitionId)); - List workflowInstances = new ArrayList(processInstances.size()); - for (ProcessInstance processInstance : processInstances) - { - if ((active == null) || (!active && processInstance.hasEnded()) - || (active && !processInstance.hasEnded())) - { - WorkflowInstance workflowInstance = createWorkflowInstance(processInstance); - workflowInstances.add(workflowInstance); - } - } - return workflowInstances; - } - }); + final Long processDefId = workflowDefinitionId == null ? null : getJbpmId(workflowDefinitionId); + List instances = getProcessInstances(processDefId, active); + return convertWorkflows(instances); } catch(JbpmException e) { @@ -829,12 +848,35 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine } } - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getWorkflowById(java.lang - * .String) + @SuppressWarnings("unchecked") + private List getProcessInstances(final Long processDefId, final Boolean active) + { + return (List) jbpmTemplate.execute(new JbpmCallback() + { + public Object doInJbpm(JbpmContext context) + { + Session session = context.getSession(); + Criteria criteria = session.createCriteria(ProcessInstance.class); + if(processDefId!=null) + { + Criteria definitionCriteria = criteria.createCriteria("processDefinition"); + definitionCriteria.add(Restrictions.eq("id", processDefId)); + } + if(Boolean.TRUE.equals(active)) + { + criteria.add(Restrictions.isNull("end")); + } + else if(Boolean.FALSE.equals(active)) + { + criteria.add(Restrictions.isNotNull("end")); + } + return criteria.list(); + } + }); + } + + /** + * {@inheritDoc} */ public WorkflowInstance getWorkflowById(final String workflowId) { @@ -1573,15 +1615,9 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine { return (List) jbpmTemplate.execute(new JbpmCallback() { - @SuppressWarnings("deprecation") public List doInJbpm(JbpmContext context) { Session session = context.getSession(); - - if ((query.getProcessName() != null) && (tenantService.isEnabled())) - { - query.setProcessName(tenantService.getName(query.getProcessName())); - } Criteria criteria = createTaskQueryCriteria(session, query); List tasks = criteria.list(); return getWorkflowTasks(tasks); diff --git a/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java b/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java index e032423783..1a04a32de2 100644 --- a/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java +++ b/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java @@ -24,7 +24,6 @@ import java.util.List; import java.util.Map; import org.alfresco.service.Auditable; -import org.alfresco.service.PublicService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; @@ -235,6 +234,32 @@ public interface WorkflowService */ @Auditable(parameters = {"workflowDefinitionId"}) public List getWorkflows(String workflowDefinitionId); + + /** + * Gets all active workflow instances. + * + * @return the list of "in-flight" workflow instances + * @since4.0 + */ + @Auditable + public List getActiveWorkflows(); + + /** + * Gets all completed workflow instances. + * + * @return the list of "in-flight" workflow instances + * @since 4.0 + */ + @Auditable + public List getCompletedWorkflows(); + + /** + * Gets all workflow instances (both active and completed). + * + * @return the list of "in-flight" workflow instances + * @since 4.0 + */ + public List getWorkflows(); /** * Gets a specific workflow instances