【代码评审】BPM:任务前置、后置通知
This commit is contained in:
parent
979485027d
commit
67e548d545
|
@ -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());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 芋艿:待定!
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue