Commit 24c03cf1767c62b3aa2bcb3886c79635e45cc51e

Authored by YunaiV
1 parent d2a8f3f2

BPM 模型重构 3:设置流程时,去掉 formId、description 等的传递,专注设计本身

yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/model/vo/BpmModelUpdateReqVO.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.model.vo; 1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.model.vo;
2 2
  3 +import cn.iocoder.yudao.adminserver.modules.bpm.enums.definition.BpmModelFormTypeEnum;
3 import io.swagger.annotations.ApiModel; 4 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 5 import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 6 import lombok.Data;
@@ -10,9 +11,7 @@ import javax.validation.constraints.NotEmpty; @@ -10,9 +11,7 @@ import javax.validation.constraints.NotEmpty;
10 11
11 @ApiModel("流程模型的更新 Request VO") 12 @ApiModel("流程模型的更新 Request VO")
12 @Data 13 @Data
13 -@EqualsAndHashCode(callSuper = true)  
14 -@ToString(callSuper = true)  
15 -public class BpmModelUpdateReqVO extends BpmModelBaseVO { 14 +public class BpmModelUpdateReqVO {
16 15
17 @ApiModelProperty(value = "编号", required = true, example = "1024") 16 @ApiModelProperty(value = "编号", required = true, example = "1024")
18 @NotEmpty(message = "编号不能为空") 17 @NotEmpty(message = "编号不能为空")
@@ -27,10 +26,18 @@ public class BpmModelUpdateReqVO extends BpmModelBaseVO { @@ -27,10 +26,18 @@ public class BpmModelUpdateReqVO extends BpmModelBaseVO {
27 @ApiModelProperty(value = "流程分类", notes = "参见 bpm_model_category 数据字典", example = "1") 26 @ApiModelProperty(value = "流程分类", notes = "参见 bpm_model_category 数据字典", example = "1")
28 private String category; 27 private String category;
29 28
30 - @ApiModelProperty(value = "表单编号", example = "1024")  
31 - private Long formId;  
32 -  
33 @ApiModelProperty(value = "BPMN XML", required = true) 29 @ApiModelProperty(value = "BPMN XML", required = true)
34 private String bpmnXml; 30 private String bpmnXml;
35 31
  32 + @ApiModelProperty(value = "表单类型", notes = "参见 bpm_model_form_type 数据字典", example = "1")
  33 + private Integer formType;
  34 + @ApiModelProperty(value = "表单编号", example = "1024", notes = "在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空")
  35 + private Long formId;
  36 + @ApiModelProperty(value = "自定义表单的提交路径,使用 Vue 的路由地址", example = "/bpm/oa/leave/create",
  37 + notes = "在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空")
  38 + private String formCustomCreatePath;
  39 + @ApiModelProperty(value = "自定义表单的查看路径,使用 Vue 的路由地址", example = "/bpm/oa/leave/view",
  40 + notes = "在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时,必须非空")
  41 + private String formCustomViewPath;
  42 +
36 } 43 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/model/BpmModelConvert.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.convert.model; 1 package cn.iocoder.yudao.adminserver.modules.bpm.convert.model;
2 2
  3 +import cn.hutool.core.util.StrUtil;
3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.model.vo.*; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.model.vo.*;
4 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO;
5 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmDefinitionCreateReqDTO; 6 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmDefinitionCreateReqDTO;
@@ -15,10 +16,11 @@ import org.mapstruct.factory.Mappers; @@ -15,10 +16,11 @@ import org.mapstruct.factory.Mappers;
15 16
16 import java.util.List; 17 import java.util.List;
17 import java.util.Map; 18 import java.util.Map;
  19 +import java.util.Objects;
18 20
19 21
20 /** 22 /**
21 - * 流程定义 Convert 23 + * 流程模型 Convert
22 * 24 *
23 * @author yunlongn 25 * @author yunlongn
24 */ 26 */
@@ -95,20 +97,34 @@ public interface BpmModelConvert { @@ -95,20 +97,34 @@ public interface BpmModelConvert {
95 default void copy(Model model, BpmModelCreateReqVO bean) { 97 default void copy(Model model, BpmModelCreateReqVO bean) {
96 model.setName(bean.getName()); 98 model.setName(bean.getName());
97 model.setKey(bean.getKey()); 99 model.setKey(bean.getKey());
98 - model.setMetaInfo(JsonUtils.toJsonString(this.buildMetaInfo(bean.getDescription(), null))); 100 + model.setMetaInfo(buildMetaInfoStr(null, bean.getDescription(), null, null,
  101 + null, null));
99 } 102 }
100 103
101 default void copy(Model model, BpmModelUpdateReqVO bean) { 104 default void copy(Model model, BpmModelUpdateReqVO bean) {
102 model.setName(bean.getName()); 105 model.setName(bean.getName());
103 model.setCategory(bean.getCategory()); 106 model.setCategory(bean.getCategory());
104 - model.setMetaInfo(JsonUtils.toJsonString(this.buildMetaInfo(bean.getDescription(), bean.getFormId()))); 107 + model.setMetaInfo(buildMetaInfoStr(JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class),
  108 + bean.getDescription(), bean.getFormType(), bean.getFormId(),
  109 + bean.getFormCustomCreatePath(), bean.getFormCustomViewPath()));
105 } 110 }
106 111
107 - default BpmModelMetaInfoRespDTO buildMetaInfo(String description, Long formId) {  
108 - BpmModelMetaInfoRespDTO metaInfo = new BpmModelMetaInfoRespDTO();  
109 - metaInfo.setDescription(description);  
110 - metaInfo.setFormId(formId);  
111 - return metaInfo; 112 + default String buildMetaInfoStr(BpmModelMetaInfoRespDTO metaInfo, String description, Integer formType,
  113 + Long formId, String formCustomCreatePath, String formCustomViewPath) {
  114 + if (metaInfo == null) {
  115 + metaInfo = new BpmModelMetaInfoRespDTO();
  116 + }
  117 + // 只有非空,才进行设置,避免更新时的覆盖
  118 + if (StrUtil.isNotEmpty(description)) {
  119 + metaInfo.setDescription(description);
  120 + }
  121 + if (Objects.nonNull(formType)) {
  122 + metaInfo.setFormType(formType);
  123 + metaInfo.setFormId(formId);
  124 + metaInfo.setFormCustomCreatePath(formCustomCreatePath);
  125 + metaInfo.setFormCustomViewPath(formCustomViewPath);
  126 + }
  127 + return JsonUtils.toJsonString(metaInfo);
112 } 128 }
113 129
114 BpmModelPageItemRespVO.ProcessDefinition convert(ProcessDefinition bean); 130 BpmModelPageItemRespVO.ProcessDefinition convert(ProcessDefinition bean);
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/dto/BpmModelMetaInfoRespDTO.java
@@ -19,7 +19,7 @@ public class BpmModelMetaInfoRespDTO { @@ -19,7 +19,7 @@ public class BpmModelMetaInfoRespDTO {
19 /** 19 /**
20 * 表单类型 20 * 表单类型
21 */ 21 */
22 - private Long formType; 22 + private Integer formType;
23 /** 23 /**
24 * 表单编号 24 * 表单编号
25 * 在表单类型为 {@link BpmModelFormTypeEnum#NORMAL} 时 25 * 在表单类型为 {@link BpmModelFormTypeEnum#NORMAL} 时
@@ -29,7 +29,7 @@ public class BpmModelMetaInfoRespDTO { @@ -29,7 +29,7 @@ public class BpmModelMetaInfoRespDTO {
29 * 自定义表单的提交路径,使用 Vue 的路由地址 29 * 自定义表单的提交路径,使用 Vue 的路由地址
30 * 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时 30 * 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时
31 */ 31 */
32 - private String formCustomSubmitPath; 32 + private String formCustomCreatePath;
33 /** 33 /**
34 * 自定义表单的查看路径,使用 Vue 的路由地址 34 * 自定义表单的查看路径,使用 Vue 的路由地址
35 * 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时 35 * 在表单类型为 {@link BpmModelFormTypeEnum#CUSTOM} 时
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmModelServiceImpl.java
@@ -149,7 +149,7 @@ public class BpmModelServiceImpl implements BpmModelService { @@ -149,7 +149,7 @@ public class BpmModelServiceImpl implements BpmModelService {
149 if (StrUtil.isEmpty(bpmnXml)) { 149 if (StrUtil.isEmpty(bpmnXml)) {
150 return; 150 return;
151 } 151 }
152 - repositoryService.addModelEditorSource(model.getId(), bpmnXml.getBytes(StandardCharsets.UTF_8)); 152 + repositoryService.addModelEditorSource(model.getId(), StrUtil.utf8Bytes(bpmnXml));
153 } 153 }
154 154
155 @Override 155 @Override
yudao-admin-ui/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
@@ -9,19 +9,6 @@ @@ -9,19 +9,6 @@
9 <el-form-item label="流程名称" prop="name"> 9 <el-form-item label="流程名称" prop="name">
10 <el-input v-model="model.name" placeholder="请输入流程名称" clearable @change="handleNameUpdate" /> 10 <el-input v-model="model.name" placeholder="请输入流程名称" clearable @change="handleNameUpdate" />
11 </el-form-item> 11 </el-form-item>
12 - <el-form-item label="流程分类" prop="category">  
13 - <el-select v-model="model.category" placeholder="请选择流程分类" clearable style="width: 100%">  
14 - <el-option v-for="dict in categoryDictDatas" :key="dict.value" :label="dict.label" :value="dict.value"/>  
15 - </el-select>  
16 - </el-form-item>  
17 - <el-form-item label="流程表单" prop="formId">  
18 - <el-select v-model="model.formId" placeholder="请选择流程表单,非必选哟!" clearable style="width: 100%">  
19 - <el-option v-for="form in forms" :key="form.id" :label="form.name" :value="form.id"/>  
20 - </el-select>  
21 - </el-form-item>  
22 - <el-form-item label="流程描述" prop="description">  
23 - <el-input type="textarea" v-model="model.description" clearable @change="handleDescriptionUpdate" />  
24 - </el-form-item>  
25 </div> 12 </div>
26 <div v-else> 13 <div v-else>
27 <el-form-item label="ID"> 14 <el-form-item label="ID">
@@ -35,9 +22,6 @@ @@ -35,9 +22,6 @@
35 </div> 22 </div>
36 </template> 23 </template>
37 <script> 24 <script>
38 -import {DICT_TYPE, getDictDatas} from "@/utils/dict";  
39 -import {getSimpleForms} from "@/api/bpm/form";  
40 -import {getModel} from "@/api/bpm/model";  
41 25
42 export default { 26 export default {
43 name: "ElementBaseInfo", 27 name: "ElementBaseInfo",
@@ -54,10 +38,7 @@ export default { @@ -54,10 +38,7 @@ export default {
54 rules: { 38 rules: {
55 key: [{ required: true, message: "流程标识不能为空", trigger: "blur" }], 39 key: [{ required: true, message: "流程标识不能为空", trigger: "blur" }],
56 name: [{ required: true, message: "流程名称不能为空", trigger: "blur" }], 40 name: [{ required: true, message: "流程名称不能为空", trigger: "blur" }],
57 - category: [{ required: true, message: "流程分类不能为空", trigger: "blur" }],  
58 }, 41 },
59 - // 数据字典  
60 - categoryDictDatas: getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY),  
61 }; 42 };
62 }, 43 },
63 watch: { 44 watch: {
@@ -77,10 +58,6 @@ export default { @@ -77,10 +58,6 @@ export default {
77 // } 58 // }
78 }, 59 },
79 created() { 60 created() {
80 - // 获得流程表单的下拉框的数据  
81 - getSimpleForms().then(response => {  
82 - this.forms = response.data  
83 - })  
84 // 针对上传的 bpmn 流程图时,需要延迟 1 秒的时间,保证 key 和 name 的更新 61 // 针对上传的 bpmn 流程图时,需要延迟 1 秒的时间,保证 key 和 name 的更新
85 setTimeout(() => { 62 setTimeout(() => {
86 this.handleKeyUpdate(this.model.key) 63 this.handleKeyUpdate(this.model.key)
yudao-admin-ui/src/router/index.js
@@ -171,8 +171,8 @@ export const constantRoutes = [ @@ -171,8 +171,8 @@ export const constantRoutes = [
171 { 171 {
172 path: 'manager/model/edit', 172 path: 'manager/model/edit',
173 component: (resolve) => require(['@/views/bpm/model/modelEditor'], resolve), 173 component: (resolve) => require(['@/views/bpm/model/modelEditor'], resolve),
174 - name: '流程模型-编辑',  
175 - meta: { title: '流程模型-编辑' } 174 + name: '设计流程',
  175 + meta: { title: '设计流程' }
176 } 176 }
177 ] 177 ]
178 }, 178 },