add - 新增一些安全优化

This commit is contained in:
wangli 2024-04-11 12:34:37 +08:00
parent 9bd34e118f
commit d7cbf9a01e
2 changed files with 17 additions and 8 deletions

View File

@ -73,6 +73,8 @@ import org.flowable.spring.SpringProcessEngineConfiguration;
import org.flowable.task.api.Task;
import org.flowable.variable.api.history.HistoricVariableInstance;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Nullable;
@ -352,6 +354,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
}
@Override
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public Boolean abortProcessInstance(BpmnProcessInstanceAbortDTO dto) {
CommandExecutor commandExecutor = springProcessEngineConfiguration.getCommandExecutor();
commandExecutor.execute(new CustomAbortProcessInstanceCmd(dto.getProcessInstanceId(), dto.getTenantId(),

View File

@ -27,6 +27,8 @@ import org.springframework.web.bind.annotation.RestController;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
@ -101,15 +103,19 @@ public class TestController {
.unfinished()
.list();
log.info("待系统中止的流程实例数: {}", list.size());
ExecutorService executorService = Executors.newFixedThreadPool(3);
list.forEach(i -> {
try {
BpmnProcessInstanceAbortDTO abort = new BpmnProcessInstanceAbortDTO();
abort.setProcessInstanceId(i.getId());
abort.setReason("系统超时中止");
bpmnProcessInstanceService.abortProcessInstance(abort);
} catch (Exception e) {
log.warn("系统批量中止流程: {}, 发生异常: {}", i.getId(), e.getMessage());
}
executorService.submit(() -> {
try {
log.info("当前中止的流程: {}", i.getId());
BpmnProcessInstanceAbortDTO abort = new BpmnProcessInstanceAbortDTO();
abort.setProcessInstanceId(i.getId());
abort.setReason("系统超时中止");
bpmnProcessInstanceService.abortProcessInstance(abort);
} catch (Exception e) {
log.warn("系统批量中止流程: {}, 发生异常: {}", i.getId(), e.getMessage());
}
});
});
return CommonResponse.success(true);
}