TSK-1333: Add history events for cancelled/terminated tasks
This commit is contained in:
parent
5030415f17
commit
b7237021e2
|
@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
|
||||||
import acceptance.security.JaasExtension;
|
import acceptance.security.JaasExtension;
|
||||||
import acceptance.security.WithAccessId;
|
import acceptance.security.WithAccessId;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
|
||||||
|
@ -19,17 +18,10 @@ import pro.taskana.task.api.TaskState;
|
||||||
import pro.taskana.task.api.models.Task;
|
import pro.taskana.task.api.models.Task;
|
||||||
|
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class CreateHistoryEventOnCancelClaimAccTest extends AbstractAccTest {
|
class CreateHistoryEventOnTaskCancelClaimAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
private TaskService taskService;
|
private final TaskService taskService = taskanaEngine.getTaskService();
|
||||||
private SimpleHistoryServiceImpl historyService;
|
private final SimpleHistoryServiceImpl historyService = getHistoryService();
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setUp() {
|
|
||||||
|
|
||||||
taskService = taskanaEngine.getTaskService();
|
|
||||||
historyService = getHistoryService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
@WithAccessId(user = "admin")
|
||||||
@Test
|
@Test
|
|
@ -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");
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
|
||||||
import acceptance.security.JaasExtension;
|
import acceptance.security.JaasExtension;
|
||||||
import acceptance.security.WithAccessId;
|
import acceptance.security.WithAccessId;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
|
||||||
|
@ -19,17 +18,10 @@ import pro.taskana.task.api.TaskState;
|
||||||
import pro.taskana.task.api.models.Task;
|
import pro.taskana.task.api.models.Task;
|
||||||
|
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class CreateHistoryEventOnClaimAccTest extends AbstractAccTest {
|
class CreateHistoryEventOnTaskClaimAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
private TaskService taskService;
|
private final TaskService taskService = taskanaEngine.getTaskService();
|
||||||
private SimpleHistoryServiceImpl historyService;
|
private final SimpleHistoryServiceImpl historyService = getHistoryService();
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setUp() {
|
|
||||||
|
|
||||||
taskService = taskanaEngine.getTaskService();
|
|
||||||
historyService = getHistoryService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
@WithAccessId(user = "admin")
|
||||||
@Test
|
@Test
|
|
@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
|
||||||
import acceptance.security.JaasExtension;
|
import acceptance.security.JaasExtension;
|
||||||
import acceptance.security.WithAccessId;
|
import acceptance.security.WithAccessId;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
|
||||||
|
@ -19,17 +18,10 @@ import pro.taskana.task.api.TaskState;
|
||||||
import pro.taskana.task.api.models.Task;
|
import pro.taskana.task.api.models.Task;
|
||||||
|
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class CreateHistoryEventOnCompletionAccTest extends AbstractAccTest {
|
class CreateHistoryEventOnTaskCompletionAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
private TaskService taskService;
|
private final TaskService taskService = taskanaEngine.getTaskService();
|
||||||
private SimpleHistoryServiceImpl historyService;
|
private final SimpleHistoryServiceImpl historyService = getHistoryService();
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setUp() {
|
|
||||||
|
|
||||||
taskService = taskanaEngine.getTaskService();
|
|
||||||
historyService = getHistoryService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
@WithAccessId(user = "admin")
|
||||||
@Test
|
@Test
|
|
@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
|
||||||
import acceptance.security.JaasExtension;
|
import acceptance.security.JaasExtension;
|
||||||
import acceptance.security.WithAccessId;
|
import acceptance.security.WithAccessId;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
|
||||||
|
@ -21,15 +20,8 @@ import pro.taskana.task.internal.models.TaskImpl;
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class CreateHistoryEventOnTaskCreationAccTest extends AbstractAccTest {
|
class CreateHistoryEventOnTaskCreationAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
private TaskService taskService;
|
private final TaskService taskService = taskanaEngine.getTaskService();
|
||||||
private SimpleHistoryServiceImpl historyService;
|
private final SimpleHistoryServiceImpl historyService = getHistoryService();
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setUp() {
|
|
||||||
|
|
||||||
taskService = taskanaEngine.getTaskService();
|
|
||||||
historyService = getHistoryService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@WithAccessId(user = "admin")
|
@WithAccessId(user = "admin")
|
||||||
|
|
|
@ -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");
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
|
||||||
import acceptance.security.JaasExtension;
|
import acceptance.security.JaasExtension;
|
||||||
import acceptance.security.WithAccessId;
|
import acceptance.security.WithAccessId;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
|
||||||
|
@ -17,17 +16,10 @@ import pro.taskana.simplehistory.impl.mappings.HistoryQueryMapper;
|
||||||
import pro.taskana.task.api.TaskService;
|
import pro.taskana.task.api.TaskService;
|
||||||
|
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class CreateHistoryEventOnTransferAccTest extends AbstractAccTest {
|
class CreateHistoryEventOnTaskTransferAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
private TaskService taskService;
|
private final TaskService taskService = taskanaEngine.getTaskService();
|
||||||
private SimpleHistoryServiceImpl historyService;
|
private final SimpleHistoryServiceImpl historyService = getHistoryService();
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setUp() {
|
|
||||||
|
|
||||||
taskService = taskanaEngine.getTaskService();
|
|
||||||
historyService = getHistoryService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
@WithAccessId(user = "admin")
|
||||||
@Test
|
@Test
|
|
@ -6,7 +6,6 @@ import acceptance.AbstractAccTest;
|
||||||
import acceptance.security.JaasExtension;
|
import acceptance.security.JaasExtension;
|
||||||
import acceptance.security.WithAccessId;
|
import acceptance.security.WithAccessId;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
|
||||||
|
@ -20,15 +19,8 @@ import pro.taskana.task.api.models.Task;
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class CreateHistoryEventOnTaskUpdateAccTest extends AbstractAccTest {
|
class CreateHistoryEventOnTaskUpdateAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
private TaskService taskService;
|
private final TaskService taskService = taskanaEngine.getTaskService();
|
||||||
private SimpleHistoryServiceImpl historyService;
|
private final SimpleHistoryServiceImpl historyService = getHistoryService();
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setUp() {
|
|
||||||
|
|
||||||
taskService = taskanaEngine.getTaskService();
|
|
||||||
historyService = getHistoryService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@WithAccessId(user = "admin")
|
@WithAccessId(user = "admin")
|
||||||
|
|
|
@ -9,7 +9,6 @@ import acceptance.security.WithAccessId;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
|
||||||
|
@ -23,15 +22,8 @@ import pro.taskana.task.api.exceptions.TaskNotFoundException;
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class DeleteHistoryEventsOnTaskDeletionAccTest extends AbstractAccTest {
|
class DeleteHistoryEventsOnTaskDeletionAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
private TaskService taskService;
|
private final TaskService taskService = taskanaEngine.getTaskService();
|
||||||
private SimpleHistoryServiceImpl historyService;
|
private final SimpleHistoryServiceImpl historyService = getHistoryService();
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setUp() {
|
|
||||||
|
|
||||||
taskService = taskanaEngine.getTaskService();
|
|
||||||
historyService = getHistoryService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@WithAccessId(user = "admin")
|
@WithAccessId(user = "admin")
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -39,10 +39,12 @@ import pro.taskana.common.internal.util.CheckedFunction;
|
||||||
import pro.taskana.common.internal.util.IdGenerator;
|
import pro.taskana.common.internal.util.IdGenerator;
|
||||||
import pro.taskana.common.internal.util.Pair;
|
import pro.taskana.common.internal.util.Pair;
|
||||||
import pro.taskana.common.internal.util.Triplet;
|
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.ClaimCancelledEvent;
|
||||||
import pro.taskana.spi.history.api.events.task.ClaimedEvent;
|
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.CompletedEvent;
|
||||||
import pro.taskana.spi.history.api.events.task.CreatedEvent;
|
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.api.events.task.UpdatedEvent;
|
||||||
import pro.taskana.spi.history.internal.HistoryEventManager;
|
import pro.taskana.spi.history.internal.HistoryEventManager;
|
||||||
import pro.taskana.task.api.CallbackState;
|
import pro.taskana.task.api.CallbackState;
|
||||||
|
@ -796,13 +798,26 @@ public class TaskServiceImpl implements TaskService {
|
||||||
public Task cancelTask(String taskId)
|
public Task cancelTask(String taskId)
|
||||||
throws TaskNotFoundException, InvalidStateException, NotAuthorizedException {
|
throws TaskNotFoundException, InvalidStateException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to cancelTask(task = {})", taskId);
|
LOGGER.debug("entry to cancelTask(task = {})", taskId);
|
||||||
|
|
||||||
|
Task cancelledTask;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
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 {
|
} finally {
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
LOGGER.debug("exit from cancelTask()");
|
LOGGER.debug("exit from cancelTask()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return cancelledTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -812,13 +827,25 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.TASK_ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.TASK_ADMIN);
|
||||||
|
|
||||||
|
Task terminatedTask;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
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 {
|
} finally {
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
LOGGER.debug("exit from terminateTask()");
|
LOGGER.debug("exit from terminateTask()");
|
||||||
}
|
}
|
||||||
|
return terminatedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> findTasksIdsAffectedByClassificationChange(String classificationId) {
|
public List<String> findTasksIdsAffectedByClassificationChange(String classificationId) {
|
||||||
|
|
Loading…
Reference in New Issue