@Override public void claim(long taskId, String userId) { synchronized (ksession) { taskService.claim(taskId, userId); } }
@Test public void testInvalidTask() { try { taskService.claim(-1, "Darth Vader"); } catch (PermissionDeniedException e) { if ("Task '-1' not found".equals(e.getMessage())) { return; } else { throw e; } } }
@Test public void testForwardTaskWithMsgEvents() { Task task = new TaskFluent().setName("This is my task name") .setAdminUser("Administrator") .addPotentialUser("Administrator") .addPotentialUser("Darth Vader") .getTask(); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); taskService.claim(taskId, "Administrator"); assertAuditTaskInfo("Administrator", "Reserved", taskId); taskService.forward(taskId, "Administrator", "Darth Vader"); List<TaskEvent> taskEvents = taskAuditService.getAllTaskEvents(taskId, new QueryFilter()); Assertions.assertThat(taskEvents).hasSize(3); Assertions.assertThat(taskEvents.get(0).getType()).isEqualTo(TaskEventType.ADDED); Assertions.assertThat(taskEvents.get(0).getUserId()).isNull(); Assertions.assertThat(taskEvents.get(1).getType()).isEqualTo(TaskEventType.CLAIMED); Assertions.assertThat(taskEvents.get(1).getUserId()).isEqualTo("Administrator"); Assertions.assertThat(taskEvents.get(2).getType()).isEqualTo(TaskEventType.FORWARDED); Assertions.assertThat(taskEvents.get(2).getUserId()).isEqualTo("Administrator"); Assertions.assertThat(taskEvents.get(2).getMessage()).isNotNull(); Assertions.assertThat(taskEvents.get(2).getMessage()).contains("Darth Vader"); }
@Test(timeout = 15000) public void testTaskNotStartedReassign() throws Exception { Reader reader = new InputStreamReader(getClass().getResourceAsStream(MvelFilePath.DeadlineWithMultipleReassignment)); Map<String, Object> vars = new HashMap<String, Object>(); vars.put("now", new Date()); Task task = (InternalTask) TaskFactory.evalTask(reader, vars); Environment environment = EnvironmentFactory.newEnvironment(); Map<String, Object> inputVars = new HashMap<String, Object>(); inputVars.put("NotStartedReassign", "[users:Tony Stark,Bobba Fet,Jabba Hutt|groups:]@[2s]"); ((InternalTask) task).setDeadlines(HumanTaskHandlerHelper.setDeadlines(inputVars, Collections.emptyList(), environment)); taskService.addTask(task, inputVars); CountDownTaskEventListener countDownListener = new CountDownTaskEventListener(1, true, false); addCountDownListner(countDownListener); long taskId = task.getId(); String []owners = new String[] { "Tony Stark", "Bobba Fet", "Jabba Hutt" }; for(String owner : owners) { countDownListener.reset(1); taskService.claim(taskId, owner); task = taskService.getTaskById(taskId); assertThat(task.getTaskData().getActualOwner().getId()).isEqualTo(owner); countDownListener.waitTillCompleted(); task = taskService.getTaskById(taskId); assertThat(task.getTaskData().getActualOwner()).as("Task was not reclaimed").isNull(); } taskService.claim(taskId, "Bobba Fet"); taskService.start(taskId, "Bobba Fet"); taskService.complete(taskId, "Bobba Fet", Collections.<String, Object>emptyMap()); }
@Test public void testExitAfterClaim() { // One potential owner, should go straight to state Reserved Task task = new TaskFluent().setName("This is my task name 2") .addPotentialGroup("Knights Templer") .setAdminUser("Administrator") .getTask(); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); List<TaskSummary> allGroupAuditTasks = taskService.getTasksAssignedAsPotentialOwner("salaboy", null, null, null); assertEquals(1, allGroupAuditTasks.size()); assertTrue(allGroupAuditTasks.get(0).getStatusId().equals("Ready")); taskService.claim(taskId, "Darth Vader"); allGroupAuditTasks = taskService.getTasksAssignedAsPotentialOwner("salaboy", null, null, null); assertEquals(0, allGroupAuditTasks.size()); allGroupAuditTasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", null, null, null); assertEquals(1, allGroupAuditTasks.size()); assertTrue(allGroupAuditTasks.get(0).getStatusId().equals("Reserved")); taskService.exit(taskId, "Administrator"); List<AuditTask> allHistoryAuditTasks = taskAuditService.getAllAuditTasks(new QueryFilter(0, 10)); assertEquals(1, allHistoryAuditTasks.size()); allGroupAuditTasks = taskService.getTasksAssignedAsPotentialOwner("salaboy", null, null, null); assertEquals(0, allGroupAuditTasks.size()); }
@Test public void testSkipFromReserved() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { skipable = true} ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Go straight from Ready taskService.claim(taskId, "Darth Vader"); // Check is Complete taskService.skip(taskId, "Darth Vader"); taskService.getTaskById(taskId); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Obsolete, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); }
@Test public void testClaimWithGroupAssignee() throws Exception { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new Group('Knights Templer' )], businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // A Task with multiple potential owners moves to "Ready" state until someone claims it. Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Ready, task1.getTaskData().getStatus()); taskService.claim(taskId, "Darth Vader"); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task2.getTaskData().getStatus()); assertEquals("Darth Vader", task2.getTaskData().getActualOwner().getId()); }
@Test public void testClaimWithMultiplePotentialOwners() throws Exception { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'),new User('Darth Vader') ], businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // A Task with multiple potential owners moves to "Ready" state until someone claims it. Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Ready, task1.getTaskData().getStatus()); taskService.claim(taskId, "Darth Vader"); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task2.getTaskData().getStatus()); assertEquals("Darth Vader", task2.getTaskData().getActualOwner().getId()); }
public void testReleaseFromReserved() { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name'})"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Go straight from Ready to Inprogress taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check is Released taskService.release(taskId, "Darth Vader"); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.Ready, task2.getTaskData().getStatus()); assertNull(task2.getTaskData().getActualOwner()); }
@Test public void testForwardReservedWithBusinessAdministrator() throws Exception { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Claim and Reserved taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check is Delegated taskService.forward(taskId, "Administrator", "Tony Stark"); Task task2 = taskService.getTaskById(taskId); User user = createUser("Darth Vader"); assertTrue(task2.getPeopleAssignments().getPotentialOwners().contains(user)); user = createUser("Tony Stark"); assertTrue(task2.getPeopleAssignments().getPotentialOwners().contains(user)); assertNull(task2.getTaskData().getActualOwner()); assertEquals(Status.Ready, task2.getTaskData().getStatus()); }
@Test public void testForwardFromReserved() throws Exception { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Claim and Reserved taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check is Delegated taskService.forward(taskId, "Darth Vader", "Tony Stark"); Task task2 = taskService.getTaskById(taskId); User user = createUser("Darth Vader"); assertFalse(task2.getPeopleAssignments().getPotentialOwners().contains(user)); user = createUser("Tony Stark"); assertTrue(task2.getPeopleAssignments().getPotentialOwners().contains(user)); assertNull(task2.getTaskData().getActualOwner()); assertEquals(Status.Ready, task2.getTaskData().getStatus()); }
@Test public void testDelegateFromReserved() throws Exception { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Claim and Reserved taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check is Delegated taskService.delegate(taskId, "Darth Vader", "Tony Stark"); Task task2 = taskService.getTaskById(taskId); User user = createUser("Darth Vader"); assertTrue(task2.getPeopleAssignments().getPotentialOwners().contains(user)); user = createUser("Tony Stark"); assertTrue(task2.getPeopleAssignments().getPotentialOwners().contains(user)); assertEquals("Tony Stark", task2.getTaskData().getActualOwner().getId()); assertEquals(Status.Reserved, task2.getTaskData().getStatus()); }
taskService.claim(taskId, "Darth Vader");
@Test public void testSuspendFromReservedWithIncorrectUser() { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Check is Reserved taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check is not changed PermissionDeniedException denied = null; try { taskService.suspend(taskId, "Bobba Fet"); } catch (PermissionDeniedException e) { denied = e; } assertNotNull("Should get permissed denied exception", denied); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task2.getTaskData().getStatus()); assertEquals("Darth Vader", task2.getTaskData().getActualOwner().getId()); }
taskService.claim(taskId, "Darth Vader");
@Test public void testResumeFromReservedWithIncorrectUser() { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Check is Reserved taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check not changed PermissionDeniedException denied = null; try { taskService.suspend(taskId, "Bobba Fet"); } catch (PermissionDeniedException e) { denied = e; } assertNotNull("Should get permissed denied exception", denied); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task2.getTaskData().getStatus()); assertEquals("Darth Vader", task2.getTaskData().getActualOwner().getId()); }
@Test public void testReleaseWithIncorrectUser() { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Go straight from Ready to Inprogress taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check is not changed PermissionDeniedException denied = null; try { taskService.release(taskId, "Bobba Fet"); } catch (PermissionDeniedException e) { denied = e; } assertNotNull("Should get permissed denied exception", denied); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task2.getTaskData().getStatus()); assertEquals("Darth Vader", task2.getTaskData().getActualOwner().getId()); }
@Test public void testSuspendFromReserved() { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Check is Reserved taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check is Suspended taskService.suspend(taskId, "Darth Vader"); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task2.getTaskData().getPreviousStatus()); assertEquals(Status.Suspended, task2.getTaskData().getStatus()); assertEquals("Darth Vader", task2.getTaskData().getActualOwner().getId()); }
@Test public void testResumeFromReserved() { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Check is Reserved taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); // Check is suspended taskService.suspend(taskId, "Darth Vader"); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task2.getTaskData().getPreviousStatus()); assertEquals(Status.Suspended, task2.getTaskData().getStatus()); assertEquals("Darth Vader", task2.getTaskData().getActualOwner().getId()); // Check is Resumed taskService.resume(taskId, "Darth Vader"); Task task3 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task3.getTaskData().getStatus()); assertEquals(Status.Suspended, task3.getTaskData().getPreviousStatus()); assertEquals("Darth Vader", task3.getTaskData().getActualOwner().getId()); }
@Test public void testResumeFromCompleted() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); taskService.claim(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); taskService.start(taskId, "Darth Vader"); task1 = taskService.getTaskById(taskId); assertEquals(Status.InProgress, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); taskService.complete(taskId, "Darth Vader", null); task1 = taskService.getTaskById(taskId); assertEquals(Status.Completed, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); assertThatExceptionOfType(PermissionDeniedException.class).isThrownBy(() -> { taskService.resume(taskId, "Darth Vader"); }) .withMessageContaining("was unable to execute operation 'Resume' on task id"); task1 = taskService.getTaskById(taskId); assertEquals(Status.Completed, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); }