Commit cb5cfd31f0136782012f376ad75157fb22ab3c2f

Authored by jason
1 parent 5d390d2d

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

yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmFieldPermissionEnum.java
... ... @@ -13,10 +13,9 @@ import lombok.Getter;
13 13 @AllArgsConstructor
14 14 public enum BpmFieldPermissionEnum {
15 15  
16   - // TODO @jason:改成 WRITE、READ、NONE,更符合权限的感觉哈
17   - EDITABLE(1, "可编辑"),
18   - READONLY(2, "只读"),
19   - HIDE(3, "隐藏");
  16 + WRITE(1, "可编辑"),
  17 + READ(2, "只读"),
  18 + NONE(3, "隐藏");
20 19  
21 20 /**
22 21 * 权限
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java
... ... @@ -96,6 +96,7 @@ public interface BpmTaskConvert {
96 96 if (form != null) {
97 97 // 测试一下权限处理
98 98 // TODO @jason:这里是不是还没实现完哈?
  99 + // TODO @芋艿 测试了一下。 暂时注释掉。 前端不知道要怎样改, 可能需要讨论一下如何改
99 100 // List<String> afterChangedFields = BpmnFormUtils.changeCreateFormFiledPermissionRule(form.getFields(),
100 101 // BpmnModelUtils.parseFormFieldsPermission(bpmnModel, task.getTaskDefinitionKey()));
101 102  
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmnModelConstants.java
... ... @@ -28,6 +28,21 @@ public interface BpmnModelConstants {
28 28 */
29 29 String USER_TASK_CANDIDATE_PARAM = "candidateParam";
30 30  
  31 + /**
  32 + * BPMN ExtensionElement 流程表单字段权限元素, 用于标记字段权限
  33 + */
  34 + String FORM_FIELD_PERMISSION_ELEMENT = "fieldsPermission";
  35 +
  36 + /**
  37 + * BPMN ExtensionElement Attribute, 用于标记表单字段
  38 + */
  39 + String FORM_FIELD_PERMISSION_ELEMENT_FIELD_ATTRIBUTE = "field";
  40 +
  41 + /**
  42 + * BPMN ExtensionElement Attribute, 用于标记表单权限
  43 + */
  44 + String FORM_FIELD_PERMISSION_ELEMENT_PERMISSION_ATTRIBUTE = "permission";
  45 +
31 46 // TODO @芋艿:这里后面得关注下;
32 47 /**
33 48 * BPMN End Event 节点 Id, 用于后端生成 End Event 节点
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/SimpleModelConstants.java
1 1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums;
2 2  
3   -// TODO @jason:这个类,挪到 BpmnModelConstants 里,会不会好点,因为后续 BPMN 标准也需要使用这些字段哈;
4 3 /**
5 4 * 仿钉钉快搭 JSON 常量信息
6 5 *
... ... @@ -8,20 +7,4 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums;
8 7 */
9 8 public interface SimpleModelConstants {
10 9  
11   - // TODO @jason:改成 FORM_FIELD_PERMISSION_ELEMENT 会不会更精准哈;
12   - /**
13   - * 流程表单字段权限, 用于标记字段权限
14   - */
15   - String FIELDS_PERMISSION = "fieldsPermission";
16   - // TODO @jason:改成 FORM_FIELD_PERMISSION_ELEMENT_FIELD_ATTRIBUTE 会不会更精准哈;
17   - /**
18   - * 字段属性
19   - */
20   - String FIELD_ATTRIBUTE = "field";
21   - // TODO @jason:改成 FORM_FIELD_PERMISSION_ELEMENT_PERMISSION_ATTRIBUTE 会不会更精准哈;
22   - /**
23   - * 权限属性
24   - */
25   - String PERMISSION_ATTRIBUTE = "permission";
26   -
27 10 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/util/BpmnFormUtils.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnFormUtils.java
1   -package cn.iocoder.yudao.module.bpm.service.util;
  1 +package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.lang.Assert;
... ... @@ -13,9 +13,9 @@ import java.util.ArrayList;
13 13 import java.util.List;
14 14 import java.util.Map;
15 15  
16   -import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.SimpleModelConstants.FIELD_ATTRIBUTE;
  16 +import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.FORM_FIELD_PERMISSION_ELEMENT_FIELD_ATTRIBUTE;
  17 +
17 18  
18   -// TODO @jason:这个类,挪到 framework 那的 util 包下哈;
19 19 /**
20 20 * Bpmn 流程表单相关工具方法
21 21 *
... ... @@ -39,23 +39,23 @@ public class BpmnFormUtils {
39 39 List<String> afterChangedFields = new ArrayList<>(fields.size());
40 40 fields.forEach( f-> {
41 41 Map<String, Object> fieldMap = JsonUtils.parseObject(f, new TypeReference<>() {});
42   - String field = ObjUtil.defaultIfNull(fieldMap.get(FIELD_ATTRIBUTE), Object::toString, "");
  42 + String field = ObjUtil.defaultIfNull(fieldMap.get(FORM_FIELD_PERMISSION_ELEMENT_FIELD_ATTRIBUTE), Object::toString, "");
43 43 if (StrUtil.isEmpty(field) || !fieldsPermission.containsKey(field)) {
44 44 afterChangedFields.add(f);
45 45 return;
46 46 }
47 47 BpmFieldPermissionEnum fieldPermission = BpmFieldPermissionEnum.valueOf(fieldsPermission.get(field));
48 48 Assert.notNull(fieldPermission, "字段权限不匹配");
49   - if (BpmFieldPermissionEnum.HIDE == fieldPermission) {
  49 + if (BpmFieldPermissionEnum.NONE == fieldPermission) {
50 50 fieldMap.put(CREATE_FORM_DISPLAY_ATTRIBUTE, Boolean.FALSE);
51   - } else if (BpmFieldPermissionEnum.EDITABLE == fieldPermission){
  51 + } else if (BpmFieldPermissionEnum.WRITE == fieldPermission){
52 52 Map<String, Object> props = MapUtil.get(fieldMap, "props", new cn.hutool.core.lang.TypeReference<>() {});
53 53 if (props == null) {
54 54 props = MapUtil.newHashMap();
55 55 fieldMap.put("props", props);
56 56 }
57 57 props.put(CREATE_FORM_DISABLED_ATTRIBUTE, Boolean.FALSE);
58   - } else if (BpmFieldPermissionEnum.READONLY == fieldPermission) {
  58 + } else if (BpmFieldPermissionEnum.READ == fieldPermission) {
59 59 Map<String, Object> props = MapUtil.get(fieldMap, "props", new cn.hutool.core.lang.TypeReference<>() {});
60 60 if (props == null) {
61 61 props = MapUtil.newHashMap();
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java
... ... @@ -6,7 +6,6 @@ import cn.hutool.core.util.ArrayUtil;
6 6 import cn.hutool.core.util.StrUtil;
7 7 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
8 8 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants;
9   -import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.SimpleModelConstants;
10 9 import org.flowable.bpmn.converter.BpmnXMLConverter;
11 10 import org.flowable.bpmn.model.Process;
12 11 import org.flowable.bpmn.model.*;
... ... @@ -14,7 +13,7 @@ import org.flowable.common.engine.impl.util.io.BytesStreamSource;
14 13  
15 14 import java.util.*;
16 15  
17   -import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.SimpleModelConstants.FIELD_ATTRIBUTE;
  16 +import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.*;
18 17 import static org.flowable.bpmn.constants.BpmnXMLConstants.FLOWABLE_EXTENSIONS_NAMESPACE;
19 18  
20 19 /**
... ... @@ -28,15 +27,13 @@ public class BpmnModelUtils {
28 27 // TODO @芋艿 尝试从 ExtensionElement 取. 后续相关扩展是否都可以 存 extensionElement。 如表单权限。 按钮权限
29 28 if (candidateStrategy == null) {
30 29 ExtensionElement element = CollUtil.getFirst(userTask.getExtensionElements().get(BpmnModelConstants.USER_TASK_CANDIDATE_STRATEGY));
31   - // TODO @jason:改成下面这样,是不是看着更简洁哈
32   -// candidateStrategy = element != null ? NumberUtils.parseInt(element.getElementText()) : null;
33 30 candidateStrategy = NumberUtils.parseInt(Optional.ofNullable(element).map(ExtensionElement::getElementText).orElse(null));
34 31 }
35 32 return candidateStrategy;
36 33 }
37 34  
38 35 public static String parseCandidateParam(FlowElement userTask) {
39   - String candidateParam = userTask.getAttributeValue(
  36 + String candidateParam = userTask.getAttributeValue(
40 37 BpmnModelConstants.NAMESPACE, BpmnModelConstants.USER_TASK_CANDIDATE_PARAM);
41 38 if (candidateParam == null) {
42 39 ExtensionElement element = CollUtil.getFirst(userTask.getExtensionElements().get(BpmnModelConstants.USER_TASK_CANDIDATE_PARAM));
... ... @@ -45,17 +42,17 @@ public class BpmnModelUtils {
45 42 return candidateParam;
46 43 }
47 44  
48   - // TODO @jason:貌似这个没地方调用???
  45 + // TODO @jason:貌似这个没地方调用??? @芋艿 在 BpmTaskConvert里面。暂时注释掉了。
49 46 public static Map<String, Integer> parseFormFieldsPermission(BpmnModel bpmnModel, String flowElementId) {
50 47 FlowElement flowElement = getFlowElementById(bpmnModel, flowElementId);
51 48 if (flowElement == null) {
52 49 return null;
53 50 }
54 51 Map<String, Integer> fieldsPermission = MapUtil.newHashMap();
55   - List<ExtensionElement> extensionElements = flowElement.getExtensionElements().get(SimpleModelConstants.FIELDS_PERMISSION);
  52 + List<ExtensionElement> extensionElements = flowElement.getExtensionElements().get(FORM_FIELD_PERMISSION_ELEMENT);
56 53 extensionElements.forEach(element -> {
57   - String field = element.getAttributeValue(FLOWABLE_EXTENSIONS_NAMESPACE, FIELD_ATTRIBUTE);
58   - String permission = element.getAttributeValue(FLOWABLE_EXTENSIONS_NAMESPACE, SimpleModelConstants.PERMISSION_ATTRIBUTE);
  54 + String field = element.getAttributeValue(FLOWABLE_EXTENSIONS_NAMESPACE, FORM_FIELD_PERMISSION_ELEMENT_FIELD_ATTRIBUTE);
  55 + String permission = element.getAttributeValue(FLOWABLE_EXTENSIONS_NAMESPACE, FORM_FIELD_PERMISSION_ELEMENT_PERMISSION_ATTRIBUTE);
59 56 if (StrUtil.isNotEmpty(field) && StrUtil.isNotEmpty(permission)) {
60 57 fieldsPermission.put(field, Integer.parseInt(permission));
61 58 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
... ... @@ -16,7 +16,7 @@ import org.flowable.bpmn.model.*;
16 16 import java.util.List;
17 17 import java.util.Map;
18 18  
19   -import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.SimpleModelConstants.FIELDS_PERMISSION;
  19 +import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.FORM_FIELD_PERMISSION_ELEMENT;
20 20 import static org.flowable.bpmn.constants.BpmnXMLConstants.FLOWABLE_EXTENSIONS_NAMESPACE;
21 21 import static org.flowable.bpmn.constants.BpmnXMLConstants.FLOWABLE_EXTENSIONS_PREFIX;
22 22  
... ... @@ -267,9 +267,9 @@ public class SimpleModelUtils {
267 267 */
268 268 private static void addFormFieldsPermission(BpmSimpleModelNodeVO node, FlowElement flowElement) {
269 269 List<Map<String, String>> fieldsPermissions = MapUtil.get(node.getAttributes(),
270   - FIELDS_PERMISSION, new TypeReference<>() {});
  270 + FORM_FIELD_PERMISSION_ELEMENT, new TypeReference<>() {});
271 271 if (CollUtil.isNotEmpty(fieldsPermissions)) {
272   - fieldsPermissions.forEach(item -> addExtensionElement(flowElement, FIELDS_PERMISSION, item));
  272 + fieldsPermissions.forEach(item -> addExtensionElement(flowElement, FORM_FIELD_PERMISSION_ELEMENT, item));
273 273 }
274 274 }
275 275  
... ...