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 7  
8 8 import java.util.Arrays;
9 9  
10   -// TODO @jason:BpmUserTaskTimeoutHandlerTypeEnum 会不会更匹配哈
11 10 /**
12   - * 用户任务超时处理执行动作枚举
  11 + * 用户任务超时处理类型枚举
13 12 *
14 13 * @author jason
15 14 */
16 15 @Getter
17 16 @AllArgsConstructor
18   -public enum BpmUserTaskTimeoutActionEnum implements IntArrayValuable {
  17 +public enum BpmUserTaskTimeoutHandlerType implements IntArrayValuable {
19 18  
20 19 REMINDER(1,"自动提醒"),
21 20 APPROVE(2, "自动同意"),
... ... @@ -24,10 +23,10 @@ public enum BpmUserTaskTimeoutActionEnum implements IntArrayValuable {
24 23 private final Integer action;
25 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 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 4 import cn.iocoder.yudao.module.bpm.enums.definition.BpmApproveMethodEnum;
5 5 import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType;
6 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 8 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmTaskCandidateStrategyEnum;
9 9 import com.fasterxml.jackson.annotation.JsonIgnore;
10 10 import com.fasterxml.jackson.annotation.JsonInclude;
... ... @@ -104,7 +104,7 @@ public class BpmSimpleModelNodeVO {
104 104 private Boolean enable;
105 105  
106 106 @Schema(description = "任务超时未处理的行为", example = "1")
107   - @InEnum(BpmUserTaskTimeoutActionEnum.class)
  107 + @InEnum(BpmUserTaskTimeoutHandlerType.class)
108 108 private Integer action;
109 109  
110 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 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 4 * BPMN XML 常量信息
12 5 *
... ... @@ -89,16 +82,4 @@ public interface BpmnModelConstants {
89 82 */
90 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 58  
59 59 @Override
60 60 protected void activityCancelled(FlowableActivityCancelledEvent event) {
61   - // TODO @jason:如果用户主动取消,可能需要考虑这个
62 61 List<HistoricActivityInstance> activityList = activityService.getHistoricActivityListByExecutionId(event.getExecutionId());
63 62 if (CollUtil.isEmpty(activityList)) {
64 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 5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO;
6 6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRejectReqVO;
7 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 9 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants;
10 10 import cn.iocoder.yudao.module.bpm.framework.flowable.core.mq.message.task.TodoTaskReminderMessage;
11 11 import cn.iocoder.yudao.module.bpm.framework.flowable.core.mq.producer.task.TodoTaskReminderProducer;
... ... @@ -78,20 +78,20 @@ public class BpmTimerFiredEventListener extends AbstractFlowableEngineEventListe
78 78 }
79 79  
80 80 private void userTaskTimeoutHandler(String processInstanceId, String taskDefKey, Integer timeoutAction) {
81   - BpmUserTaskTimeoutActionEnum userTaskTimeoutAction = BpmUserTaskTimeoutActionEnum.actionOf(timeoutAction);
  81 + BpmUserTaskTimeoutHandlerType userTaskTimeoutAction = BpmUserTaskTimeoutHandlerType.typeOf(timeoutAction);
82 82 if (userTaskTimeoutAction != null) {
83 83 // 查询超时未处理的任务 TODO 加签的情况会不会有问题 ???
84 84 List<Task> taskList = bpmTaskService.getRunningTaskListByProcessInstanceId(processInstanceId, true,
85 85 null, taskDefKey);
86 86 taskList.forEach(task -> {
87 87 // 自动提醒
88   - if (userTaskTimeoutAction == BpmUserTaskTimeoutActionEnum.REMINDER) {
  88 + if (userTaskTimeoutAction == BpmUserTaskTimeoutHandlerType.REMINDER) {
89 89 TodoTaskReminderMessage message = new TodoTaskReminderMessage().setTenantId(Long.parseLong(task.getTenantId()))
90 90 .setUserId(Long.parseLong(task.getAssignee())).setTaskName(task.getName());
91 91 todoTaskReminderProducer.sendReminderMessage(message);
92 92 }
93 93 // 自动同意
94   - if (userTaskTimeoutAction == BpmUserTaskTimeoutActionEnum.APPROVE) {
  94 + if (userTaskTimeoutAction == BpmUserTaskTimeoutHandlerType.APPROVE) {
95 95 // TODO @芋艿 这个上下文如何清除呢? 任务通过后, BpmProcessInstanceEventListener 会有回调
96 96 TenantContextHolder.setTenantId(Long.parseLong(task.getTenantId()));
97 97 TenantContextHolder.setIgnore(false);
... ... @@ -100,7 +100,7 @@ public class BpmTimerFiredEventListener extends AbstractFlowableEngineEventListe
100 100 bpmTaskService.approveTask(Long.parseLong(task.getAssignee()), req);
101 101 }
102 102 // 自动拒绝
103   - if (userTaskTimeoutAction == BpmUserTaskTimeoutActionEnum.REJECT) {
  103 + if (userTaskTimeoutAction == BpmUserTaskTimeoutHandlerType.REJECT) {
104 104 // TODO @芋艿 这个上下文如何清除呢? 任务拒绝后, BpmProcessInstanceEventListener 会有回调
105 105 TenantContextHolder.setTenantId(Long.parseLong(task.getTenantId()));
106 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 27 import static cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.TimeoutHandler;
28 28 import static cn.iocoder.yudao.module.bpm.enums.definition.BpmBoundaryEventType.USER_TASK_TIMEOUT;
29 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 31 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.*;
32 32 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.SimpleModelConstants.*;
33 33 import static org.flowable.bpmn.constants.BpmnXMLConstants.*;
... ...