【代码评审】BPM:任务前置、后置通知

This commit is contained in:
YunaiV 2025-03-17 21:37:15 +08:00
parent 979485027d
commit 67e548d545
5 changed files with 15 additions and 33 deletions

View File

@ -63,7 +63,6 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.client.RestTemplate;
import java.util.*; import java.util.*;
@ -268,6 +267,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey()); FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey());
List<FlowNode> nextFlowNodes = BpmnModelUtils.getNextFlowNodes(flowElement, bpmnModel, processVariables); List<FlowNode> nextFlowNodes = BpmnModelUtils.getNextFlowNodes(flowElement, bpmnModel, processVariables);
// TODO @小北还是可以优化下哈4. 组装节点信息 只拼接出 candidateUserIds之后再第二次循环查询用户和部门信息进行拼接
// 2. 收集所有节点的候选用户 ID // 2. 收集所有节点的候选用户 ID
Set<Long> allCandidateUsers = new HashSet<>(); Set<Long> allCandidateUsers = new HashSet<>();
for (FlowNode node : nextFlowNodes) { for (FlowNode node : nextFlowNodes) {
@ -290,7 +290,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
List<UserSimpleBaseVO> candidateUsers = new ArrayList<>(); List<UserSimpleBaseVO> candidateUsers = new ArrayList<>();
for (Long userId : candidateUserIds) { for (Long userId : candidateUserIds) {
UserSimpleBaseVO user = BpmProcessInstanceConvert.INSTANCE.buildUser(userId, userMap, deptMap); UserSimpleBaseVO user = BpmProcessInstanceConvert.INSTANCE.buildUser(userId, userMap, deptMap);
if (user != null){ if (user != null) {
candidateUsers.add(user); candidateUsers.add(user);
} }
} }
@ -932,10 +932,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getProcessAfterTriggerSetting(); BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getProcessAfterTriggerSetting();
BpmHttpRequestUtils.executeBpmHttpRequest(instance, BpmHttpRequestUtils.executeBpmHttpRequest(instance,
setting.getUrl(), setting.getUrl(), setting.getHeader(), setting.getBody(), true, setting.getResponse());
setting.getHeader(),
setting.getBody(),
true, setting.getResponse());
} }
} }
}); });
@ -954,10 +951,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
} }
BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getProcessBeforeTriggerSetting(); BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getProcessBeforeTriggerSetting();
BpmHttpRequestUtils.executeBpmHttpRequest(instance, BpmHttpRequestUtils.executeBpmHttpRequest(instance,
setting.getUrl(), setting.getUrl(), setting.getHeader(), setting.getBody(), true, setting.getResponse());
setting.getHeader(),
setting.getBody(),
true, setting.getResponse());
}); });
} }

View File

@ -1176,7 +1176,6 @@ public class BpmTaskServiceImpl implements BpmTaskService {
} }
updateTaskStatus(task.getId(), BpmTaskStatusEnum.RUNNING.getStatus()); updateTaskStatus(task.getId(), BpmTaskStatusEnum.RUNNING.getStatus());
// 2. 处理自动通过的情况例如说1无审批人时是否自动通过不通过2人工审核是否自动通过不通过
ProcessInstance processInstance = processInstanceService.getProcessInstance(task.getProcessInstanceId()); ProcessInstance processInstance = processInstanceService.getProcessInstance(task.getProcessInstanceId());
if (processInstance == null) { if (processInstance == null) {
log.error("[processTaskCreated][taskId({}) 没有找到流程实例]", task.getId()); log.error("[processTaskCreated][taskId({}) 没有找到流程实例]", task.getId());
@ -1188,15 +1187,15 @@ public class BpmTaskServiceImpl implements BpmTaskService {
log.error("[processTaskCreated][processDefinitionId({}) 没有找到流程定义]", processInstance.getProcessDefinitionId()); log.error("[processTaskCreated][processDefinitionId({}) 没有找到流程定义]", processInstance.getProcessDefinitionId());
return; return;
} }
// 任务前置通知
// 2. 任务前置通知
if (ObjUtil.isNotNull(processDefinitionInfo.getTaskBeforeTriggerSetting())){ if (ObjUtil.isNotNull(processDefinitionInfo.getTaskBeforeTriggerSetting())){
BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getTaskBeforeTriggerSetting(); BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getTaskBeforeTriggerSetting();
BpmHttpRequestUtils.executeBpmHttpRequest(processInstance, BpmHttpRequestUtils.executeBpmHttpRequest(processInstance,
setting.getUrl(), setting.getUrl(), setting.getHeader(), setting.getBody(), true, setting.getResponse());
setting.getHeader(),
setting.getBody(),
true, setting.getResponse());
} }
// 3. 处理自动通过的情况例如说1无审批人时是否自动通过不通过2人工审核是否自动通过不通过
BpmnModel bpmnModel = modelService.getBpmnModelByDefinitionId(processInstance.getProcessDefinitionId()); BpmnModel bpmnModel = modelService.getBpmnModelByDefinitionId(processInstance.getProcessDefinitionId());
FlowElement userTaskElement = BpmnModelUtils.getFlowElementById(bpmnModel, task.getTaskDefinitionKey()); FlowElement userTaskElement = BpmnModelUtils.getFlowElementById(bpmnModel, task.getTaskDefinitionKey());
Integer approveType = BpmnModelUtils.parseApproveType(userTaskElement); Integer approveType = BpmnModelUtils.parseApproveType(userTaskElement);
@ -1421,14 +1420,12 @@ public class BpmTaskServiceImpl implements BpmTaskService {
log.error("[processTaskCompleted][processDefinitionId({}) 没有找到流程定义]", processInstance.getProcessDefinitionId()); log.error("[processTaskCompleted][processDefinitionId({}) 没有找到流程定义]", processInstance.getProcessDefinitionId());
return; return;
} }
// 任务前置通知
// 任务后置通知
if (ObjUtil.isNotNull(processDefinitionInfo.getTaskAfterTriggerSetting())){ if (ObjUtil.isNotNull(processDefinitionInfo.getTaskAfterTriggerSetting())){
BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getTaskAfterTriggerSetting(); BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getTaskAfterTriggerSetting();
BpmHttpRequestUtils.executeBpmHttpRequest(processInstance, BpmHttpRequestUtils.executeBpmHttpRequest(processInstance,
setting.getUrl(), setting.getUrl(), setting.getHeader(), setting.getBody(), true, setting.getResponse());
setting.getHeader(),
setting.getBody(),
true, setting.getResponse());
} }
} }

