仿钉钉流程设计-仿钉钉快搭模型 JSON数据的保存
This commit is contained in:
parent
d9758636b1
commit
32809c3edb
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
||||
import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
@ -12,6 +13,7 @@ import java.util.Map;
|
||||
|
||||
@Schema(description = "管理后台 - 仿钉钉流程设计模型节点 VO")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class BpmSimpleModelNodeVO {
|
||||
|
||||
@Schema(description = "模型节点编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "StartEvent_1")
|
||||
|
@ -51,10 +51,24 @@ public interface BpmModelService {
|
||||
* 保存流程模型的 BPMN XML
|
||||
*
|
||||
* @param id 编号
|
||||
* @param bpmnXml BPMN XML
|
||||
* @param xmlBytes BPMN XML bytes
|
||||
*/
|
||||
// TODO @芋艿:可能要关注下;
|
||||
void saveModelBpmnXml(String id, String bpmnXml);
|
||||
void saveModelBpmnXml(String id, byte[] xmlBytes);
|
||||
|
||||
/**
|
||||
* 获得仿钉钉快搭模型的 JSON 数据
|
||||
* @param id 编号
|
||||
* @return JSON bytes
|
||||
*/
|
||||
byte[] getModelSimpleJson(String id);
|
||||
|
||||
/**
|
||||
* 保存仿钉钉快搭模型的 JSON 数据
|
||||
* @param id 编号
|
||||
* @param jsonBytes JSON bytes
|
||||
*/
|
||||
void saveModelSimpleJson(String id, byte[] jsonBytes);
|
||||
|
||||
/**
|
||||
* 修改流程模型
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.bpm.service.definition;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||
@ -103,7 +104,7 @@ public class BpmModelServiceImpl implements BpmModelService {
|
||||
// 保存流程定义
|
||||
repositoryService.saveModel(model);
|
||||
// 保存 BPMN XML
|
||||
saveModelBpmnXml(model.getId(), bpmnXml);
|
||||
saveModelBpmnXml(model.getId(), StrUtil.utf8Bytes(bpmnXml));
|
||||
return model.getId();
|
||||
}
|
||||
|
||||
@ -121,7 +122,7 @@ public class BpmModelServiceImpl implements BpmModelService {
|
||||
// 更新模型
|
||||
repositoryService.saveModel(model);
|
||||
// 更新 BPMN XML
|
||||
saveModelBpmnXml(model.getId(), updateReqVO.getBpmnXml());
|
||||
saveModelBpmnXml(model.getId(), StrUtil.utf8Bytes(updateReqVO.getBpmnXml()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -237,11 +238,24 @@ public class BpmModelServiceImpl implements BpmModelService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveModelBpmnXml(String id, String bpmnXml) {
|
||||
if (StrUtil.isEmpty(bpmnXml)) {
|
||||
public void saveModelBpmnXml(String id, byte[] xmlBytes) {
|
||||
if (ArrayUtil.isEmpty(xmlBytes)) {
|
||||
return;
|
||||
}
|
||||
repositoryService.addModelEditorSource(id, StrUtil.utf8Bytes(bpmnXml));
|
||||
repositoryService.addModelEditorSource(id, xmlBytes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] getModelSimpleJson(String id) {
|
||||
return repositoryService.getModelEditorSourceExtra(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveModelSimpleJson(String id, byte[] jsonBytes) {
|
||||
if (ArrayUtil.isEmpty(jsonBytes)) {
|
||||
return;
|
||||
}
|
||||
repositoryService.addModelEditorSourceExtra(id, jsonBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.bpm.service.definition;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelNodeVO;
|
||||
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.simple.BpmSimpleModelSaveReqVO;
|
||||
import cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeType;
|
||||
@ -52,9 +54,12 @@ public class BpmSimpleModelServiceImpl implements BpmSimpleModelService {
|
||||
// // TODO BPMN XML 已经存在。如何修改 ?? TODO add by 芋艿:感觉一个流程,只能二选一,要么 bpmn、要么 simple
|
||||
// return Boolean.FALSE;
|
||||
// }
|
||||
// 暂时直接修改
|
||||
// 1. JSON 转换成 bpmnModel
|
||||
BpmnModel bpmnModel = BpmnModelUtils.convertSimpleModelToBpmnModel(model.getKey(), model.getName(), reqVO.getSimpleModelBody());
|
||||
bpmModelService.saveModelBpmnXml(model.getId(), BpmnModelUtils.getBpmnXml(bpmnModel));
|
||||
// 2.1 保存 Bpmn XML
|
||||
bpmModelService.saveModelBpmnXml(model.getId(), StrUtil.utf8Bytes(BpmnModelUtils.getBpmnXml(bpmnModel)));
|
||||
// 2.2 保存 JSON 数据
|
||||
bpmModelService.saveModelSimpleJson(model.getId(), JsonUtils.toJsonByte(reqVO.getSimpleModelBody()));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@ -64,12 +69,14 @@ public class BpmSimpleModelServiceImpl implements BpmSimpleModelService {
|
||||
if (model == null) {
|
||||
throw exception(MODEL_NOT_EXISTS);
|
||||
}
|
||||
byte[] bpmnBytes = bpmModelService.getModelBpmnXML(modelId);
|
||||
BpmnModel bpmnModel = BpmnModelUtils.getBpmnModel(bpmnBytes);
|
||||
return convertBpmnModelToSimpleModel(bpmnModel);
|
||||
// 暂时不用 bpmn 转 json, 有点复杂,
|
||||
// 通过 ACT_RE_MODEL 表 EDITOR_SOURCE_EXTRA_VALUE_ID_ 获取 仿钉钉快搭模型的JSON 数据
|
||||
byte[] jsonBytes = bpmModelService.getModelSimpleJson(model.getId());
|
||||
return JsonUtils.parseObject(jsonBytes, BpmSimpleModelNodeVO.class);
|
||||
}
|
||||
|
||||
// TODO @jason:一般要支持这个么?感觉 bpmn 转 json 支持会不会太复杂。可以优先级低一点,做下调研~
|
||||
|
||||
/**
|
||||
* Bpmn Model 转换成 仿钉钉流程设计模型数据结构(json) 待完善
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user