【代码评审】BPM:办理人的逻辑

This commit is contained in:
YunaiV 2025-02-15 08:48:51 +08:00
parent 04fc7404e1
commit e9a3773b72
4 changed files with 12 additions and 9 deletions

View File

@ -85,8 +85,8 @@ public class BpmTaskRespVO {
@Schema(description = "是否填写审批意见", example = "false") @Schema(description = "是否填写审批意见", example = "false")
private Boolean reasonRequire; private Boolean reasonRequire;
@Schema(description = "节点类型", example = "10") // 只有Simple设计器的场景下才会使用此字段 @Schema(description = "节点类型", example = "10")
private Integer nodeType; private Integer nodeType; // 参见 BpmSimpleModelNodeTypeEnum 枚举
@Data @Data
@Schema(description = "流程实例") @Schema(description = "流程实例")

View File

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums; package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums;
import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelTypeEnum;
/** /**
* BPMN XML 常量信息 * BPMN XML 常量信息
* *
@ -131,6 +133,8 @@ public interface BpmnModelConstants {
/** /**
* 节点类型 * 节点类型
*
* 目前只有 {@link BpmModelTypeEnum#SIMPLE} UserTask 节点会设置该属性用于区分是审批节点还是办理节点
*/ */
String NODE_TYPE = "nodeType"; String NODE_TYPE = "nodeType";

View File

@ -5,6 +5,7 @@ import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -326,8 +327,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
ActivityNode activityNode = new ActivityNode().setId(task.getTaskDefinitionKey()).setName(task.getName()) ActivityNode activityNode = new ActivityNode().setId(task.getTaskDefinitionKey()).setName(task.getName())
.setNodeType(START_USER_NODE_ID.equals(task.getTaskDefinitionKey()) .setNodeType(START_USER_NODE_ID.equals(task.getTaskDefinitionKey())
? BpmSimpleModelNodeTypeEnum.START_USER_NODE.getType() ? BpmSimpleModelNodeTypeEnum.START_USER_NODE.getType()
: ObjectUtil.isNull(parseNodeType(flowNode)) ? : ObjUtil.defaultIfNull(parseNodeType(flowNode), // 目的解决办理节点的识别
BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType() : parseNodeType(flowNode)) BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType()))
.setStatus(FlowableUtils.getTaskStatus(task)) .setStatus(FlowableUtils.getTaskStatus(task))
.setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode)) .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode))
.setStartTime(DateUtils.of(task.getCreateTime())).setEndTime(DateUtils.of(task.getEndTime())) .setStartTime(DateUtils.of(task.getCreateTime())).setEndTime(DateUtils.of(task.getEndTime()))
@ -404,8 +405,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务会签/或签的任务开始时间相同 HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务会签/或签的任务开始时间相同
ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId()) ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId())
.setName(firstActivity.getActivityName()) .setName(firstActivity.getActivityName())
.setNodeType(ObjectUtil.isNull(parseNodeType(flowNode)) ? .setNodeType(ObjUtil.defaultIfNull(parseNodeType(flowNode), // 目的解决办理节点的识别
BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType() : parseNodeType(flowNode)) BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType()))
.setStatus(BpmTaskStatusEnum.RUNNING.getStatus()) .setStatus(BpmTaskStatusEnum.RUNNING.getStatus())
.setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode)) .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode))
.setStartTime(DateUtils.of(CollUtil.getFirst(taskActivities).getStartTime())) .setStartTime(DateUtils.of(CollUtil.getFirst(taskActivities).getStartTime()))

View File

@ -171,9 +171,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
} }
return BpmTaskConvert.INSTANCE.buildTodoTask(todoTask, childrenTasks, buttonsSetting, taskForm) return BpmTaskConvert.INSTANCE.buildTodoTask(todoTask, childrenTasks, buttonsSetting, taskForm)
.setSignEnable(signEnable) .setNodeType(nodeType).setSignEnable(signEnable).setReasonRequire(reasonRequire);
.setReasonRequire(reasonRequire)
.setNodeType(nodeType);
} }
@Override @Override