Ошибка задачи Hybris: не удалось получить блокировку задачи Пропустить ее - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь запустить Task Runner через Java в Hybris 5.3

Это мой контроллер, где я запускаю задачу:

final TestDataModel dataModel = *save data in model*
dataModel .setRunnerBean("responseTaskRunner");

final TaskConditionModel conditionModel = modelService.create(TaskConditionModel.class);

final String uid = "Task" + System.currentTimeMillis();
conditionModel.setUniqueID(uid);
dataModel .setConditions(Collections.singleton(conditionModel));

        // Start the task in 1 second
 dataModel.setExecutionDate(new Date(System.currentTimeMillis() + 1000));
taskService.scheduleTask(gkaRequestBAPIdataModel);
taskService.triggerEvent(uid);

Я получаю ошибку:

"[DefaultTaskService] Не удалось получить блокировку для задачи # 8796617360968. Пропуск ее."

, пока я пытаюсь вызвать задачу.По сути, журнал внутри Task Runner не печатается, так как не запускается Task Runner.

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Я дал имя «Таблица развертывания» при создании компонента DataModel, который расширяет задачу. Похоже, мы не должны давать имя таблицы развертывания. Мой Код был в порядке.

0 голосов
/ 31 мая 2019

Я думаю, что вы смешиваете триггер на основе времени и событий.

На основе времени: Если вы хотите выполнить свое действие своевременно, тогда вы можете планировать задание, как ..

ModelService modeService = ...
TaskService taskService = ...

// create model
TaskModel task = modelService.create(TaskModel.class);

// configure it
task.setRunnerBean("MyRunner"); // the action bean name
task.setExecutionTime( new Date() );  // the execution time - here asap

// schedule
taskService.scheduleTask(task);

На основе события: Если вы хотите выполнить свое действие для какого-либо события, тогда ваш код будет выглядеть так:

// create models
TaskModel task = modelService.create(TaskModel.class);
TaskConditionModel cond = modelService.create(TaskConditionModel.class);

// configure them
task.setRunnerBean("MyRunner");
// define event name
cond.setUniqueID("MyEventArrived");
// add to task
task.setConditions( Collections.singleton( cond ) );

// schedule
taskService.scheduleTask(task);

Для запуска события

taskService.triggerEvent( "MyEventArrived" );

Подробнее здесь

...