use of org.kie.api.task.model.Status in project jbpm by kiegroup.
the class GlobalTimerServiceBaseTest method testInterediateTimerWithHTBeforeWithGlobalTestService.
@Test(timeout = 20000)
public void testInterediateTimerWithHTBeforeWithGlobalTestService() throws Exception {
NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("timer", 3);
// prepare listener to assert results
final List<Long> timerExporations = new ArrayList<Long>();
ProcessEventListener listener = new DefaultProcessEventListener() {
@Override
public void afterNodeLeft(ProcessNodeLeftEvent event) {
if (event.getNodeInstance().getNodeName().equals("timer")) {
timerExporations.add(event.getProcessInstance().getId());
}
}
};
Properties properties = new Properties();
properties.setProperty("mary", "HR");
properties.setProperty("john", "HR");
UserGroupCallback userGroupCallback = new JBossUserGroupCallbackImpl(properties);
environment = RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder().entityManagerFactory(emf).addAsset(ResourceFactory.newClassPathResource("org/jbpm/test/functional/timer/IntermediateCatchEventTimerCycleWithHT2.bpmn2"), ResourceType.BPMN2).schedulerService(globalScheduler).registerableItemsFactory(new TestRegisterableItemsFactory(listener, countDownListener)).userGroupCallback(userGroupCallback).get();
manager = getManager(environment, true);
RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get());
KieSession ksession = runtime.getKieSession();
Map<String, Object> params = new HashMap<String, Object>();
params.put("x", "R3/PT1S");
ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent", params);
assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
// get tasks
List<Status> statuses = new ArrayList<Status>();
statuses.add(Status.Reserved);
List<TaskSummary> tasks = runtime.getTaskService().getTasksAssignedAsPotentialOwnerByStatus("john", statuses, "en-UK");
assertNotNull(tasks);
assertEquals(1, tasks.size());
for (TaskSummary task : tasks) {
runtime.getTaskService().start(task.getId(), "john");
runtime.getTaskService().complete(task.getId(), "john", null);
}
// dispose session to force session to be reloaded on timer expiration
manager.disposeRuntimeEngine(runtime);
// now wait for 1 second for first timer to trigger
countDownListener.waitTillCompleted();
countDownListener.reset(1);
try {
runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtime.getKieSession();
processInstance = ksession.getProcessInstance(processInstance.getId());
assertNull(processInstance);
} catch (SessionNotFoundException e) {
// expected for PerProcessInstanceManagers since process instance is completed
}
// let's wait to ensure no more timers are expired and triggered
countDownListener.waitTillCompleted(3000);
manager.disposeRuntimeEngine(runtime);
assertEquals(3, timerExporations.size());
}
use of org.kie.api.task.model.Status in project jbpm by kiegroup.
the class ProcessPersistenceHumanTaskOnLaneTest method testProcessWithBAMListener.
@SuppressWarnings("unchecked")
@Test
public void testProcessWithBAMListener() throws Exception {
createRuntimeManager("org/jbpm/test/functional/task/HumanTaskOnLane.bpmn2");
RuntimeEngine runtimeEngine = getRuntimeEngine();
KieSession ksession = runtimeEngine.getKieSession();
TaskService taskService = runtimeEngine.getTaskService();
((EventService<TaskLifeCycleEventListener>) taskService).registerTaskEventListener(new BAMTaskEventListener(true));
ProcessInstance processInstance = ksession.startProcess("UserTask");
assertProcessInstanceActive(processInstance.getId());
long task1 = -1;
long task2 = -1;
// simulating a system restart
logger.debug("Reloading the environemnt to simulate system restart");
disposeRuntimeManager();
createRuntimeManager("org/jbpm/test/functional/task/HumanTaskOnLane.bpmn2");
runtimeEngine = getRuntimeEngine();
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
((EventService<TaskLifeCycleEventListener>) taskService).registerTaskEventListener(new BAMTaskEventListener(true));
// let john execute Task 1
String taskUser = "john";
String locale = "en-UK";
List<TaskSummary> list = taskService.getTasksAssignedAsPotentialOwner(taskUser, locale);
assertEquals(1, list.size());
TaskSummary task = list.get(0);
task1 = task.getId();
taskService.claim(task.getId(), taskUser);
taskService.start(task.getId(), taskUser);
taskService.complete(task.getId(), taskUser, null);
List<Status> reservedOnly = new ArrayList<Status>();
reservedOnly.add(Status.Reserved);
list = taskService.getTasksAssignedAsPotentialOwnerByStatus(taskUser, reservedOnly, locale);
assertEquals(1, list.size());
task = list.get(0);
task2 = task.getId();
taskService.start(task.getId(), taskUser);
taskService.complete(task.getId(), taskUser, null);
assertProcessInstanceCompleted(processInstance.getId());
EntityManager em = getEmf().createEntityManager();
List<BAMTaskSummaryImpl> bamLogs = em.createQuery("from BAMTaskSummaryImpl").getResultList();
em.close();
assertNotNull(bamLogs);
assertEquals(2, bamLogs.size());
List<Long> taskIdsFromBAM = new ArrayList<Long>();
for (BAMTaskSummaryImpl bamEntry : bamLogs) {
taskIdsFromBAM.add(bamEntry.getTaskId());
}
assertTrue(taskIdsFromBAM.contains(task1));
assertTrue(taskIdsFromBAM.contains(task2));
}
use of org.kie.api.task.model.Status in project jbpm by kiegroup.
the class HumanTaskTest method testCompletionRollback.
@Test
@BZ("1004681")
public void testCompletionRollback() {
createRuntimeManager(COMPLETION_ROLLBACK);
TaskService taskService = getRuntimeEngine().getTaskService();
KieSession ksession = getRuntimeEngine().getKieSession();
ProcessInstance pi = ksession.startProcess(COMPLETION_ROLLBACK_ID);
logger.debug("Process with id = " + pi.getId() + " has just been started.");
List<TaskSummary> taskList = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
long taskId = taskList.get(0).getId();
taskService.start(taskId, "john");
Task task = taskService.getTaskById(taskId);
logger.debug("Actual task status: " + task.getTaskData().getStatus());
try {
taskService.complete(taskId, "john", null);
Assertions.fail("Exception should have been thrown from the process script task.");
} catch (Exception ex) {
// exception thrown in process script task is intentional
}
disposeRuntimeManager();
createRuntimeManager(COMPLETION_ROLLBACK);
taskService = getRuntimeEngine().getTaskService();
Status status = taskService.getTaskById(taskId).getTaskData().getStatus();
Assertions.assertThat(status).as("Task completion has not been rolled back!").isEqualTo(Status.InProgress);
}
use of org.kie.api.task.model.Status in project jbpm by kiegroup.
the class RuntimeDataServiceEJBIntegrationTest method testGetTasksAssignedAsPotentialOwnerByStatusPagingAndFiltering.
@Test
public void testGetTasksAssignedAsPotentialOwnerByStatusPagingAndFiltering() {
List<Long> processInstanceIds = new ArrayList<Long>();
for (int i = 0; i < 10; i++) {
processInstanceIds.add(processService.startProcess(deploymentUnit.getIdentifier(), "org.jbpm.writedocument"));
}
Map<String, Object> params = new HashMap<String, Object>();
params.put("processInstanceId", processInstanceIds);
QueryFilter qf = new QueryFilter("t.taskData.processInstanceId in (:processInstanceId)", params, "t.id", false);
qf.setOffset(0);
qf.setCount(5);
List<Status> statuses = new ArrayList<Status>();
statuses.add(Status.Ready);
statuses.add(Status.Reserved);
List<TaskSummary> tasks = runtimeDataService.getTasksAssignedAsPotentialOwnerByStatus("salaboy", statuses, qf);
assertNotNull(tasks);
assertEquals(5, tasks.size());
TaskSummary userTask = tasks.get(0);
assertNotNull(userTask);
assertEquals("Write a Document", userTask.getName());
Collection<ProcessInstanceDesc> activeProcesses = runtimeDataService.getProcessInstances(new QueryContext(0, 20));
for (ProcessInstanceDesc pi : activeProcesses) {
processService.abortProcessInstance(pi.getId());
}
}
use of org.kie.api.task.model.Status in project jbpm by kiegroup.
the class TaskCleanUpProcessEventListener method afterProcessCompleted.
@Override
public void afterProcessCompleted(ProcessCompletedEvent event) {
List<Status> statuses = new ArrayList<Status>();
statuses.add(Status.Error);
statuses.add(Status.Failed);
statuses.add(Status.Obsolete);
statuses.add(Status.Suspended);
statuses.add(Status.Completed);
statuses.add(Status.Exited);
List<TaskSummary> completedTasksByProcessId = ((InternalTaskService) taskService).execute(new GetTasksForProcessCommand(event.getProcessInstance().getId(), statuses, "en-UK"));
// archive and remove
taskService.archiveTasks(completedTasksByProcessId);
taskService.removeTasks(completedTasksByProcessId);
}
Aggregations