Hybris Task Error: Failed to retrieve lock on task Skipping it

安稳与你 提交于 2019-12-13 03:26:45

问题


I am trying to trigger a Task Runner through Java in Hybris 5.3

This is my Controller where I Trigger the task:

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);

I get the error:

"[DefaultTaskService] Failed to retrieve lock on task #8796617360968. Skipping it."

while I try to trigger the task. Basically the log inside the Task Runner is not being printed as the Task Runner is not being hit.


回答1:


I think you are mixing time based & event based Trigger.

Time-based: If you want to execute your action in a timely manner then you can scheduleTask like..

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);

Event-based: If you want to execute your action on some event then your code would be like

// 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);

To trigger the event

taskService.triggerEvent( "MyEventArrived" );

Read more details here




回答2:


I gave "Deployment table" name while creating the DataModel Bean which extends Task. Looks like we should not give deployment table name. My Code was all okay.



来源:https://stackoverflow.com/questions/56391123/hybris-task-error-failed-to-retrieve-lock-on-task-skipping-it

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!