diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java index f72efbf7d2..5b713ffb03 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java @@ -749,10 +749,25 @@ public class JBPMEngine extends BPMEngine /* (non-Javadoc) * @see org.alfresco.repo.workflow.TaskComponent#getTaskById(java.lang.String) */ - public WorkflowTask getTaskById(String taskId) + public WorkflowTask getTaskById(final String taskId) { - // TODO Auto-generated method stub - return null; + try + { + return (WorkflowTask) jbpmTemplate.execute(new JbpmCallback() + { + public Object doInJbpm(JbpmContext context) + { + // retrieve task + TaskMgmtSession taskSession = context.getTaskMgmtSession(); + TaskInstance taskInstance = taskSession.loadTaskInstance(getJbpmId(taskId)); + return createWorkflowTask(taskInstance); + } + }); + } + catch(JbpmException e) + { + throw new WorkflowException("Failed to retrieve task '" + taskId + "'", e); + } } diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngineTest.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngineTest.java index bd6c0209f7..5abfd40808 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngineTest.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngineTest.java @@ -345,6 +345,23 @@ public class JBPMEngineTest extends BaseSpringTest assertEquals(WorkflowTaskState.COMPLETED, updatedTask.state); } + public void testGetTask() + { + WorkflowDefinition workflowDef = getTestDefinition(); + Map parameters = new HashMap(); + parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "reviewer"), "admin"); + parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "testNode"), testNodeRef); + WorkflowPath path = workflowComponent.startWorkflow(workflowDef.id, parameters); + assertNotNull(path); + assertNotNull(path); + List tasks1 = workflowComponent.getTasksForWorkflowPath(path.id); + assertNotNull(tasks1); + assertEquals(1, tasks1.size()); + WorkflowTask getTask = taskComponent.getTaskById(tasks1.get(0).id); + assertNotNull(getTask); + assertEquals(getTask.name, tasks1.get(0).name); + } + public void testNodeRef() {