Commit 6c69eeba094c1da3a0ee973563eaa8cacdbb14e7

Authored by jason
1 parent 32804d3e

仿钉钉流程设计- code review 部分修改

yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmUserTaskTimeoutActionEnum.java renamed to yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmUserTaskTimeoutHandlerType.java
@@ -7,15 +7,14 @@ import lombok.Getter; @@ -7,15 +7,14 @@ import lombok.Getter;
7 7
8 import java.util.Arrays; 8 import java.util.Arrays;
9 9
10 -// TODO @jason:BpmUserTaskTimeoutHandlerTypeEnum 会不会更匹配哈  
11 /** 10 /**
12 - * 用户任务超时处理执行动作枚举 11 + * 用户任务超时处理类型枚举
13 * 12 *
14 * @author jason 13 * @author jason
15 */ 14 */
16 @Getter 15 @Getter
17 @AllArgsConstructor 16 @AllArgsConstructor
18 -public enum BpmUserTaskTimeoutActionEnum implements IntArrayValuable { 17 +public enum BpmUserTaskTimeoutHandlerType implements IntArrayValuable {
19 18
20 REMINDER(1,"自动提醒"), 19 REMINDER(1,"自动提醒"),
21 APPROVE(2, "自动同意"), 20 APPROVE(2, "自动同意"),
@@ -24,10 +23,10 @@ public enum BpmUserTaskTimeoutActionEnum implements IntArrayValuable { @@ -24,10 +23,10 @@ public enum BpmUserTaskTimeoutActionEnum implements IntArrayValuable {
24 private final Integer action; 23 private final Integer action;
25 private final String name; 24 private final String name;
26 25
27 - public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BpmUserTaskTimeoutActionEnum::getAction).toArray(); 26 + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BpmUserTaskTimeoutHandlerType::getAction).toArray();
28 27
29 - public static BpmUserTaskTimeoutActionEnum actionOf(Integer action) {  
30 - return ArrayUtil.firstMatch(item -> item.getAction().equals(action), values()); 28 + public static BpmUserTaskTimeoutHandlerType typeOf(Integer type) {
  29 + return ArrayUtil.firstMatch(item -> item.getAction().equals(type), values());
31 } 30 }
32 31
33 @Override 32 @Override
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO.java
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.validation.InEnum; @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.validation.InEnum;
4 import cn.iocoder.yudao.module.bpm.enums.definition.BpmApproveMethodEnum; 4 import cn.iocoder.yudao.module.bpm.enums.definition.BpmApproveMethodEnum;
5 import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType; 5 import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType;
6 import cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskRejectHandlerType; 6 import cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskRejectHandlerType;
7 -import cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskTimeoutActionEnum; 7 +import cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskTimeoutHandlerType;
8 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmTaskCandidateStrategyEnum; 8 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmTaskCandidateStrategyEnum;
9 import com.fasterxml.jackson.annotation.JsonIgnore; 9 import com.fasterxml.jackson.annotation.JsonIgnore;
10 import com.fasterxml.jackson.annotation.JsonInclude; 10 import com.fasterxml.jackson.annotation.JsonInclude;
@@ -104,7 +104,7 @@ public class BpmSimpleModelNodeVO { @@ -104,7 +104,7 @@ public class BpmSimpleModelNodeVO {
104 private Boolean enable; 104 private Boolean enable;
105 105
106 @Schema(description = "任务超时未处理的行为", example = "1") 106 @Schema(description = "任务超时未处理的行为", example = "1")
107 - @InEnum(BpmUserTaskTimeoutActionEnum.class) 107 + @InEnum(BpmUserTaskTimeoutHandlerType.class)
108 private Integer action; 108 private Integer action;
109 109
110 @Schema(description = "超时时间", example = "PT6H") 110 @Schema(description = "超时时间", example = "PT6H")
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmnModelConstants.java
1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums; 1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums;
2 2
3 -import com.google.common.collect.ImmutableSet;  
4 -import org.flowable.bpmn.model.EndEvent;  
5 -import org.flowable.bpmn.model.FlowNode;  
6 -import org.flowable.bpmn.model.UserTask;  
7 -  
8 -import java.util.Set;  
9 -  
10 /** 3 /**
11 * BPMN XML 常量信息 4 * BPMN XML 常量信息
12 * 5 *
@@ -89,16 +82,4 @@ public interface BpmnModelConstants { @@ -89,16 +82,4 @@ public interface BpmnModelConstants {
89 */ 82 */
90 String BUTTON_SETTING_ELEMENT_ENABLE_ATTRIBUTE = "enable"; 83 String BUTTON_SETTING_ELEMENT_ENABLE_ATTRIBUTE = "enable";
91 84
92 - // TODO @jason:这个是不是可以删除啦  
93 - /**  
94 - * BPMN End Event 节点 Id, 用于后端生成 End Event 节点  
95 - */  
96 - String END_EVENT_ID = "EndEvent_1";  
97 -  
98 - // TODO @jason:这个是不是可以删除啦  
99 - /**  
100 - * 支持转仿钉钉设计模型的 Bpmn 节点  
101 - */  
102 - Set<Class<? extends FlowNode>> SUPPORT_CONVERT_SIMPLE_FlOW_NODES = ImmutableSet.of(UserTask.class, EndEvent.class);  
103 -  
104 } 85 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java
@@ -58,7 +58,6 @@ public class BpmTaskEventListener extends AbstractFlowableEngineEventListener { @@ -58,7 +58,6 @@ public class BpmTaskEventListener extends AbstractFlowableEngineEventListener {
58 58
59 @Override 59 @Override
60 protected void activityCancelled(FlowableActivityCancelledEvent event) { 60 protected void activityCancelled(FlowableActivityCancelledEvent event) {
61 - // TODO @jason:如果用户主动取消,可能需要考虑这个  
62 List<HistoricActivityInstance> activityList = activityService.getHistoricActivityListByExecutionId(event.getExecutionId()); 61 List<HistoricActivityInstance> activityList = activityService.getHistoricActivityListByExecutionId(event.getExecutionId());
63 if (CollUtil.isEmpty(activityList)) { 62 if (CollUtil.isEmpty(activityList)) {
64 log.error("[activityCancelled][使用 executionId({}) 查找不到对应的活动实例]", event.getExecutionId()); 63 log.error("[activityCancelled][使用 executionId({}) 查找不到对应的活动实例]", event.getExecutionId());
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTimerFiredEventListener.java
@@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO; 5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO;
6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRejectReqVO; 6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRejectReqVO;
7 import cn.iocoder.yudao.module.bpm.enums.definition.BpmBoundaryEventType; 7 import cn.iocoder.yudao.module.bpm.enums.definition.BpmBoundaryEventType;
8 -import cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskTimeoutActionEnum; 8 +import cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskTimeoutHandlerType;
9 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants; 9 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants;
10 import cn.iocoder.yudao.module.bpm.framework.flowable.core.mq.message.task.TodoTaskReminderMessage; 10 import cn.iocoder.yudao.module.bpm.framework.flowable.core.mq.message.task.TodoTaskReminderMessage;
11 import cn.iocoder.yudao.module.bpm.framework.flowable.core.mq.producer.task.TodoTaskReminderProducer; 11 import cn.iocoder.yudao.module.bpm.framework.flowable.core.mq.producer.task.TodoTaskReminderProducer;
@@ -78,20 +78,20 @@ public class BpmTimerFiredEventListener extends AbstractFlowableEngineEventListe @@ -78,20 +78,20 @@ public class BpmTimerFiredEventListener extends AbstractFlowableEngineEventListe
78 } 78 }
79 79
80 private void userTaskTimeoutHandler(String processInstanceId, String taskDefKey, Integer timeoutAction) { 80 private void userTaskTimeoutHandler(String processInstanceId, String taskDefKey, Integer timeoutAction) {
81 - BpmUserTaskTimeoutActionEnum userTaskTimeoutAction = BpmUserTaskTimeoutActionEnum.actionOf(timeoutAction); 81 + BpmUserTaskTimeoutHandlerType userTaskTimeoutAction = BpmUserTaskTimeoutHandlerType.typeOf(timeoutAction);
82 if (userTaskTimeoutAction != null) { 82 if (userTaskTimeoutAction != null) {
83 // 查询超时未处理的任务 TODO 加签的情况会不会有问题 ??? 83 // 查询超时未处理的任务 TODO 加签的情况会不会有问题 ???
84 List<Task> taskList = bpmTaskService.getRunningTaskListByProcessInstanceId(processInstanceId, true, 84 List<Task> taskList = bpmTaskService.getRunningTaskListByProcessInstanceId(processInstanceId, true,
85 null, taskDefKey); 85 null, taskDefKey);
86 taskList.forEach(task -> { 86 taskList.forEach(task -> {
87 // 自动提醒 87 // 自动提醒
88 - if (userTaskTimeoutAction == BpmUserTaskTimeoutActionEnum.REMINDER) { 88 + if (userTaskTimeoutAction == BpmUserTaskTimeoutHandlerType.REMINDER) {
89 TodoTaskReminderMessage message = new TodoTaskReminderMessage().setTenantId(Long.parseLong(task.getTenantId())) 89 TodoTaskReminderMessage message = new TodoTaskReminderMessage().setTenantId(Long.parseLong(task.getTenantId()))
90 .setUserId(Long.parseLong(task.getAssignee())).setTaskName(task.getName()); 90 .setUserId(Long.parseLong(task.getAssignee())).setTaskName(task.getName());
91 todoTaskReminderProducer.sendReminderMessage(message); 91 todoTaskReminderProducer.sendReminderMessage(message);
92 } 92 }
93 // 自动同意 93 // 自动同意
94 - if (userTaskTimeoutAction == BpmUserTaskTimeoutActionEnum.APPROVE) { 94 + if (userTaskTimeoutAction == BpmUserTaskTimeoutHandlerType.APPROVE) {
95 // TODO @芋艿 这个上下文如何清除呢? 任务通过后, BpmProcessInstanceEventListener 会有回调 95 // TODO @芋艿 这个上下文如何清除呢? 任务通过后, BpmProcessInstanceEventListener 会有回调
96 TenantContextHolder.setTenantId(Long.parseLong(task.getTenantId())); 96 TenantContextHolder.setTenantId(Long.parseLong(task.getTenantId()));
97 TenantContextHolder.setIgnore(false); 97 TenantContextHolder.setIgnore(false);
@@ -100,7 +100,7 @@ public class BpmTimerFiredEventListener extends AbstractFlowableEngineEventListe @@ -100,7 +100,7 @@ public class BpmTimerFiredEventListener extends AbstractFlowableEngineEventListe
100 bpmTaskService.approveTask(Long.parseLong(task.getAssignee()), req); 100 bpmTaskService.approveTask(Long.parseLong(task.getAssignee()), req);
101 } 101 }
102 // 自动拒绝 102 // 自动拒绝
103 - if (userTaskTimeoutAction == BpmUserTaskTimeoutActionEnum.REJECT) { 103 + if (userTaskTimeoutAction == BpmUserTaskTimeoutHandlerType.REJECT) {
104 // TODO @芋艿 这个上下文如何清除呢? 任务拒绝后, BpmProcessInstanceEventListener 会有回调 104 // TODO @芋艿 这个上下文如何清除呢? 任务拒绝后, BpmProcessInstanceEventListener 会有回调
105 TenantContextHolder.setTenantId(Long.parseLong(task.getTenantId())); 105 TenantContextHolder.setTenantId(Long.parseLong(task.getTenantId()));
106 TenantContextHolder.setIgnore(false); 106 TenantContextHolder.setIgnore(false);
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/simplemodel/SimpleModelUserTaskConfig.java deleted
1 -package cn.iocoder.yudao.module.bpm.framework.flowable.core.simplemodel;  
2 -  
3 -import cn.iocoder.yudao.module.bpm.enums.definition.BpmApproveMethodEnum;  
4 -import cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskRejectHandlerType;  
5 -import lombok.Data;  
6 -  
7 -import java.util.List;  
8 -import java.util.Map;  
9 -  
10 -// TODO @jason:这个貌似没用到,是不是可以删除啦  
11 -/**  
12 - * 仿钉钉流程设计器审批节点配置 Model  
13 - *  
14 - * @author jason  
15 - */  
16 -@Data  
17 -public class SimpleModelUserTaskConfig {  
18 -  
19 - /**  
20 - * 候选人策略  
21 - */  
22 - private Integer candidateStrategy;  
23 - /**  
24 - * 候选人参数  
25 - */  
26 - private String candidateParam;  
27 -  
28 - /**  
29 - * 字段权限  
30 - */  
31 - private List<Map<String,String>> fieldsPermission;  
32 -  
33 - /**  
34 - * 审批方式 {@link BpmApproveMethodEnum }  
35 - */  
36 - private Integer approveMethod;  
37 - /**  
38 - * 通过比例 当审批方式为 多人会签(按通过比例) 需设置  
39 - */  
40 - private Integer approveRatio;  
41 -  
42 - /**  
43 - * 超时处理  
44 - */  
45 - private TimeoutHandler timeoutHandler;  
46 -  
47 - /**  
48 - * 用户任务拒绝处理  
49 - */  
50 - private RejectHandler rejectHandler;  
51 -  
52 - @Data  
53 - public static class TimeoutHandler {  
54 -  
55 - /**  
56 - * 是否开启超时处理  
57 - */  
58 - private Boolean enable;  
59 -  
60 - /**  
61 - * 超时执行的动作  
62 - */  
63 - private Integer action;  
64 -  
65 - /**  
66 - * 超时时间设置  
67 - */  
68 - private String timeDuration;  
69 -  
70 - /**  
71 - * 如果执行动作是自动提醒, 最大提醒次数  
72 - */  
73 - private Integer maxRemindCount;  
74 - }  
75 -  
76 - @Data  
77 - public static class RejectHandler {  
78 -  
79 - /**  
80 - * 用户任务拒绝处理类型 {@link BpmUserTaskRejectHandlerType}  
81 - */  
82 - private Integer type;  
83 -  
84 - /**  
85 - * 用户任务拒绝后驳回的节点 Id  
86 - */  
87 - private String returnNodeId;  
88 - }  
89 -  
90 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnFormUtils.java deleted
1 -package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;  
2 -  
3 -import cn.hutool.core.collection.CollUtil;  
4 -import cn.hutool.core.lang.Assert;  
5 -import cn.hutool.core.map.MapUtil;  
6 -import cn.hutool.core.util.ObjUtil;  
7 -import cn.hutool.core.util.StrUtil;  
8 -import cn.iocoder.yudao.framework.common.util.json.JsonUtils;  
9 -import cn.iocoder.yudao.module.bpm.enums.definition.BpmFieldPermissionEnum;  
10 -import com.fasterxml.jackson.core.type.TypeReference;  
11 -  
12 -import java.util.ArrayList;  
13 -import java.util.List;  
14 -import java.util.Map;  
15 -  
16 -import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.FORM_FIELD_PERMISSION_ELEMENT_FIELD_ATTRIBUTE;  
17 -  
18 -// TODO @芋艿:这块去研究下!  
19 -/**  
20 - * Bpmn 流程表单相关工具方法  
21 - *  
22 - * @author jason  
23 - */  
24 -public class BpmnFormUtils {  
25 -  
26 - private static final String CREATE_FORM_DISPLAY_ATTRIBUTE = "display";  
27 - private static final String CREATE_FORM_DISABLED_ATTRIBUTE = "disabled";  
28 -  
29 - // TODO @jason:这个方法,还要哇?  
30 - /**  
31 - * 修改 form-create 表单组件字段权限规则: 包括可编辑、只读、隐藏规则  
32 - *  
33 - * @param fields 字段规则  
34 - * @param fieldsPermission 字段权限  
35 - * @return 修改权限后的字段规则  
36 - */  
37 - public static List<String> changeCreateFormFiledPermissionRule(List<String> fields, Map<String,Integer> fieldsPermission) {  
38 - if ( CollUtil.isEmpty(fields) || MapUtil.isEmpty(fieldsPermission)) {  
39 - return fields;  
40 - }  
41 - List<String> afterChangedFields = new ArrayList<>(fields.size());  
42 - fields.forEach( f-> {  
43 - Map<String, Object> fieldMap = JsonUtils.parseObject(f, new TypeReference<>() {});  
44 - String field = ObjUtil.defaultIfNull(fieldMap.get(FORM_FIELD_PERMISSION_ELEMENT_FIELD_ATTRIBUTE), Object::toString, "");  
45 - if (StrUtil.isEmpty(field) || !fieldsPermission.containsKey(field)) {  
46 - afterChangedFields.add(f);  
47 - return;  
48 - }  
49 - BpmFieldPermissionEnum fieldPermission = BpmFieldPermissionEnum.valueOf(fieldsPermission.get(field));  
50 - Assert.notNull(fieldPermission, "字段权限不匹配");  
51 - if (BpmFieldPermissionEnum.NONE == fieldPermission) {  
52 - fieldMap.put(CREATE_FORM_DISPLAY_ATTRIBUTE, Boolean.FALSE);  
53 - } else if (BpmFieldPermissionEnum.WRITE == fieldPermission){  
54 - Map<String, Object> props = MapUtil.get(fieldMap, "props", new cn.hutool.core.lang.TypeReference<>() {});  
55 - if (props == null) {  
56 - props = MapUtil.newHashMap();  
57 - fieldMap.put("props", props);  
58 - }  
59 - props.put(CREATE_FORM_DISABLED_ATTRIBUTE, Boolean.FALSE);  
60 - } else if (BpmFieldPermissionEnum.READ == fieldPermission) {  
61 - Map<String, Object> props = MapUtil.get(fieldMap, "props", new cn.hutool.core.lang.TypeReference<>() {});  
62 - if (props == null) {  
63 - props = MapUtil.newHashMap();  
64 - fieldMap.put("props", props);  
65 - }  
66 - props.put(CREATE_FORM_DISABLED_ATTRIBUTE, Boolean.TRUE);  
67 - }  
68 - afterChangedFields.add(JsonUtils.toJsonString(fieldMap));  
69 - });  
70 - return afterChangedFields;  
71 - }  
72 -  
73 -}  
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
@@ -27,7 +27,7 @@ import static cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.s @@ -27,7 +27,7 @@ import static cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.s
27 import static cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.TimeoutHandler; 27 import static cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.TimeoutHandler;
28 import static cn.iocoder.yudao.module.bpm.enums.definition.BpmBoundaryEventType.USER_TASK_TIMEOUT; 28 import static cn.iocoder.yudao.module.bpm.enums.definition.BpmBoundaryEventType.USER_TASK_TIMEOUT;
29 import static cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType.*; 29 import static cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType.*;
30 -import static cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskTimeoutActionEnum.REMINDER; 30 +import static cn.iocoder.yudao.module.bpm.enums.definition.BpmUserTaskTimeoutHandlerType.REMINDER;
31 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.*; 31 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.*;
32 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.SimpleModelConstants.*; 32 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.SimpleModelConstants.*;
33 import static org.flowable.bpmn.constants.BpmnXMLConstants.*; 33 import static org.flowable.bpmn.constants.BpmnXMLConstants.*;