View File

@ -52,10 +52,7 @@ public class BpmUserTaskListener implements TaskListener {
listenerHandler.getBody().add(new BpmSimpleModelNodeVO.HttpRequestParam().setKey("taskId") listenerHandler.getBody().add(new BpmSimpleModelNodeVO.HttpRequestParam().setKey("taskId")
.setType(BpmHttpRequestParamTypeEnum.FIXED_VALUE.getType()).setValue(delegateTask.getId())); .setType(BpmHttpRequestParamTypeEnum.FIXED_VALUE.getType()).setValue(delegateTask.getId()));
BpmHttpRequestUtils.executeBpmHttpRequest(processInstance, BpmHttpRequestUtils.executeBpmHttpRequest(processInstance,
listenerHandler.getPath(), listenerHandler.getPath(), listenerHandler.getHeader(), listenerHandler.getBody(), false, null);
listenerHandler.getHeader(),
listenerHandler.getBody(),
false, null);
// 3. 是否需要后续操作TODO 芋艿待定 // 3. 是否需要后续操作TODO 芋艿待定
} }

View File

@ -45,10 +45,7 @@ public class BpmHttpCallbackTrigger extends BpmAbstractHttpRequestTrigger {
.setKey("taskDefineKey") // 重要回调请求 taskDefineKey 需要传给被调用方用于回调执行 .setKey("taskDefineKey") // 重要回调请求 taskDefineKey 需要传给被调用方用于回调执行
.setType(BpmHttpRequestParamTypeEnum.FIXED_VALUE.getType()).setValue(setting.getCallbackTaskDefineKey())); .setType(BpmHttpRequestParamTypeEnum.FIXED_VALUE.getType()).setValue(setting.getCallbackTaskDefineKey()));
BpmHttpRequestUtils.executeBpmHttpRequest(processInstance, BpmHttpRequestUtils.executeBpmHttpRequest(processInstance,
setting.getUrl(), setting.getUrl(), setting.getHeader(), setting.getBody(), false, null);
setting.getHeader(),
setting.getBody(),
false, null);
} }
} }

View File

@ -40,10 +40,7 @@ public class BpmSyncHttpRequestTrigger extends BpmAbstractHttpRequestTrigger {
// 2. 发起请求 // 2. 发起请求
ProcessInstance processInstance = processInstanceService.getProcessInstance(processInstanceId); ProcessInstance processInstance = processInstanceService.getProcessInstance(processInstanceId);
BpmHttpRequestUtils.executeBpmHttpRequest(processInstance, BpmHttpRequestUtils.executeBpmHttpRequest(processInstance,
setting.getUrl(), setting.getUrl(), setting.getHeader(), setting.getBody(), true, setting.getResponse());
setting.getHeader(),
setting.getBody(),
true, setting.getResponse());
} }
} }