protected void assertMigratedTaskAndComplete(TaskService taskService, String processId, Long processInstanceId, String taskName) { List<TaskSummary> tasks = taskService.getTasksByStatusByProcessInstanceId(processInstanceId, Arrays.asList(Status.Reserved), "en-UK"); assertNotNull(tasks); assertEquals(1, tasks.size()); TaskSummary task = tasks.get(0); assertNotNull(task); assertEquals(processId, task.getProcessId()); assertEquals(DEPLOYMENT_ID_V2, task.getDeploymentId()); assertEquals(taskName, task.getName()); taskService.start(task.getId(), USER_JOHN); taskService.complete(task.getId(), USER_JOHN, null); }
public void completeTask(String userId, long taskId) { RuntimeEngine runtime = getRuntime(); runtime.getTaskService().start(taskId, userId); runtime.getTaskService().complete(taskId, userId, null); manager.disposeRuntimeEngine(runtime); }
public void abortTask(String userId, long taskId) { RuntimeEngine runtime = getRuntime(); runtime.getTaskService().start(taskId, userId); runtime.getTaskService().fail(taskId, userId, null); manager.disposeRuntimeEngine(runtime); }
private void executeTasksByProcessByTaskName(long processId, String taskName, TaskService taskService) { List<Status> status = Arrays.asList(Status.Ready, Status.Created, Status.Reserved); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwnerByStatus(USER_JOHN, status, "en-UK"); TaskSummary task = null; for (TaskSummary t : tasks) { if (t.getName().equalsIgnoreCase(taskName)) { task = t; break; } } assertNotNull(task); taskService.start(task.getId(), USER_JOHN); taskService.complete(task.getId(), USER_JOHN, null); } }
protected void assertTaskAndComplete(TaskService taskService, String processId, Long processInstanceId, String taskName) { List<TaskSummary> tasks = taskService.getTasksByStatusByProcessInstanceId(processInstanceId, Arrays.asList(Status.Reserved), "en-UK"); assertNotNull(tasks); assertEquals(1, tasks.size()); TaskSummary task = tasks.get(0); assertNotNull(task); assertEquals(processId, task.getProcessId()); assertEquals(DEPLOYMENT_ID_V1, task.getDeploymentId()); assertEquals(taskName, task.getName()); taskService.start(task.getId(), USER_JOHN); taskService.complete(task.getId(), USER_JOHN, null); }
@Override public void run() { UserTransaction ut = null; try { ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstanceId)); engine.getKieSession(); TaskService taskService = engine.getTaskService(); taskService.start(secondTaskId, USER_MARY); taskService.complete(secondTaskId, USER_MARY, null); System.out.println("Task for mary completed"); manager.disposeRuntimeEngine(engine); ut.commit(); } catch (Exception e) { e.printStackTrace(); try { ut.rollback(); } catch (Exception e1) { e1.printStackTrace(); } } } });
private void executeTasksByProcessByTaskName(long processId, String taskName, TaskService taskService) { List<Status> status = Arrays.asList(Status.Ready, Status.Created, Status.Reserved); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwnerByStatus(USER_JOHN, status, "en-UK"); TaskSummary task = null; for (TaskSummary t : tasks) { if (t.getName().equalsIgnoreCase(taskName)) { task = t; break; } } assertNotNull(task); taskService.start(task.getId(), USER_JOHN); taskService.complete(task.getId(), USER_JOHN, null); } }
@Test public void testFailureAfterUserTaskNoWorkItemHandler() { assertNotNull(ksession1); ProcessInstance pi = ksession1.startProcess("UserTaskWithCustomTask"); ksession1 = runtime1.getKieSession(); TaskService taskService = runtime1.getTaskService(); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK"); assertEquals(1, tasks.size()); long taskId = tasks.get(0).getId(); taskService.start(taskId, "john"); taskService.complete(taskId, "john", results); fail("Complete task should fail due to no work item handler found error"); } catch (Throwable e) { assertNotNull(errors); assertEquals(1, errors.size()); assertExecutionError(errors.get(0), "Process", "UserTaskWithCustomTask", "Manual Task 2"); String errorMessage = errors.get(0).getErrorMessage(); assertTrue(errorMessage.contains("Could not find work item handler for Manual Task"));
@Override public void run() { UserTransaction ut = null; try { ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstanceId)); // call ksession so it will initiate first tx engine.getKieSession(); TaskService taskService = engine.getTaskService(); taskService.start(firstTaskId, USER_JOHN); taskService.complete(firstTaskId, USER_JOHN, null); System.out.println("Task for john completed"); manager.disposeRuntimeEngine(engine); ut.commit(); } catch (Exception e) { e.printStackTrace(); try { ut.rollback(); } catch (Exception e1) { e1.printStackTrace(); } } } });
@Test public void testScriptFailureAfterUserTask() { assertNotNull(ksession1); ProcessInstance pi = ksession1.startProcess("UserTaskWithRollback"); ksession1 = runtime1.getKieSession(); TaskService taskService = runtime1.getTaskService(); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK"); assertEquals(1, tasks.size()); long taskId = tasks.get(0).getId(); taskService.start(taskId, "john"); taskService.complete(taskId, "john", results); fail("Complete task should fail due to broken script"); } catch (Throwable e) { assertNotNull(errors); assertEquals(1, errors.size()); assertExecutionError(errors.get(0), "Process", "UserTaskWithRollback", "Script Task 1");
@Override public void run() { UserTransaction ut = null; try { ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstanceId)); engine.getKieSession(); TaskService taskService = engine.getTaskService(); taskService.start(secondTaskId, USER_MARY); taskService.complete(secondTaskId, USER_MARY, null); System.out.println("Task for mary completed"); manager.disposeRuntimeEngine(engine); ut.commit(); } catch (Exception e) { e.printStackTrace(); try { ut.rollback(); } catch (Exception e1) { e1.printStackTrace(); } } } });
@Test public void testUserTaskFromKjar() { KieServices ks = KieServices.Factory.get(); ProcessInstance processInstance = engine.getKieSession().startProcess("UserTask", params); List<TaskSummary> tasks = engine.getTaskService().getTasksAssignedAsPotentialOwner("john", "en-UK"); assertNotNull(tasks); assertEquals(1, tasks.size()); long taskId = tasks.get(0).getId(); engine.getTaskService().start(taskId, "john"); engine.getTaskService().complete(taskId, "john", null);
@Override public void run() { UserTransaction ut = null; try { ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstanceId)); // call ksession so it will initiate first tx engine.getKieSession(); TaskService taskService = engine.getTaskService(); taskService.start(firstTaskId, USER_JOHN); taskService.complete(firstTaskId, USER_JOHN, null); System.out.println("Task for john completed"); manager.disposeRuntimeEngine(engine); ut.commit(); } catch (Exception e) { e.printStackTrace(); try { ut.rollback(); } catch (Exception e1) { e1.printStackTrace(); } } } });
@Test(timeout = 10000) public void testTaskWithVariablesRecurse() { final TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); handler.executeWorkItem(prepareWorkItemWithTaskVariables("Comment for task ${task.description}"), manager); final List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(1, tasks.size()); final Task task = taskService.getTaskById(tasks.get(0).getId()); testTaskWithExpectedDescription(task, task.getDescription()); taskService.start(task.getId(), "Darth Vader"); taskService.complete(task.getId(), "Darth Vader", null); assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME)); final String actualOwner = (String) manager.getResults().get("ActorId"); assertNotNull(actualOwner); assertEquals("Darth Vader", actualOwner); }
@Test public void testInterceptorAfterRollback() throws Exception { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() KieSession ksession = runtime.getKieSession(); ProcessInstance processInstance = ksession.startProcess("UserTaskWithRollback"); assertEquals(TransactionLockInterceptor.class, internalCommandService.getClass()); TaskService taskService = runtime.getTaskService(); List<Long> taskIds = taskService.getTasksByProcessInstanceId(processInstance.getId()); taskService.start(taskIds.get(0), "john"); HashMap<String, Object> result = new HashMap<String, Object>(); result.put("output1", "rollback"); try { taskService.complete(taskIds.get(0), "john", result); // rollback transaction } catch (WorkflowRuntimeException e) { taskService.complete(taskIds.get(0), "john", result); // this time, execute normally
@SuppressWarnings("unchecked") @Test public void testUserTaskFailure() { assertNotNull(ksession1); ksession1.startProcess("UserTaskWithRollback"); TaskService taskService = runtime1.getTaskService(); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK"); assertEquals(1, tasks.size()); long taskId = tasks.get(0).getId(); taskService.start(taskId, "john"); fail("Start task should fail due to broken script"); } catch (Throwable e) { assertNotNull(errors); assertEquals(1, errors.size()); assertExecutionError(errors.get(0), "Task", "UserTaskWithRollback", "Hello");
KieSession ksession1 = runtime1.getKieSession(); assertNotNull(ksession1); ProcessInstance processInstance = ksession1.startProcess("UserTask"); manager.disposeRuntimeEngine(runtime1); KieSession ksession2 = runtime2.getKieSession(); assertNotNull(ksession2); ProcessInstance processInstance2 = ksession2.startProcess("UserTask"); manager2.disposeRuntimeEngine(runtime2); List<Long> tasks1 = runtime2.getTaskService().getTasksByProcessInstanceId(processInstance.getId()); assertEquals(1, tasks1.size()); long task1Id = tasks1.get(0); try { runtime2.getTaskService().start(task1Id, "john"); runtime2.getTaskService().complete(task1Id, "john", null); fail("Should not be allowed to complete task via wrong runtime manager"); } catch (IllegalStateException re) {
@Test public void testRunMultiEventProcessSingletonRuntimeManager() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("signalbroadcast"); List<TaskSummary> tasks = runtime.getTaskService().getTasksAssignedAsPotentialOwner("john", "en-UK"); assertNotNull(tasks); assertEquals(0, tasks.size()); tasks = runtime.getTaskService().getTasksAssignedAsPotentialOwner("john", "en-UK"); assertNotNull(tasks); assertEquals(1, tasks.size()); tasks = runtime.getTaskService().getTasksAssignedAsPotentialOwner("john", "en-UK"); assertNotNull(tasks); assertEquals(3, tasks.size()); runtime.getTaskService().start(task.getId(), "john"); runtime.getTaskService().complete(task.getId(), "john", null);
@Test public void testTaskMultipleActors() throws Exception { TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); WorkItemImpl workItem = new WorkItemImpl(); workItem.setName("Human Task"); workItem.setParameter("NodeName", "TaskName"); workItem.setParameter("Comment", "Comment"); workItem.setParameter("Priority", "10"); workItem.setParameter("ActorId", "Darth Vader, Dalai Lama"); workItem.setProcessInstanceId(10); getHandler().executeWorkItem(workItem, manager); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(1, tasks.size()); TaskSummary task = tasks.get(0); assertEquals("TaskName", task.getName()); assertEquals(10, task.getPriority().intValue()); assertEquals("Comment", task.getDescription()); assertEquals(Status.Ready, task.getStatus()); taskService.claim(task.getId(), "Darth Vader"); taskService.start(task.getId(), "Darth Vader"); taskService.complete(task.getId(), "Darth Vader", null); assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME)); }
@Test public void testTaskCompleteGroupActors() throws Exception { TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); WorkItemImpl workItem = new WorkItemImpl(); workItem.setName("Human Task"); workItem.setParameter("NodeName", "TaskName"); workItem.setParameter("Comment", "Comment"); workItem.setParameter("Priority", "10"); workItem.setParameter("GroupId", "Crusaders"); workItem.setProcessInstanceId(10); getHandler().executeWorkItem(workItem, manager); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Luke Cage", "en-UK"); assertEquals(1, tasks.size()); TaskSummary taskSummary = tasks.get(0); assertEquals("TaskName", taskSummary.getName()); assertEquals(10, taskSummary.getPriority().intValue()); assertEquals("Comment", taskSummary.getDescription()); assertEquals(Status.Ready, taskSummary.getStatus()); taskService.claim(taskSummary.getId(), "Luke Cage"); taskService.start(taskSummary.getId(), "Luke Cage"); taskService.complete(taskSummary.getId(), "Luke Cage", null); assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME)); String actualOwner = (String) manager.getResults().get("ActorId"); assertNotNull(actualOwner); assertEquals("Luke Cage", actualOwner); }