Search in sources :

Example 6 with Task

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;
}
Also used : IdmLongRunningTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmLongRunningTaskDto) Task(eu.bcvsolutions.idm.core.scheduler.api.dto.Task) IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto) IdmLongRunningTaskFilter(eu.bcvsolutions.idm.core.scheduler.api.dto.filter.IdmLongRunningTaskFilter) SchedulableTaskExecutor(eu.bcvsolutions.idm.core.scheduler.api.service.SchedulableTaskExecutor)

Example 7 with Task

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();
}
Also used : AbstractTaskTrigger(eu.bcvsolutions.idm.core.scheduler.api.dto.AbstractTaskTrigger) Task(eu.bcvsolutions.idm.core.scheduler.api.dto.Task) CronTaskTrigger(eu.bcvsolutions.idm.core.scheduler.api.dto.CronTaskTrigger) SimpleTaskTrigger(eu.bcvsolutions.idm.core.scheduler.api.dto.SimpleTaskTrigger) Test(org.junit.Test) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest)

Example 8 with Task

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);
}
Also used : FutureTask(java.util.concurrent.FutureTask) Task(eu.bcvsolutions.idm.core.scheduler.api.dto.Task) LongRunningFutureTask(eu.bcvsolutions.idm.core.scheduler.api.dto.LongRunningFutureTask) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 9 with Task

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);
    }
}
Also used : FutureTask(java.util.concurrent.FutureTask) Task(eu.bcvsolutions.idm.core.scheduler.api.dto.Task) LongRunningFutureTask(eu.bcvsolutions.idm.core.scheduler.api.dto.LongRunningFutureTask) FutureTask(java.util.concurrent.FutureTask) LongRunningFutureTask(eu.bcvsolutions.idm.core.scheduler.api.dto.LongRunningFutureTask) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 10 with Task

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);
}
Also used : FutureTask(java.util.concurrent.FutureTask) Task(eu.bcvsolutions.idm.core.scheduler.api.dto.Task) LongRunningFutureTask(eu.bcvsolutions.idm.core.scheduler.api.dto.LongRunningFutureTask) CronTaskTrigger(eu.bcvsolutions.idm.core.scheduler.api.dto.CronTaskTrigger) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Aggregations

Task (eu.bcvsolutions.idm.core.scheduler.api.dto.Task)26 LongRunningFutureTask (eu.bcvsolutions.idm.core.scheduler.api.dto.LongRunningFutureTask)13 FutureTask (java.util.concurrent.FutureTask)13 AbstractIntegrationTest (eu.bcvsolutions.idm.test.api.AbstractIntegrationTest)12 Test (org.junit.Test)12 CronTaskTrigger (eu.bcvsolutions.idm.core.scheduler.api.dto.CronTaskTrigger)6 DependentTaskTrigger (eu.bcvsolutions.idm.core.scheduler.api.dto.DependentTaskTrigger)6 IdmLongRunningTaskDto (eu.bcvsolutions.idm.core.scheduler.api.dto.IdmLongRunningTaskDto)5 IdmLongRunningTaskFilter (eu.bcvsolutions.idm.core.scheduler.api.dto.filter.IdmLongRunningTaskFilter)5 SchedulableTaskExecutor (eu.bcvsolutions.idm.core.scheduler.api.service.SchedulableTaskExecutor)5 SimpleTaskTrigger (eu.bcvsolutions.idm.core.scheduler.api.dto.SimpleTaskTrigger)3 AbstractSysSyncConfigDto (eu.bcvsolutions.idm.acc.dto.AbstractSysSyncConfigDto)2 SysSyncContractConfigDto (eu.bcvsolutions.idm.acc.dto.SysSyncContractConfigDto)2 SysSyncLogDto (eu.bcvsolutions.idm.acc.dto.SysSyncLogDto)2 CoreException (eu.bcvsolutions.idm.core.api.exception.CoreException)2 AbstractTaskTrigger (eu.bcvsolutions.idm.core.scheduler.api.dto.AbstractTaskTrigger)2 IdmScheduledTaskDto (eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto)2 DateTime (org.joda.time.DateTime)2 JobDetail (org.quartz.JobDetail)2 ImmutableMap (com.google.common.collect.ImmutableMap)1