From de57698423855a09b520aab1a5ef8f47368ba1b6 Mon Sep 17 00:00:00 2001 From: Frederik Heremans Date: Wed, 2 May 2012 10:16:39 +0000 Subject: [PATCH] Merged BRANCHES/DEV/V4.0-BUG-FIX to HEAD: 35979: ALF-10278, ALF-13902: Ending task now done with the right assignee when unassigned (eg. not claimed from pool) or when workflow-owner completes the task assigned to someone else, without claiming first git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@35980 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../workflow/activiti/ActivitiTaskComponentTest.java | 6 ++++++ .../repo/workflow/activiti/ActivitiWorkflowEngine.java | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiTaskComponentTest.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiTaskComponentTest.java index b59b987f60..e714145702 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiTaskComponentTest.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiTaskComponentTest.java @@ -33,6 +33,7 @@ import java.util.List; import java.util.Map; import org.activiti.engine.history.HistoricDetail; +import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.history.HistoricVariableUpdate; import org.activiti.engine.task.Task; import org.alfresco.repo.workflow.BPMEngineRegistry; @@ -308,6 +309,11 @@ public class ActivitiTaskComponentTest extends AbstractActivitiComponentTest } Assert.assertTrue("Task variables are not flushed to process-instance", found); + + // Check task assignee, should be currently logged in user + HistoricTaskInstance hti = historyService.createHistoricTaskInstanceQuery().taskId(task.getId()).singleResult(); + assertNotNull(hti); + assertEquals("admin", hti.getAssignee()); } @SuppressWarnings("unchecked") diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java index 78d428642c..2a88bd016f 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java @@ -1347,6 +1347,15 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine String msg = messageService.getMessage(ERR_END_UNEXISTING_TASK, taskId); throw new WorkflowException(msg); } + + // Check if the assignee is equal to the current logged-in user. If not, assign task before ending + String currentUserName = AuthenticationUtil.getFullyAuthenticatedUser(); + if(task.getAssignee() == null || !task.getAssignee().equals(currentUserName)) { + taskService.setAssignee(localTaskId, currentUserName); + // Also update pojo used to set the outcome, this will read assignee as wel + task.setAssignee(currentUserName); + } + setOutcome(task, transition); taskService.complete(localTaskId); // The task should have a historicTaskInstance