Commit 509e11a7b0cdbd3d32087fca4142b731c11f871b
1 parent
066f57e5
流程定义在创建时,增加 key 和 name 的校验,进一步保证 Model、Deployment、ProcessDefinition 的匹配性
Showing
2 changed files
with
23 additions
and
8 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java
| ... | ... | @@ -23,18 +23,21 @@ public interface BpmErrorCodeConstants { |
| 23 | 23 | ErrorCode OA_HR_POST_NOT_EXISTS = new ErrorCode(1009001006, "HR岗位未设置"); |
| 24 | 24 | ErrorCode OA_DAY_LEAVE_ERROR = new ErrorCode(1009001007, "请假天数必须>=1"); |
| 25 | 25 | |
| 26 | - // ========== OA 工作流模块 1-009-002-000 ========== | |
| 27 | - ErrorCode BPM_MODEL_KEY_EXISTS = new ErrorCode(1009002000, "已经存在流程标识为【{}】的流程"); | |
| 28 | - ErrorCode BPMN_MODEL_NOT_EXISTS = new ErrorCode(1009002001, "流程模型不存在"); | |
| 29 | - ErrorCode BPMN_MODEL_KEY_VALID = new ErrorCode(1009002002, "流程标识格式不正确,需要以字母或下划线开头,后接任意字母、数字、中划线、下划线、句点!"); | |
| 26 | + // ========== 流程模型 1-009-002-000 ========== | |
| 27 | + ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1009002000, "已经存在流程标识为【{}】的流程"); | |
| 28 | + ErrorCode MODEL_NOT_EXISTS = new ErrorCode(1009002001, "流程模型不存在"); | |
| 29 | + ErrorCode MODEL_KEY_VALID = new ErrorCode(1009002002, "流程标识格式不正确,需要以字母或下划线开头,后接任意字母、数字、中划线、下划线、句点!"); | |
| 30 | 30 | |
| 31 | + // ========== 流程模型 1-009-003-000 ========== | |
| 32 | + ErrorCode DEFINITION_KEY_NOT_MATCH = new ErrorCode(1009003000, "流程定义的标识期望是({}),当前是({}),请修改 BPMN 流程图"); | |
| 33 | + ErrorCode DEFINITION_NAME_NOT_MATCH = new ErrorCode(1009003000, "流程定义的名字期望是({}),当前是({}),请修改 BPMN 流程图"); | |
| 31 | 34 | |
| 32 | - ErrorCode BPMN_MODEL_ERROR = new ErrorCode(1004001002, "工作流模型异常"); | |
| 35 | + ErrorCode BPMN = new ErrorCode(1004001002, "工作流模型异常"); | |
| 33 | 36 | ErrorCode BPMN_MODEL_PROCESS_NOT_EXISTS = new ErrorCode(1004001009, "流程数据为空"); |
| 34 | 37 | ErrorCode BPMN_PROCESS_DEFINITION_NOT_EXISTS = new ErrorCode(1004001004, "流程定义不存在"); |
| 35 | 38 | |
| 36 | - // ========== 动态表单模块 1-009-003-000 ========== | |
| 37 | - ErrorCode BPM_FORM_NOT_EXISTS = new ErrorCode(1009003000, "动态表单不存在"); | |
| 38 | - ErrorCode BPM_FORM_FIELD_REPEAT = new ErrorCode(1009003000, "表单项({}) 和 ({}) 使用了相同的字段名({})"); | |
| 39 | + // ========== 动态表单模块 1-009-004-000 ========== | |
| 40 | + ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009004000, "动态表单不存在"); | |
| 41 | + ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1009004000, "表单项({}) 和 ({}) 使用了相同的字段名({})"); | |
| 39 | 42 | |
| 40 | 43 | } | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmDefinitionServiceImpl.java
| ... | ... | @@ -29,6 +29,9 @@ import org.springframework.validation.annotation.Validated; |
| 29 | 29 | import javax.annotation.Resource; |
| 30 | 30 | import java.util.*; |
| 31 | 31 | |
| 32 | +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.DEFINITION_KEY_NOT_MATCH; | |
| 33 | +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.DEFINITION_NAME_NOT_MATCH; | |
| 34 | +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | |
| 32 | 35 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
| 33 | 36 | |
| 34 | 37 | /** |
| ... | ... | @@ -144,6 +147,15 @@ public class BpmDefinitionServiceImpl implements BpmDefinitionService { |
| 144 | 147 | // 设置 ProcessDefinition 的 category 分类 |
| 145 | 148 | ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult(); |
| 146 | 149 | repositoryService.setProcessDefinitionCategory(definition.getId(), createReqDTO.getCategory()); |
| 150 | + // 注意 1,ProcessDefinition 的 key 和 name 是通过 BPMN 中的 <bpmn2:process /> 的 id 和 name 决定 | |
| 151 | + // 注意 2,目前该项目的设计上,需要保证 Model、Deployment、ProcessDefinition 使用相同的 key,保证关联性。 | |
| 152 | + // 否则,会导致 ProcessDefinition 的分页无法查询到。 | |
| 153 | + if (!Objects.equals(definition.getKey(), createReqDTO.getKey())) { | |
| 154 | + throw exception(DEFINITION_KEY_NOT_MATCH, createReqDTO.getKey(), definition.getKey()); | |
| 155 | + } | |
| 156 | + if (!Objects.equals(definition.getName(), createReqDTO.getName())) { | |
| 157 | + throw exception(DEFINITION_NAME_NOT_MATCH, createReqDTO.getName(), definition.getName()); | |
| 158 | + } | |
| 147 | 159 | |
| 148 | 160 | // 插入拓展表 |
| 149 | 161 | BpmProcessDefinitionDO definitionDO = BpmDefinitionConvert.INSTANCE.convert2(createReqDTO) | ... | ... |