fix:(1.2.0-beta1):
修复oracle任务状态变更偶发失败情况
This commit is contained in:
parent
bbbf73c4fb
commit
6ca192e69e
@ -26,6 +26,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.dao.DuplicateKeyException;
|
import org.springframework.dao.DuplicateKeyException;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.transaction.support.TransactionSynchronization;
|
||||||
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -99,7 +101,16 @@ public class JobTaskBatchGenerator {
|
|||||||
jobTimerTaskDTO.setTaskExecutorScene(context.getTaskExecutorScene());
|
jobTimerTaskDTO.setTaskExecutorScene(context.getTaskExecutorScene());
|
||||||
jobTimerTaskDTO.setWorkflowTaskBatchId(context.getWorkflowTaskBatchId());
|
jobTimerTaskDTO.setWorkflowTaskBatchId(context.getWorkflowTaskBatchId());
|
||||||
jobTimerTaskDTO.setWorkflowNodeId(context.getWorkflowNodeId());
|
jobTimerTaskDTO.setWorkflowNodeId(context.getWorkflowNodeId());
|
||||||
JobTimerWheel.registerWithJob(() -> new JobTimerTask(jobTimerTaskDTO), Duration.ofMillis(delay));
|
if (TransactionSynchronizationManager.isActualTransactionActive()) {
|
||||||
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
||||||
|
@Override
|
||||||
|
public void afterCompletion(int status) {
|
||||||
|
JobTimerWheel.registerWithJob(() -> new JobTimerTask(jobTimerTaskDTO), Duration.ofMillis(delay));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
JobTimerWheel.registerWithJob(() -> new JobTimerTask(jobTimerTaskDTO), Duration.ofMillis(delay));
|
||||||
|
}
|
||||||
return jobTaskBatch;
|
return jobTaskBatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +130,17 @@ public class JobTaskBatchGenerator {
|
|||||||
taskExecuteDTO.setWorkflowTaskBatchId(context.getWorkflowTaskBatchId());
|
taskExecuteDTO.setWorkflowTaskBatchId(context.getWorkflowTaskBatchId());
|
||||||
taskExecuteDTO.setWorkflowNodeId(context.getWorkflowNodeId());
|
taskExecuteDTO.setWorkflowNodeId(context.getWorkflowNodeId());
|
||||||
Job job = jobMapper.selectById(context.getJobId());
|
Job job = jobMapper.selectById(context.getJobId());
|
||||||
jobTaskBatchHandler.openResidentTask(job, taskExecuteDTO);
|
if (TransactionSynchronizationManager.isActualTransactionActive()) {
|
||||||
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
||||||
|
@Override
|
||||||
|
public void afterCompletion(int status) {
|
||||||
|
jobTaskBatchHandler.openResidentTask(job, taskExecuteDTO);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
jobTaskBatchHandler.openResidentTask(job, taskExecuteDTO);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openNextWorkflow(JobTaskBatchGeneratorContext context, JobTaskBatch jobTaskBatch) {
|
private void openNextWorkflow(JobTaskBatchGeneratorContext context, JobTaskBatch jobTaskBatch) {
|
||||||
|
Loading…
Reference in New Issue
Block a user