update - 将更新 extHiTaskInst 表数据的逻辑,改成使用引擎的异步处理,结合重试的能力

This commit is contained in:
wangli 2024-04-30 14:49:32 +08:00
parent 04fb6cf4c2
commit 27fcc9e52b

View File

@ -45,6 +45,11 @@ public class ExtTaskInstEventListener extends AbstractFlowableEventListener {
.add(UPDATE) .add(UPDATE)
.build(); .build();
/**
* 不要将该类的方法异步化, 否则有一连串的坑
*
* @param flowableEvent
*/
@Override @Override
public void onEvent(FlowableEvent flowableEvent) { public void onEvent(FlowableEvent flowableEvent) {
if (flowableEvent instanceof ExtTaskInstEvent) { if (flowableEvent instanceof ExtTaskInstEvent) {
@ -83,11 +88,10 @@ public class ExtTaskInstEventListener extends AbstractFlowableEventListener {
} }
private void updateExtTaskInst(ExtTaskInstUpdateEvent event) { private void updateExtTaskInst(ExtTaskInstUpdateEvent event) {
extAxHiTaskInstService.updateByTaskIdAndInstanceId(event.getTaskId(), event.getProcessInstanceId(), // extAxHiTaskInstService.updateByTaskIdAndInstanceId(event.getTaskId(), event.getProcessInstanceId(),
event.getAssignee(), event.getResultEnum()); // event.getAssignee(), event.getResultEnum());
// externalJob(event);
// 利用引擎异步任务的重试能力, 去正确更新扩展任务表的状态 // 利用引擎异步任务的重试能力, 去正确更新扩展任务表的状态
// createAsyncJob(event); createAsyncJob(event);
} }
private void createAsyncJob(ExtTaskInstUpdateEvent event) { private void createAsyncJob(ExtTaskInstUpdateEvent event) {
@ -95,8 +99,6 @@ public class ExtTaskInstEventListener extends AbstractFlowableEventListener {
processEngineConfiguration.getCommandExecutor().execute(commandContext -> { processEngineConfiguration.getCommandExecutor().execute(commandContext -> {
JobService jobService = CommandContextUtil.getJobService(commandContext); JobService jobService = CommandContextUtil.getJobService(commandContext);
JobEntity job = jobService.createJob(); JobEntity job = jobService.createJob();
// job.setExecutionId(event.getExecutionId());
job.setProcessInstanceId(event.getProcessInstanceId());
job.setJobHandlerType(AsyncExtTaskInstJobHandler.TYPE); job.setJobHandlerType(AsyncExtTaskInstJobHandler.TYPE);
// 携带自定义的数据 // 携带自定义的数据