TSK-1333: Add history events for cancelled/terminated tasks

This commit is contained in:
Joerg Heffner 2020-07-14 13:42:33 +02:00 committed by gitgoodjhe
parent 5030415f17
commit b7237021e2
12 changed files with 163 additions and 76 deletions

View File

@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
import acceptance.security.JaasExtension;
import acceptance.security.WithAccessId;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -19,17 +18,10 @@ import pro.taskana.task.api.TaskState;
import pro.taskana.task.api.models.Task;
@ExtendWith(JaasExtension.class)
class CreateHistoryEventOnCancelClaimAccTest extends AbstractAccTest {
class CreateHistoryEventOnTaskCancelClaimAccTest extends AbstractAccTest {
private TaskService taskService;
private SimpleHistoryServiceImpl historyService;
@BeforeEach
public void setUp() {
taskService = taskanaEngine.getTaskService();
historyService = getHistoryService();
}
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@WithAccessId(user = "admin")
@Test

View File

@ -0,0 +1,45 @@
package acceptance.events;
import static org.assertj.core.api.Assertions.assertThat;
import acceptance.AbstractAccTest;
import acceptance.security.JaasExtension;
import acceptance.security.WithAccessId;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import pro.taskana.simplehistory.impl.HistoryEventImpl;
import pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl;
import pro.taskana.task.api.TaskService;
import pro.taskana.task.api.TaskState;
import pro.taskana.task.api.models.Task;
@ExtendWith(JaasExtension.class)
class CreateHistoryEventOnTaskCancellationAccTest extends AbstractAccTest {
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@Test
@WithAccessId(user = "admin")
void should_CreateCancelledHistoryEvent_When_TaskIsCancelled() throws Exception {
final String taskId = "TKI:000000000000000000000000000000000001";
List<HistoryEventImpl> listEvents = historyService.createHistoryQuery().taskIdIn(taskId).list();
assertThat(listEvents).isEmpty();
assertThat(taskService.getTask(taskId).getState()).isEqualTo(TaskState.CLAIMED);
Task task = taskService.cancelTask(taskId);
assertThat(task.getState()).isEqualTo(TaskState.CANCELLED);
listEvents = historyService.createHistoryQuery().taskIdIn(taskId).list();
assertThat(listEvents).hasSize(1);
assertThat(historyService.getHistoryEvent(listEvents.get(0).getId()).getEventType())
.isEqualTo("TASK_CANCELLED");
}
}

View File

@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
import acceptance.security.JaasExtension;
import acceptance.security.WithAccessId;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -19,17 +18,10 @@ import pro.taskana.task.api.TaskState;
import pro.taskana.task.api.models.Task;
@ExtendWith(JaasExtension.class)
class CreateHistoryEventOnClaimAccTest extends AbstractAccTest {
class CreateHistoryEventOnTaskClaimAccTest extends AbstractAccTest {
private TaskService taskService;
private SimpleHistoryServiceImpl historyService;
@BeforeEach
public void setUp() {
taskService = taskanaEngine.getTaskService();
historyService = getHistoryService();
}
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@WithAccessId(user = "admin")
@Test

View File

@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
import acceptance.security.JaasExtension;
import acceptance.security.WithAccessId;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -19,17 +18,10 @@ import pro.taskana.task.api.TaskState;
import pro.taskana.task.api.models.Task;
@ExtendWith(JaasExtension.class)
class CreateHistoryEventOnCompletionAccTest extends AbstractAccTest {
class CreateHistoryEventOnTaskCompletionAccTest extends AbstractAccTest {
private TaskService taskService;
private SimpleHistoryServiceImpl historyService;
@BeforeEach
public void setUp() {
taskService = taskanaEngine.getTaskService();
historyService = getHistoryService();
}
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@WithAccessId(user = "admin")
@Test

View File

@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
import acceptance.security.JaasExtension;
import acceptance.security.WithAccessId;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -21,15 +20,8 @@ import pro.taskana.task.internal.models.TaskImpl;
@ExtendWith(JaasExtension.class)
class CreateHistoryEventOnTaskCreationAccTest extends AbstractAccTest {
private TaskService taskService;
private SimpleHistoryServiceImpl historyService;
@BeforeEach
public void setUp() {
taskService = taskanaEngine.getTaskService();
historyService = getHistoryService();
}
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@Test
@WithAccessId(user = "admin")

View File

@ -0,0 +1,45 @@
package acceptance.events;
import static org.assertj.core.api.Assertions.assertThat;
import acceptance.AbstractAccTest;
import acceptance.security.JaasExtension;
import acceptance.security.WithAccessId;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import pro.taskana.simplehistory.impl.HistoryEventImpl;
import pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl;
import pro.taskana.task.api.TaskService;
import pro.taskana.task.api.TaskState;
import pro.taskana.task.api.models.Task;
@ExtendWith(JaasExtension.class)
class CreateHistoryEventOnTaskTerminationAccTest extends AbstractAccTest {
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@Test
@WithAccessId(user = "admin")
void should_CreateTerminatedHistoryEvent_When_TaskIsTerminated() throws Exception {
final String taskId = "TKI:000000000000000000000000000000000001";
List<HistoryEventImpl> listEvents = historyService.createHistoryQuery().taskIdIn(taskId).list();
assertThat(listEvents).isEmpty();
assertThat(taskService.getTask(taskId).getState()).isEqualTo(TaskState.CLAIMED);
Task task = taskService.terminateTask(taskId);
assertThat(task.getState()).isEqualTo(TaskState.TERMINATED);
listEvents = historyService.createHistoryQuery().taskIdIn(taskId).list();
assertThat(listEvents).hasSize(1);
assertThat(historyService.getHistoryEvent(listEvents.get(0).getId()).getEventType())
.isEqualTo("TASK_TERMINATED");
}
}

View File

@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
import acceptance.security.JaasExtension;
import acceptance.security.WithAccessId;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -17,17 +16,10 @@ import pro.taskana.simplehistory.impl.mappings.HistoryQueryMapper;
import pro.taskana.task.api.TaskService;
@ExtendWith(JaasExtension.class)
class CreateHistoryEventOnTransferAccTest extends AbstractAccTest {
class CreateHistoryEventOnTaskTransferAccTest extends AbstractAccTest {
private TaskService taskService;
private SimpleHistoryServiceImpl historyService;
@BeforeEach
public void setUp() {
taskService = taskanaEngine.getTaskService();
historyService = getHistoryService();
}
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@WithAccessId(user = "admin")
@Test

View File

@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
import acceptance.security.JaasExtension;
import acceptance.security.WithAccessId;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -20,15 +19,8 @@ import pro.taskana.task.api.models.Task;
@ExtendWith(JaasExtension.class)
class CreateHistoryEventOnTaskUpdateAccTest extends AbstractAccTest {
private TaskService taskService;
private SimpleHistoryServiceImpl historyService;
@BeforeEach
public void setUp() {
taskService = taskanaEngine.getTaskService();
historyService = getHistoryService();
}
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@Test
@WithAccessId(user = "admin")

View File

@ -9,7 +9,6 @@ import acceptance.security.WithAccessId;
import java.util.Arrays;
import java.util.List;
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -23,15 +22,8 @@ import pro.taskana.task.api.exceptions.TaskNotFoundException;
@ExtendWith(JaasExtension.class)
class DeleteHistoryEventsOnTaskDeletionAccTest extends AbstractAccTest {
private TaskService taskService;
private SimpleHistoryServiceImpl historyService;
@BeforeEach
public void setUp() {
taskService = taskanaEngine.getTaskService();
historyService = getHistoryService();
}
private final TaskService taskService = taskanaEngine.getTaskService();
private final SimpleHistoryServiceImpl historyService = getHistoryService();
@Test
@WithAccessId(user = "admin")

View File

@ -0,0 +1,13 @@
package pro.taskana.spi.history.api.events.task;
import pro.taskana.task.api.models.Task;
/** Event fired if a task is cancelled. */
public class CancelledEvent extends TaskEvent {
public CancelledEvent(String id, Task task, String userId) {
super(id, task, userId, null);
eventType = "TASK_CANCELLED";
created = task.getModified();
}
}

View File

@ -0,0 +1,13 @@
package pro.taskana.spi.history.api.events.task;
import pro.taskana.task.api.models.Task;
/** Event fired if a task is terminated. */
public class TerminatedEvent extends TaskEvent {
public TerminatedEvent(String id, Task task, String userId) {
super(id, task, userId, null);
eventType = "TASK_TERMINATED";
created = task.getModified();
}
}

View File

@ -39,10 +39,12 @@ import pro.taskana.common.internal.util.CheckedFunction;
import pro.taskana.common.internal.util.IdGenerator;
import pro.taskana.common.internal.util.Pair;
import pro.taskana.common.internal.util.Triplet;
import pro.taskana.spi.history.api.events.task.CancelledEvent;
import pro.taskana.spi.history.api.events.task.ClaimCancelledEvent;
import pro.taskana.spi.history.api.events.task.ClaimedEvent;
import pro.taskana.spi.history.api.events.task.CompletedEvent;
import pro.taskana.spi.history.api.events.task.CreatedEvent;
import pro.taskana.spi.history.api.events.task.TerminatedEvent;
import pro.taskana.spi.history.api.events.task.UpdatedEvent;
import pro.taskana.spi.history.internal.HistoryEventManager;
import pro.taskana.task.api.CallbackState;
@ -796,13 +798,26 @@ public class TaskServiceImpl implements TaskService {
public Task cancelTask(String taskId)
throws TaskNotFoundException, InvalidStateException, NotAuthorizedException {
LOGGER.debug("entry to cancelTask(task = {})", taskId);
Task cancelledTask;
try {
taskanaEngine.openConnection();
return terminateCancelCommonActions(taskId, TaskState.CANCELLED);
cancelledTask = terminateCancelCommonActions(taskId, TaskState.CANCELLED);
if (HistoryEventManager.isHistoryEnabled()) {
historyEventManager.createEvent(
new CancelledEvent(
IdGenerator.generateWithPrefix(ID_PREFIX_HISTORY_EVENT),
cancelledTask,
CurrentUserContext.getUserid()));
}
} finally {
taskanaEngine.returnConnection();
LOGGER.debug("exit from cancelTask()");
}
return cancelledTask;
}
@Override
@ -812,13 +827,25 @@ public class TaskServiceImpl implements TaskService {
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.TASK_ADMIN);
Task terminatedTask;
try {
taskanaEngine.openConnection();
return terminateCancelCommonActions(taskId, TaskState.TERMINATED);
terminatedTask = terminateCancelCommonActions(taskId, TaskState.TERMINATED);
if (HistoryEventManager.isHistoryEnabled()) {
historyEventManager.createEvent(
new TerminatedEvent(
IdGenerator.generateWithPrefix(ID_PREFIX_HISTORY_EVENT),
terminatedTask,
CurrentUserContext.getUserid()));
}
} finally {
taskanaEngine.returnConnection();
LOGGER.debug("exit from terminateTask()");
}
return terminatedTask;
}
public List<String> findTasksIdsAffectedByClassificationChange(String classificationId) {