use of eu.bcvsolutions.idm.core.scheduler.api.dto.Task in project CzechIdMng by bcvsolutions.
the class ContractSynchronizationExecutor method executeHrProcess.
/**
* Start HR process. Find quartz task and LRT. If some LRT for this task type
* exists, then is used. If not exists, then is created new. Task is execute
* synchronously.
*
* @param log
* @param executor
* @return
*/
private SysSyncLogDto executeHrProcess(SysSyncLogDto log, SchedulableTaskExecutor<?> executor) {
@SuppressWarnings("unchecked") Class<? extends SchedulableTaskExecutor<?>> taskType = (Class<? extends SchedulableTaskExecutor<?>>) executor.getClass();
IdmLongRunningTaskFilter filter = new IdmLongRunningTaskFilter();
filter.setOperationState(OperationState.CREATED);
filter.setTaskType(taskType.getCanonicalName());
List<IdmLongRunningTaskDto> createdLrts = longRunningTaskService.find(filter, null).getContent();
IdmLongRunningTaskDto lrt = null;
String simpleName = taskType.getSimpleName();
if (createdLrts.isEmpty()) {
// We do not have LRT for this task, we will create him
Task processTask = findTask(taskType);
if (processTask == null) {
addToItemLog(log, MessageFormat.format("Warning - HR process [{0}] cannot be executed, because task for this type was not found!", simpleName));
log = synchronizationLogService.save(log);
return log;
}
IdmScheduledTaskDto scheduledTask = scheduledTaskService.findByQuartzTaskName(processTask.getId());
if (scheduledTask == null) {
addToItemLog(log, MessageFormat.format("Warning - HR process [{0}] cannot be executed, because scheduled task for this type was not found!", simpleName));
log = synchronizationLogService.save(log);
return log;
}
lrt = longRunningTaskService.create(scheduledTask, executor, configurationService.getInstanceId());
} else {
lrt = createdLrts.get(0);
}
if (lrt != null) {
log.addToLog(MessageFormat.format("After success sync have to be run HR task [{1}]. We start him (synchronously) now [{0}]. LRT ID: [{2}]", LocalDateTime.now(), simpleName, lrt.getId()));
log = synchronizationLogService.save(log);
executor.setLongRunningTaskId(lrt.getId());
longRunningTaskManager.executeSync(executor);
log.addToLog(MessageFormat.format("HR task [{1}] ended in [{0}].", LocalDateTime.now(), simpleName));
log = synchronizationLogService.save(log);
}
return log;
}
use of eu.bcvsolutions.idm.core.scheduler.api.dto.Task in project CzechIdMng by bcvsolutions.
the class AbstractScheduledTaskInitializerTest method testInitTask.
@Test
public void testInitTask() {
List<Task> tasks = schedulerService.getAllTasks();
// found test task, other will be skip
for (Task task : tasks) {
if (task.getTaskType().equals(TestTaskExecutor.class)) {
assertEquals(TEST_DESCRIPTION, task.getDescription());
assertEquals(TEST_INSTANCE, task.getInstanceId());
// assertEquals(InitTestScheduledTask.TEST_MODULE, task.getModule()); // module not working in Task
Map<String, String> parameters = task.getParameters();
assertEquals(3, parameters.size());
String value1 = parameters.get(KEY_1);
assertEquals(VALUE_1, value1);
String value2 = parameters.get(KEY_2);
assertEquals(VALUE_2, value2);
String value3 = parameters.get(KEY_3);
assertEquals(VALUE_3, value3);
List<AbstractTaskTrigger> triggers = task.getTriggers();
assertEquals(2, triggers.size());
for (AbstractTaskTrigger trigger : triggers) {
assertEquals(TaskTriggerState.ACTIVE, trigger.getState());
if (trigger.getClass().equals(CronTaskTrigger.class)) {
CronTaskTrigger cronTrigger = (CronTaskTrigger) trigger;
assertEquals(TEST_CRON, cronTrigger.getCron());
} else if (trigger.getClass().equals(SimpleTaskTrigger.class)) {
SimpleTaskTrigger simpleTrigger = (SimpleTaskTrigger) trigger;
assertEquals(TEST_FIRE_TIME, simpleTrigger.getFireTime());
} else {
fail();
}
}
// success
return;
}
}
// test task is not initialized
fail();
}
use of eu.bcvsolutions.idm.core.scheduler.api.dto.Task in project CzechIdMng by bcvsolutions.
the class DefaultSchedulerManagerIntegrationTest method testTaskRegistration.
@Test
public void testTaskRegistration() {
List<Task> tasks = manager.getSupportedTasks();
//
assertTrue(tasks.size() > 0);
boolean testTaskIsRegisterd = false;
for (Task task : tasks) {
if (TestRegistrableSchedulableTask.class.equals(task.getTaskType())) {
testTaskIsRegisterd = true;
break;
}
}
assertTrue(testTaskIsRegisterd);
}
use of eu.bcvsolutions.idm.core.scheduler.api.dto.Task in project CzechIdMng by bcvsolutions.
the class DefaultSchedulerManagerIntegrationTest method testCreateAndRunSimpleTrigger.
@Test
public void testCreateAndRunSimpleTrigger() throws InterruptedException, ExecutionException {
helper.setConfigurationValue(SchedulerConfiguration.PROPERTY_TASK_ASYNCHRONOUS_ENABLED, false);
try {
String result = "TEST_SCHEDULER_TWO";
Task task = createTask(result);
//
manager.createTrigger(task.getId(), getSimpleTrigger(task));
//
helper.waitForResult(getContinueFunction());
//
List<FutureTask<?>> taskList = getFutureTaskList(TestSchedulableTask.class);
assertEquals(result, taskList.get(0).get());
//
checkScheduledTask(task);
} finally {
helper.setConfigurationValue(SchedulerConfiguration.PROPERTY_TASK_ASYNCHRONOUS_ENABLED, true);
}
}
use of eu.bcvsolutions.idm.core.scheduler.api.dto.Task in project CzechIdMng by bcvsolutions.
the class DefaultSchedulerManagerIntegrationTest method testCreateInvalidCronTrigger.
@Test(expected = InvalidCronExpressionException.class)
public void testCreateInvalidCronTrigger() {
Task task = createTask(null);
//
CronTaskTrigger trigger = new CronTaskTrigger();
trigger.setTaskId(task.getId());
trigger.setCron("not-valid");
//
manager.createTrigger(task.getId(), trigger);
}
Aggregations