Commit cb5cfd31f0136782012f376ad75157fb22ab3c2f
1 parent
5d390d2d
仿钉钉流程设计- code review 修改
Showing
7 changed files
with
35 additions
and
40 deletions
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 | ... | ... |