@Override public Task getTaskById(long taskId) { synchronized (ksession) { return taskService.getTaskById(taskId); } }
protected long createAndAssertTask(String taskExpression, String actualOwner, int expectedPotentialOwners, String... expectedPotentialOwnerNames) { Task task = TaskFactory.evalTask(new StringReader(taskExpression)); assertPotentialOwners(task, expectedPotentialOwners); long taskId = taskService.addTask(task, Collections.emptyMap()); task = taskService.getTaskById(taskId); assertPotentialOwners(task, expectedPotentialOwners, expectedPotentialOwnerNames); assertActualOwner(task, actualOwner); return taskId; }
protected void completeTask(long taskId, long delay) { Task task = taskService.getTaskById(taskId); String owner = task.getTaskData().getActualOwner().getId(); logger.debug("Starting task {} with user {}",taskId,owner); taskService.start(taskId, owner); if (delay > 0) { try { Thread.sleep(delay); } catch (InterruptedException e) { // swallowing this exception } } taskService.complete(taskId, owner, data); } }
@Test public void testReleaseTask() { final String taskString = createTaskString(MULTI_ACTOR_ASSIGNMENTS, "MultiActorLoadBalancingTask"); long bobbasTaskId = createAndAssertTask(taskString, BOBBA_FET, 3, BOBBA_FET, DARTH_VADER, LUKE_CAGE); long vaderTaskId = createAndAssertTask(taskString, DARTH_VADER, 3, BOBBA_FET); taskService.release(bobbasTaskId, BOBBA_FET); Task bobbasTask = taskService.getTaskById(bobbasTaskId); Task vaderTask = taskService.getTaskById(vaderTaskId); assertActualOwner(bobbasTask, LUKE_CAGE); assertActualOwner(vaderTask, DARTH_VADER); }
@Test public void testAssignmentsWhenNoRuleWasFired() throws Exception { String str = "(with (new Task()) { priority = 51, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Ben Dover') ],businessAdministrators = [ new User('Administrator') ],}),"; str += "name = 'Not Bobbas tasks' })"; Task task = TaskFactory.evalTask(new StringReader(str)); assertPotentialOwners(task, 1); long taskId = taskService.addTask(task, Collections.emptyMap()); task = taskService.getTaskById(taskId); assertPotentialOwners(task, 0); User actualOwner = task.getTaskData().getActualOwner(); Assertions.assertThat(actualOwner).isNull(); }
@Test public void testExitFromReserved() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { skipable = false} ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet') ], 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(); task = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task.getTaskData().getStatus()); taskService.exit(taskId, "Administrator"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Exited, task1.getTaskData().getStatus()); }
@Test public void testExitFromReady() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { skipable = false} ), "; 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(); task = taskService.getTaskById(taskId); assertEquals(Status.Ready, task.getTaskData().getStatus()); taskService.exit(taskId, "Administrator"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Exited, task1.getTaskData().getStatus()); }
@Test public void testExitFromInProgress() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { skipable = false} ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet') ], 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(); task = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task.getTaskData().getStatus()); taskService.start(taskId, "Bobba Fet"); task = taskService.getTaskById(taskId); assertEquals(Status.InProgress, task.getTaskData().getStatus()); taskService.exit(taskId, "Administrator"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Exited, task1.getTaskData().getStatus()); }
@Test public void testExitNotAvailableToUsers() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { skipable = false} ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet')], 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(); task = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task.getTaskData().getStatus()); taskService.exit(taskId, "Administrator"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Exited, task1.getTaskData().getStatus()); List<TaskSummary> exitedTasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); assertEquals(0, exitedTasks.size()); }
@Test public void testExitPermissionDenied() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { skipable = false} ), "; 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(); task = taskService.getTaskById(taskId); assertEquals(Status.Ready, task.getTaskData().getStatus()); try { taskService.exit(taskId, "Darth Vader"); fail("Non admin user can't exit a task"); } catch (PermissionDeniedException e) { } Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Ready, task1.getTaskData().getStatus()); }
@Test public void testActivate() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { "; str += "businessAdministrators = [ new User('Darth Vader') ] } ),"; 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.activate(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(task1.getTaskData().getStatus(), Status.Ready); //When we are not using remoting the object is the same //assertTrue(task1.equals(task)); //When we use remoting this will be false //assertFalse(task1.equals(task)); }
@Test public void testNominateToUser() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { businessAdministrators = [ new User('Darth Vader'), new User('Bobba Fet') ] } ),"; 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(); List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>(1); User user = createUser("Jabba Hutt"); potentialOwners.add(user); taskService.nominate(taskId, "Darth Vader", potentialOwners); //shouldn't affect the assignments Task task1 = taskService.getTaskById(taskId); assertEquals(task1.getTaskData().getActualOwner().getId(), "Jabba Hutt"); assertEquals(task1.getTaskData().getStatus(), Status.Reserved); }
@Test public void testReleaseTask() { final String taskString = createTaskString(MULTI_ACTOR_ASSIGNMENTS, "MultiActorRoundRobinTask"); long taskId = createAndAssertTask(taskString, BOBBA_FET, 3, BOBBA_FET, DARTH_VADER, LUKE_CAGE); taskService.release(taskId, BOBBA_FET); Task task = taskService.getTaskById(taskId); assertActualOwner(task, DARTH_VADER); createAndAssertTask(taskString, LUKE_CAGE, 3, BOBBA_FET, DARTH_VADER, LUKE_CAGE); }
@Test public void testNewTaskWithNoPotentialOwners() { // 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() ) { 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(); // Task should remain in Created state with no actual owner Task task1 = taskService.getTaskById(taskId); assertEquals(task1.getTaskData().getStatus(), Status.Created); assertNull(task1.getTaskData().getActualOwner()); }
@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 testSkipFromReady() { 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(); // Check is Complete taskService.skip(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Obsolete, task1.getTaskData().getStatus()); assertNull(task1.getTaskData().getActualOwner()); }
protected long createAndAssertTask(TaskFluent tf, String expectedOwner) { Task task = tf.getTask(); taskService.addTask(task, data); long taskId = task.getId(); assertEquals("Owner mismatch",expectedOwner,taskService.getTaskById(taskId).getTaskData().getActualOwner().getId()); return taskId; }
@Test public void testNewTaskWithSinglePotentialOwner() { // 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') ],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(); // Task should be assigned to the single potential owner and state set to Reserved Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); String potOwner = "Bobba Fet"; assertEquals(potOwner, task1.getTaskData().getActualOwner().getId()); taskService.getTasksAssignedAsPotentialOwner(potOwner, "en-UK"); }
@Test public void testStartFromReserved() 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') ], 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(); // Task should be assigned to the single potential owner and state set to Reserved Task task1 = taskService.getTaskById(taskId); assertEquals(Status.Reserved, task1.getTaskData().getStatus()); assertEquals("Bobba Fet", task1.getTaskData().getActualOwner().getId()); // Should change to InProgress taskService.start(taskId, "Bobba Fet"); Task task2 = taskService.getTaskById(taskId); assertEquals(Status.InProgress, task2.getTaskData().getStatus()); assertEquals("Bobba Fet", task1.getTaskData().getActualOwner().getId()); }
@Test public void testForwardFromReady() 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(); // Check is Forwarded taskService.forward(taskId, "Darth Vader", "Tony Stark"); Task task2 = taskService.getTaskById(taskId); assertFalse(task2.getPeopleAssignments().getPotentialOwners().contains(createUser("Darth Vader"))); assertTrue(task2.getPeopleAssignments().getPotentialOwners().contains(createUser("Tony Stark"))); assertNull(task2.getTaskData().getActualOwner()); assertEquals(Status.Ready, task2.getTaskData().getStatus()); }