diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskMapper.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskMapper.java index 808ada0c1..67282b4a1 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskMapper.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskMapper.java @@ -130,6 +130,14 @@ public interface TaskMapper { + "WHERE ID = #{id}") void update(TaskImpl task); + @Update( + "UPDATE TASK SET MODIFIED = #{modified}, STATE = #{state}, OWNER = #{owner} WHERE ID = #{id}") + void requestReview(TaskImpl task); + + @Update( + "UPDATE TASK SET MODIFIED = #{modified}, STATE = #{state}, OWNER = #{owner} WHERE ID = #{id}") + void requestChanges(TaskImpl task); + @Delete("DELETE FROM TASK WHERE ID = #{id}") void delete(String id); diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java index 0ecdc9cd0..ba624dadf 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java @@ -532,7 +532,7 @@ public class TaskServiceImpl implements TaskService { new TaskUpdatedEvent( IdGenerator.generateWithPrefix(IdGenerator.ID_PREFIX_TASK_HISTORY_EVENT), task, - taskanaEngine.getEngine().getCurrentUserContext().getUserid(), + userId, changeDetails)); } @@ -1222,7 +1222,7 @@ public class TaskServiceImpl implements TaskService { new TaskClaimedEvent( IdGenerator.generateWithPrefix(IdGenerator.ID_PREFIX_TASK_HISTORY_EVENT), task, - taskanaEngine.getEngine().getCurrentUserContext().getUserid(), + userId, changeDetails)); } } finally { @@ -1258,7 +1258,7 @@ public class TaskServiceImpl implements TaskService { task.setOwner(null); task.setModified(Instant.now()); - taskMapper.update(task); + taskMapper.requestReview(task); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Requested review for Task '{}' by user '{}'.", taskId, userId); } @@ -1270,7 +1270,7 @@ public class TaskServiceImpl implements TaskService { new TaskRequestReviewEvent( IdGenerator.generateWithPrefix(IdGenerator.ID_PREFIX_TASK_HISTORY_EVENT), task, - taskanaEngine.getEngine().getCurrentUserContext().getUserid(), + userId, changeDetails)); } @@ -1307,7 +1307,7 @@ public class TaskServiceImpl implements TaskService { task.setOwner(null); task.setModified(Instant.now()); - taskMapper.update(task); + taskMapper.requestChanges(task); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Requested changes for Task '{}' by user '{}'.", taskId, userId); } @@ -1319,7 +1319,7 @@ public class TaskServiceImpl implements TaskService { new TaskRequestChangesEvent( IdGenerator.generateWithPrefix(IdGenerator.ID_PREFIX_TASK_HISTORY_EVENT), task, - taskanaEngine.getEngine().getCurrentUserContext().getUserid(), + userId, changeDetails)); } task = (TaskImpl) afterRequestChangesManager.afterRequestChanges(task); @@ -1442,7 +1442,7 @@ public class TaskServiceImpl implements TaskService { new TaskClaimCancelledEvent( IdGenerator.generateWithPrefix(IdGenerator.ID_PREFIX_TASK_HISTORY_EVENT), task, - taskanaEngine.getEngine().getCurrentUserContext().getUserid(), + userId, changeDetails)); } } finally { @@ -1455,12 +1455,13 @@ public class TaskServiceImpl implements TaskService { throws TaskNotFoundException, InvalidOwnerException, InvalidStateException, NotAuthorizedException { String userId = taskanaEngine.getEngine().getCurrentUserContext().getUserid(); - TaskImpl task = (TaskImpl) this.getTask(taskId); - if (reviewRequiredManager.reviewRequired(task)) { - return requestReview(taskId); - } + TaskImpl task; try { taskanaEngine.openConnection(); + task = (TaskImpl) this.getTask(taskId); + if (reviewRequiredManager.reviewRequired(task)) { + return requestReview(taskId); + } if (task.getState() == TaskState.COMPLETED) { return task; @@ -1485,7 +1486,7 @@ public class TaskServiceImpl implements TaskService { new TaskCompletedEvent( IdGenerator.generateWithPrefix(IdGenerator.ID_PREFIX_TASK_HISTORY_EVENT), task, - taskanaEngine.getEngine().getCurrentUserContext().getUserid())); + userId)); } } finally { taskanaEngine.returnConnection();