Commit 5d390d2d65fb2213c97f333fb59837874cd62bcf
1 parent
1e30e485
bpm:code review 快搭实现
Showing
8 changed files
with
28 additions
and
11 deletions
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmFieldPermissionEnum.java
| ... | ... | @@ -13,14 +13,22 @@ import lombok.Getter; |
| 13 | 13 | @AllArgsConstructor |
| 14 | 14 | public enum BpmFieldPermissionEnum { |
| 15 | 15 | |
| 16 | + // TODO @jason:改成 WRITE、READ、NONE,更符合权限的感觉哈 | |
| 16 | 17 | EDITABLE(1, "可编辑"), |
| 17 | 18 | READONLY(2, "只读"), |
| 18 | 19 | HIDE(3, "隐藏"); |
| 19 | 20 | |
| 21 | + /** | |
| 22 | + * 权限 | |
| 23 | + */ | |
| 20 | 24 | private final Integer permission; |
| 25 | + /** | |
| 26 | + * 名字 | |
| 27 | + */ | |
| 21 | 28 | private final String name; |
| 22 | 29 | |
| 23 | 30 | public static BpmFieldPermissionEnum valueOf(Integer permission) { |
| 24 | 31 | return ArrayUtil.firstMatch(item -> item.getPermission().equals(permission), values()); |
| 25 | 32 | } |
| 33 | + | |
| 26 | 34 | } | ... | ... |
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmSimpleModelNodeType.java
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
| ... | ... | @@ -141,7 +141,7 @@ public class BpmTaskController { |
| 141 | 141 | // 获得 BpmnModel |
| 142 | 142 | BpmnModel bpmnModel = bpmProcessDefinitionService.getProcessDefinitionBpmnModel(processInstance.getProcessDefinitionId()); |
| 143 | 143 | return success(BpmTaskConvert.INSTANCE.buildTaskListByProcessInstanceId(taskList, processInstance, |
| 144 | - formMap, userMap, deptMap,bpmnModel)); | |
| 144 | + formMap, userMap, deptMap, bpmnModel)); | |
| 145 | 145 | } |
| 146 | 146 | |
| 147 | 147 | @PutMapping("/approve") | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java
| ... | ... | @@ -95,6 +95,7 @@ public interface BpmTaskConvert { |
| 95 | 95 | BpmFormDO form = MapUtil.get(formMap, NumberUtils.parseLong(task.getFormKey()), BpmFormDO.class); |
| 96 | 96 | if (form != null) { |
| 97 | 97 | // 测试一下权限处理 |
| 98 | + // TODO @jason:这里是不是还没实现完哈? | |
| 98 | 99 | // List<String> afterChangedFields = BpmnFormUtils.changeCreateFormFiledPermissionRule(form.getFields(), |
| 99 | 100 | // BpmnModelUtils.parseFormFieldsPermission(bpmnModel, task.getTaskDefinitionKey())); |
| 100 | 101 | ... | ... |
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 标准也需要使用这些字段哈; | |
| 3 | 4 | /** |
| 4 | 5 | * 仿钉钉快搭 JSON 常量信息 |
| 5 | 6 | * |
| ... | ... | @@ -7,18 +8,20 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums; |
| 7 | 8 | */ |
| 8 | 9 | public interface SimpleModelConstants { |
| 9 | 10 | |
| 11 | + // TODO @jason:改成 FORM_FIELD_PERMISSION_ELEMENT 会不会更精准哈; | |
| 10 | 12 | /** |
| 11 | 13 | * 流程表单字段权限, 用于标记字段权限 |
| 12 | 14 | */ |
| 13 | 15 | String FIELDS_PERMISSION = "fieldsPermission"; |
| 14 | - | |
| 16 | + // TODO @jason:改成 FORM_FIELD_PERMISSION_ELEMENT_FIELD_ATTRIBUTE 会不会更精准哈; | |
| 15 | 17 | /** |
| 16 | 18 | * 字段属性 |
| 17 | 19 | */ |
| 18 | 20 | String FIELD_ATTRIBUTE = "field"; |
| 19 | - | |
| 21 | + // TODO @jason:改成 FORM_FIELD_PERMISSION_ELEMENT_PERMISSION_ATTRIBUTE 会不会更精准哈; | |
| 20 | 22 | /** |
| 21 | 23 | * 权限属性 |
| 22 | 24 | */ |
| 23 | 25 | String PERMISSION_ATTRIBUTE = "permission"; |
| 26 | + | |
| 24 | 27 | } | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java
| ... | ... | @@ -25,11 +25,12 @@ public class BpmnModelUtils { |
| 25 | 25 | public static Integer parseCandidateStrategy(FlowElement userTask) { |
| 26 | 26 | Integer candidateStrategy = NumberUtils.parseInt(userTask.getAttributeValue( |
| 27 | 27 | BpmnModelConstants.NAMESPACE, BpmnModelConstants.USER_TASK_CANDIDATE_STRATEGY)); |
| 28 | - // @芋艿 尝试从 ExtensionElement 取. 后续相关扩展是否都可以 存 extensionElement。 如表单权限。 按钮权限 | |
| 28 | + // TODO @芋艿 尝试从 ExtensionElement 取. 后续相关扩展是否都可以 存 extensionElement。 如表单权限。 按钮权限 | |
| 29 | 29 | if (candidateStrategy == null) { |
| 30 | 30 | ExtensionElement element = CollUtil.getFirst(userTask.getExtensionElements().get(BpmnModelConstants.USER_TASK_CANDIDATE_STRATEGY)); |
| 31 | + // TODO @jason:改成下面这样,是不是看着更简洁哈 | |
| 32 | +// candidateStrategy = element != null ? NumberUtils.parseInt(element.getElementText()) : null; | |
| 31 | 33 | candidateStrategy = NumberUtils.parseInt(Optional.ofNullable(element).map(ExtensionElement::getElementText).orElse(null)); |
| 32 | - | |
| 33 | 34 | } |
| 34 | 35 | return candidateStrategy; |
| 35 | 36 | } |
| ... | ... | @@ -44,16 +45,17 @@ public class BpmnModelUtils { |
| 44 | 45 | return candidateParam; |
| 45 | 46 | } |
| 46 | 47 | |
| 47 | - public static Map<String,Integer> parseFormFieldsPermission(BpmnModel bpmnModel, String flowElementId) { | |
| 48 | + // TODO @jason:貌似这个没地方调用??? | |
| 49 | + public static Map<String, Integer> parseFormFieldsPermission(BpmnModel bpmnModel, String flowElementId) { | |
| 48 | 50 | FlowElement flowElement = getFlowElementById(bpmnModel, flowElementId); |
| 49 | 51 | if (flowElement == null) { |
| 50 | 52 | return null; |
| 51 | 53 | } |
| 52 | - final HashMap<String, Integer> fieldsPermission = MapUtil.newHashMap(); | |
| 54 | + Map<String, Integer> fieldsPermission = MapUtil.newHashMap(); | |
| 53 | 55 | List<ExtensionElement> extensionElements = flowElement.getExtensionElements().get(SimpleModelConstants.FIELDS_PERMISSION); |
| 54 | - extensionElements.forEach(el -> { | |
| 55 | - String field = el.getAttributeValue(FLOWABLE_EXTENSIONS_NAMESPACE, FIELD_ATTRIBUTE); | |
| 56 | - String permission = el.getAttributeValue(FLOWABLE_EXTENSIONS_NAMESPACE, SimpleModelConstants.PERMISSION_ATTRIBUTE); | |
| 56 | + extensionElements.forEach(element -> { | |
| 57 | + String field = element.getAttributeValue(FLOWABLE_EXTENSIONS_NAMESPACE, FIELD_ATTRIBUTE); | |
| 58 | + String permission = element.getAttributeValue(FLOWABLE_EXTENSIONS_NAMESPACE, SimpleModelConstants.PERMISSION_ATTRIBUTE); | |
| 57 | 59 | if (StrUtil.isNotEmpty(field) && StrUtil.isNotEmpty(permission)) { |
| 58 | 60 | fieldsPermission.put(field, Integer.parseInt(permission)); |
| 59 | 61 | } | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/util/BpmnFormUtils.java
| ... | ... | @@ -15,12 +15,14 @@ import java.util.Map; |
| 15 | 15 | |
| 16 | 16 | import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.SimpleModelConstants.FIELD_ATTRIBUTE; |
| 17 | 17 | |
| 18 | +// TODO @jason:这个类,挪到 framework 那的 util 包下哈; | |
| 18 | 19 | /** |
| 19 | 20 | * Bpmn 流程表单相关工具方法 |
| 20 | 21 | * |
| 21 | 22 | * @author jason |
| 22 | 23 | */ |
| 23 | 24 | public class BpmnFormUtils { |
| 25 | + | |
| 24 | 26 | private static final String CREATE_FORM_DISPLAY_ATTRIBUTE = "display"; |
| 25 | 27 | private static final String CREATE_FORM_DISABLED_ATTRIBUTE = "disabled"; |
| 26 | 28 | |
| ... | ... | @@ -65,4 +67,5 @@ public class BpmnFormUtils { |
| 65 | 67 | }); |
| 66 | 68 | return afterChangedFields; |
| 67 | 69 | } |
| 70 | + | |
| 68 | 71 | } | ... | ... |