Commit 5b97d565cd6632ed340f6d8ae077e31cbd253e83
1 parent
95bbf749
仿钉钉流程设计- code review 修改
Showing
9 changed files
with
75 additions
and
144 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmModelController.java
| @@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.common.util.io.IoUtils; | @@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.common.util.io.IoUtils; | ||
| 8 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | 8 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 9 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 9 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 10 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*; | 10 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*; |
| 11 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; | ||
| 12 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelUpdateReqVO; | ||
| 11 | import cn.iocoder.yudao.module.bpm.convert.definition.BpmModelConvert; | 13 | import cn.iocoder.yudao.module.bpm.convert.definition.BpmModelConvert; |
| 12 | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO; | 14 | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO; |
| 13 | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; | 15 | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; |
| @@ -145,4 +147,21 @@ public class BpmModelController { | @@ -145,4 +147,21 @@ public class BpmModelController { | ||
| 145 | return success(true); | 147 | return success(true); |
| 146 | } | 148 | } |
| 147 | 149 | ||
| 150 | + // ========== 仿钉钉/飞书的精简模型 ========= | ||
| 151 | + | ||
| 152 | + @GetMapping("/simple/get") | ||
| 153 | + @Operation(summary = "获得仿钉钉流程设计模型") | ||
| 154 | + @Parameter(name = "modelId", description = "流程模型编号", required = true, example = "a2c5eee0-eb6c-11ee-abf4-0c37967c420a") | ||
| 155 | + public CommonResult<BpmSimpleModelNodeVO> getSimpleModel(@RequestParam("modelId") String modelId){ | ||
| 156 | + return success(modelService.getSimpleModel(modelId)); | ||
| 157 | + } | ||
| 158 | + | ||
| 159 | + @PostMapping("/simple/update") | ||
| 160 | + @Operation(summary = "保存仿钉钉流程设计模型") | ||
| 161 | + @PreAuthorize("@ss.hasPermission('bpm:model:update')") | ||
| 162 | + public CommonResult<Boolean> updateSimpleModel(@Valid @RequestBody BpmSimpleModelUpdateReqVO reqVO) { | ||
| 163 | + modelService.updateSimpleModel(reqVO); | ||
| 164 | + return success(Boolean.TRUE); | ||
| 165 | + } | ||
| 166 | + | ||
| 148 | } | 167 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmSimpleModelController.java deleted
| 1 | -package cn.iocoder.yudao.module.bpm.controller.admin.definition; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 4 | -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelNodeVO; | ||
| 5 | -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelSaveReqVO; | ||
| 6 | -import cn.iocoder.yudao.module.bpm.service.definition.BpmSimpleModelService; | ||
| 7 | -import io.swagger.v3.oas.annotations.Operation; | ||
| 8 | -import io.swagger.v3.oas.annotations.Parameter; | ||
| 9 | -import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 10 | -import jakarta.annotation.Resource; | ||
| 11 | -import jakarta.validation.Valid; | ||
| 12 | -import org.springframework.security.access.prepost.PreAuthorize; | ||
| 13 | -import org.springframework.web.bind.annotation.*; | ||
| 14 | - | ||
| 15 | -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 16 | - | ||
| 17 | -// TODO @jason:融合到 BpmModelController 中,url 是 /bpm/model/simple/... 这样,通过一个子目录区分;目的是:逻辑更聚焦! | ||
| 18 | -@Tag(name = "管理后台 - BPM 仿钉钉流程设计器") | ||
| 19 | -@RestController | ||
| 20 | -@RequestMapping("/bpm/simple") | ||
| 21 | -public class BpmSimpleModelController { | ||
| 22 | - @Resource | ||
| 23 | - private BpmSimpleModelService bpmSimpleModelService; | ||
| 24 | - | ||
| 25 | - @PostMapping("/save") | ||
| 26 | - @Operation(summary = "保存仿钉钉流程设计模型") | ||
| 27 | - @PreAuthorize("@ss.hasPermission('bpm:model:update')") | ||
| 28 | - public CommonResult<Boolean> saveSimpleModel(@Valid @RequestBody BpmSimpleModelSaveReqVO reqVO) { | ||
| 29 | - return success(bpmSimpleModelService.saveSimpleModel(reqVO)); | ||
| 30 | - } | ||
| 31 | - | ||
| 32 | - @GetMapping("/get") | ||
| 33 | - @Operation(summary = "获得仿钉钉流程设计模型") | ||
| 34 | - @Parameter(name = "modelId", description = "流程模型编号", required = true, example = "a2c5eee0-eb6c-11ee-abf4-0c37967c420a") | ||
| 35 | - public CommonResult<BpmSimpleModelNodeVO> getSimpleModel(@RequestParam("modelId") String modelId){ | ||
| 36 | - return success(bpmSimpleModelService.getSimpleModel(modelId)); | ||
| 37 | - } | ||
| 38 | - | ||
| 39 | -} |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/simple/BpmSimpleModelNodeVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO.java
| 1 | -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple; | 1 | +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType; | 4 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType; |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/simple/BpmSimpleModelSaveReqVO.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelUpdateReqVO.java
| 1 | -package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple; | 1 | +package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import jakarta.validation.Valid; | 4 | import jakarta.validation.Valid; |
| @@ -6,10 +6,9 @@ import jakarta.validation.constraints.NotEmpty; | @@ -6,10 +6,9 @@ import jakarta.validation.constraints.NotEmpty; | ||
| 6 | import jakarta.validation.constraints.NotNull; | 6 | import jakarta.validation.constraints.NotNull; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| 9 | -// TODO @芋艿:或许挪到 model 里的 simple 包 | ||
| 10 | @Schema(description = "管理后台 - 仿钉钉流程设计模型的新增/修改 Request VO") | 9 | @Schema(description = "管理后台 - 仿钉钉流程设计模型的新增/修改 Request VO") |
| 11 | @Data | 10 | @Data |
| 12 | -public class BpmSimpleModelSaveReqVO { | 11 | +public class BpmSimpleModelUpdateReqVO { |
| 13 | 12 | ||
| 14 | @Schema(description = "流程模型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | 13 | @Schema(description = "流程模型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 15 | @NotEmpty(message = "流程模型编号不能为空") | 14 | @NotEmpty(message = "流程模型编号不能为空") |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
| @@ -7,7 +7,7 @@ import cn.hutool.core.lang.TypeReference; | @@ -7,7 +7,7 @@ import cn.hutool.core.lang.TypeReference; | ||
| 7 | import cn.hutool.core.map.MapUtil; | 7 | import cn.hutool.core.map.MapUtil; |
| 8 | import cn.hutool.core.util.*; | 8 | import cn.hutool.core.util.*; |
| 9 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 9 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 10 | -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelNodeVO; | 10 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; |
| 11 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmApproveMethodEnum; | 11 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmApproveMethodEnum; |
| 12 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModeConditionType; | 12 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModeConditionType; |
| 13 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType; | 13 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType; |
| @@ -59,11 +59,6 @@ public class SimpleModelUtils { | @@ -59,11 +59,6 @@ public class SimpleModelUtils { | ||
| 59 | */ | 59 | */ |
| 60 | public static BpmnModel convertSimpleModelToBpmnModel(String processId, String processName, BpmSimpleModelNodeVO simpleModelNode) { | 60 | public static BpmnModel convertSimpleModelToBpmnModel(String processId, String processName, BpmSimpleModelNodeVO simpleModelNode) { |
| 61 | BpmnModel bpmnModel = new BpmnModel(); | 61 | BpmnModel bpmnModel = new BpmnModel(); |
| 62 | - // 不加这个 解析 Message 会报 NPE 异常 | ||
| 63 | - bpmnModel.setTargetNamespace(BPMN2_NAMESPACE); | ||
| 64 | - Message rejectPostProcessMsg = new Message(); | ||
| 65 | - rejectPostProcessMsg.setName(REJECT_POST_PROCESS_MESSAGE_NAME); | ||
| 66 | - bpmnModel.addMessage(rejectPostProcessMsg); | ||
| 67 | 62 | ||
| 68 | Process mainProcess = new Process(); | 63 | Process mainProcess = new Process(); |
| 69 | mainProcess.setId(processId); | 64 | mainProcess.setId(processId); |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelService.java
| 1 | package cn.iocoder.yudao.module.bpm.service.definition; | 1 | package cn.iocoder.yudao.module.bpm.service.definition; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*; | 4 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelCreateReqVO; |
| 5 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelPageReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelUpdateReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; | ||
| 8 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelUpdateReqVO; | ||
| 5 | import jakarta.validation.Valid; | 9 | import jakarta.validation.Valid; |
| 6 | import org.flowable.bpmn.model.BpmnModel; | 10 | import org.flowable.bpmn.model.BpmnModel; |
| 7 | import org.flowable.engine.repository.Model; | 11 | import org.flowable.engine.repository.Model; |
| @@ -49,7 +53,7 @@ public interface BpmModelService { | @@ -49,7 +53,7 @@ public interface BpmModelService { | ||
| 49 | /** | 53 | /** |
| 50 | * 保存流程模型的 BPMN XML | 54 | * 保存流程模型的 BPMN XML |
| 51 | * | 55 | * |
| 52 | - * @param id 编号 | 56 | + * @param id 编号 |
| 53 | * @param xmlBytes BPMN XML bytes | 57 | * @param xmlBytes BPMN XML bytes |
| 54 | */ | 58 | */ |
| 55 | // TODO @芋艿:感觉可以不修改这个方法,而是额外加一个方法;传入 id,bpmn,json; | 59 | // TODO @芋艿:感觉可以不修改这个方法,而是额外加一个方法;传入 id,bpmn,json; |
| @@ -57,6 +61,7 @@ public interface BpmModelService { | @@ -57,6 +61,7 @@ public interface BpmModelService { | ||
| 57 | 61 | ||
| 58 | /** | 62 | /** |
| 59 | * 获得仿钉钉快搭模型的 JSON 数据 | 63 | * 获得仿钉钉快搭模型的 JSON 数据 |
| 64 | + * | ||
| 60 | * @param id 编号 | 65 | * @param id 编号 |
| 61 | * @return JSON bytes | 66 | * @return JSON bytes |
| 62 | */ | 67 | */ |
| @@ -64,7 +69,8 @@ public interface BpmModelService { | @@ -64,7 +69,8 @@ public interface BpmModelService { | ||
| 64 | 69 | ||
| 65 | /** | 70 | /** |
| 66 | * 保存仿钉钉快搭模型的 JSON 数据 | 71 | * 保存仿钉钉快搭模型的 JSON 数据 |
| 67 | - * @param id 编号 | 72 | + * |
| 73 | + * @param id 编号 | ||
| 68 | * @param jsonBytes JSON bytes | 74 | * @param jsonBytes JSON bytes |
| 69 | */ | 75 | */ |
| 70 | void saveModelSimpleJson(String id, byte[] jsonBytes); | 76 | void saveModelSimpleJson(String id, byte[] jsonBytes); |
| @@ -108,10 +114,20 @@ public interface BpmModelService { | @@ -108,10 +114,20 @@ public interface BpmModelService { | ||
| 108 | 114 | ||
| 109 | // ========== 仿钉钉/飞书的精简模型 ========= | 115 | // ========== 仿钉钉/飞书的精简模型 ========= |
| 110 | 116 | ||
| 111 | - // TODO @jason:使用 ========== 仿钉钉/飞书的精简模型 ========= 分隔下;把相关的 controller、service 懂合并了;另外,vo 可以挪到 model/simple 这样的形式; | 117 | + /** |
| 118 | + * 获取仿钉钉流程设计模型结构 | ||
| 119 | + * | ||
| 120 | + * @param modelId 流程模型编号 | ||
| 121 | + * @return 仿钉钉流程设计模型结构 | ||
| 122 | + */ | ||
| 123 | + BpmSimpleModelNodeVO getSimpleModel(String modelId); | ||
| 112 | 124 | ||
| 113 | - // TODO @jason:BpmSimpleModelServiceImpl 迁移到这里,搞成 updateSimpleModel(BpmSimpleModelUpdateReqVO reqVO) | ||
| 114 | - // TODO @jason:BpmSimpleModelServiceImpl 迁移到这里,搞成 getSimpleModel; | 125 | + /** |
| 126 | + * 更新仿钉钉流程设计模型 | ||
| 127 | + * | ||
| 128 | + * @param reqVO 请求信息 | ||
| 129 | + */ | ||
| 130 | + void updateSimpleModel(@Valid BpmSimpleModelUpdateReqVO reqVO); | ||
| 115 | 131 | ||
| 116 | // TODO @jason:另外个问题,因为是存储到 modelExtra 里,那需要 deploy 存储出快照。和 bpmn xml 一样。目前我想到的,就是存储到 BpmProcessDefinitionInfoDO 加一个 simple_model 字段,text 类型。可以看看还有啥方案? | 132 | // TODO @jason:另外个问题,因为是存储到 modelExtra 里,那需要 deploy 存储出快照。和 bpmn xml 一样。目前我想到的,就是存储到 BpmProcessDefinitionInfoDO 加一个 simple_model 字段,text 类型。可以看看还有啥方案? |
| 117 | 133 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
| @@ -9,12 +9,15 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; | @@ -9,12 +9,15 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; | ||
| 9 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelCreateReqVO; | 9 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelCreateReqVO; |
| 10 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelPageReqVO; | 10 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelPageReqVO; |
| 11 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelUpdateReqVO; | 11 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelUpdateReqVO; |
| 12 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; | ||
| 13 | +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelUpdateReqVO; | ||
| 12 | import cn.iocoder.yudao.module.bpm.convert.definition.BpmModelConvert; | 14 | import cn.iocoder.yudao.module.bpm.convert.definition.BpmModelConvert; |
| 13 | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; | 15 | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; |
| 14 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum; | 16 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum; |
| 15 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateInvoker; | 17 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateInvoker; |
| 16 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; | 18 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; |
| 17 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils; | 19 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils; |
| 20 | +import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils; | ||
| 18 | import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO; | 21 | import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO; |
| 19 | import jakarta.annotation.Resource; | 22 | import jakarta.annotation.Resource; |
| 20 | import jakarta.validation.Valid; | 23 | import jakarta.validation.Valid; |
| @@ -209,6 +212,33 @@ public class BpmModelServiceImpl implements BpmModelService { | @@ -209,6 +212,33 @@ public class BpmModelServiceImpl implements BpmModelService { | ||
| 209 | return repositoryService.getBpmnModel(processDefinitionId); | 212 | return repositoryService.getBpmnModel(processDefinitionId); |
| 210 | } | 213 | } |
| 211 | 214 | ||
| 215 | + @Override | ||
| 216 | + public BpmSimpleModelNodeVO getSimpleModel(String modelId) { | ||
| 217 | + Model model = getModel(modelId); | ||
| 218 | + if (model == null) { | ||
| 219 | + throw exception(MODEL_NOT_EXISTS); | ||
| 220 | + } | ||
| 221 | + // 通过 ACT_RE_MODEL 表 EDITOR_SOURCE_EXTRA_VALUE_ID_ 获取 仿钉钉快搭模型的JSON 数据 | ||
| 222 | + byte[] jsonBytes = getModelSimpleJson(model.getId()); | ||
| 223 | + return JsonUtils.parseObject(jsonBytes, BpmSimpleModelNodeVO.class); | ||
| 224 | + } | ||
| 225 | + | ||
| 226 | + @Override | ||
| 227 | + public void updateSimpleModel(BpmSimpleModelUpdateReqVO reqVO) { | ||
| 228 | + // 1.1 校验流程模型存在 | ||
| 229 | + Model model = getModel(reqVO.getModelId()); | ||
| 230 | + if (model == null) { | ||
| 231 | + throw exception(MODEL_NOT_EXISTS); | ||
| 232 | + } | ||
| 233 | + // 1.2 JSON 转换成 bpmnModel | ||
| 234 | + BpmnModel bpmnModel = SimpleModelUtils.convertSimpleModelToBpmnModel(model.getKey(), model.getName(), reqVO.getSimpleModelBody()); | ||
| 235 | + // 2.1 保存 Bpmn XML | ||
| 236 | + saveModelBpmnXml(model.getId(), StrUtil.utf8Bytes(BpmnModelUtils.getBpmnXml(bpmnModel))); | ||
| 237 | + // 2.2 保存 JSON 数据 | ||
| 238 | + saveModelSimpleJson(model.getId(), JsonUtils.toJsonByte(reqVO.getSimpleModelBody())); | ||
| 239 | + } | ||
| 240 | + | ||
| 241 | + | ||
| 212 | /** | 242 | /** |
| 213 | * 校验流程表单已配置 | 243 | * 校验流程表单已配置 |
| 214 | * | 244 | * |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmSimpleModelService.java deleted
| 1 | -package cn.iocoder.yudao.module.bpm.service.definition; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelNodeVO; | ||
| 4 | -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelSaveReqVO; | ||
| 5 | -import jakarta.validation.Valid; | ||
| 6 | - | ||
| 7 | -/** | ||
| 8 | - * 仿钉钉流程设计 Service 接口 | ||
| 9 | - * | ||
| 10 | - * @author jason | ||
| 11 | - */ | ||
| 12 | -public interface BpmSimpleModelService { | ||
| 13 | - | ||
| 14 | - /** | ||
| 15 | - * 保存仿钉钉流程设计模型 | ||
| 16 | - * | ||
| 17 | - * @param reqVO 请求信息 | ||
| 18 | - */ | ||
| 19 | - Boolean saveSimpleModel(@Valid BpmSimpleModelSaveReqVO reqVO); | ||
| 20 | - | ||
| 21 | - /** | ||
| 22 | - * 获取仿钉钉流程设计模型结构 | ||
| 23 | - * | ||
| 24 | - * @param modelId 流程模型编号 | ||
| 25 | - * @return 仿钉钉流程设计模型结构 | ||
| 26 | - */ | ||
| 27 | - BpmSimpleModelNodeVO getSimpleModel(String modelId); | ||
| 28 | - | ||
| 29 | -} |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmSimpleModelServiceImpl.java deleted
| 1 | -package cn.iocoder.yudao.module.bpm.service.definition; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.util.StrUtil; | ||
| 4 | -import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | ||
| 5 | -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelNodeVO; | ||
| 6 | -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelSaveReqVO; | ||
| 7 | -import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; | ||
| 8 | -import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils; | ||
| 9 | -import jakarta.annotation.Resource; | ||
| 10 | -import org.flowable.bpmn.model.BpmnModel; | ||
| 11 | -import org.flowable.engine.repository.Model; | ||
| 12 | -import org.springframework.stereotype.Service; | ||
| 13 | -import org.springframework.validation.annotation.Validated; | ||
| 14 | - | ||
| 15 | -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||
| 16 | -import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.MODEL_NOT_EXISTS; | ||
| 17 | - | ||
| 18 | -// TODO @jason:这块可以讨论下,是不是合并成一个 BpmnModelServiceImpl | ||
| 19 | -/** | ||
| 20 | - * 仿钉钉流程设计 Service 实现类 | ||
| 21 | - * | ||
| 22 | - * @author jason | ||
| 23 | - */ | ||
| 24 | -@Service | ||
| 25 | -@Validated | ||
| 26 | -public class BpmSimpleModelServiceImpl implements BpmSimpleModelService { | ||
| 27 | - | ||
| 28 | - @Resource | ||
| 29 | - private BpmModelService bpmModelService; | ||
| 30 | - | ||
| 31 | - @Override | ||
| 32 | - public Boolean saveSimpleModel(BpmSimpleModelSaveReqVO reqVO) { | ||
| 33 | - // 1.1 校验流程模型存在 | ||
| 34 | - Model model = bpmModelService.getModel(reqVO.getModelId()); | ||
| 35 | - if (model == null) { | ||
| 36 | - throw exception(MODEL_NOT_EXISTS); | ||
| 37 | - } | ||
| 38 | - | ||
| 39 | - // 1. JSON 转换成 bpmnModel | ||
| 40 | - BpmnModel bpmnModel = SimpleModelUtils.convertSimpleModelToBpmnModel(model.getKey(), model.getName(), reqVO.getSimpleModelBody()); | ||
| 41 | - // 2.1 保存 Bpmn XML | ||
| 42 | - bpmModelService.saveModelBpmnXml(model.getId(), StrUtil.utf8Bytes(BpmnModelUtils.getBpmnXml(bpmnModel))); | ||
| 43 | - // 2.2 保存 JSON 数据 | ||
| 44 | - bpmModelService.saveModelSimpleJson(model.getId(), JsonUtils.toJsonByte(reqVO.getSimpleModelBody())); | ||
| 45 | - return Boolean.TRUE; | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - @Override | ||
| 49 | - public BpmSimpleModelNodeVO getSimpleModel(String modelId) { | ||
| 50 | - Model model = bpmModelService.getModel(modelId); | ||
| 51 | - if (model == null) { | ||
| 52 | - throw exception(MODEL_NOT_EXISTS); | ||
| 53 | - } | ||
| 54 | - // 暂时不用 bpmn 转 json, 有点复杂, | ||
| 55 | - // 通过 ACT_RE_MODEL 表 EDITOR_SOURCE_EXTRA_VALUE_ID_ 获取 仿钉钉快搭模型的JSON 数据 | ||
| 56 | - byte[] jsonBytes = bpmModelService.getModelSimpleJson(model.getId()); | ||
| 57 | - return JsonUtils.parseObject(jsonBytes, BpmSimpleModelNodeVO.class); | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | -} |