update - 调整模型,增加描述字段,以支持模型的备注

This commit is contained in:
wangli 2023-09-26 14:49:32 +08:00
parent b898679f8d
commit a57b14595e
4 changed files with 43 additions and 11 deletions

View File

@ -28,8 +28,6 @@ public interface BpmConstants {
String START_EVENT_ID = "startEventNode";
String END_EVENT_ID = "endEventNode";
String BPM_MODEL_CATEGORY = "bpm_model_category";
String MODEL_META_INFO_PROCESS = "MODEL_PROCESS";
String MODEL_META_INFO_FORM = "MODEL_FORM";
String BPM_ALLOW_SKIP_USER_TASK = "_INTERNAL_SKIP_USER_TASK";
/**
* 用于国内审批节点填写审批建议

View File

@ -0,0 +1,17 @@
package cn.axzo.workflow.common.constant;
/**
* 模型的 MetaInfo 所使用的常量
*
* @author wangli
* @since 2023/9/26 14:30
*/
public interface MetaInfoConstants {
String MODEL_TYPE = "modelType";
String MODEL_TYPE_PROCESS = "MODEL_PROCESS";
String MODEL_TYPE_FORM = "MODEL_FORM";
String MODEL_DESCRIPTION = "modelDescription";
}

View File

@ -36,6 +36,12 @@ public class BpmnModelCreateDTO {
@ApiModelProperty(value = "自定义分类", notes = "由业务自定义", example = "1")
private String category;
/**
* 描述
*/
@ApiModelProperty(value = "描述", notes = "存放与底层模型中 meta_info 中")
private String description;
/**
* 流程的Json 结构
*/

View File

@ -1,5 +1,6 @@
package cn.axzo.workflow.core.service.impl;
import cn.axzo.framework.jackson.utility.JSON;
import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelSearchDTO;
import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelUpdateDTO;
@ -26,10 +27,12 @@ import org.springframework.util.StringUtils;
import javax.annotation.Nullable;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import static cn.axzo.workflow.common.constant.BpmConstants.MODEL_META_INFO_PROCESS;
import static cn.axzo.workflow.common.constant.MetaInfoConstants.*;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.*;
import static cn.axzo.workflow.core.service.impl.FormModelServiceImpl.countSql;
import static cn.axzo.workflow.core.service.impl.FormModelServiceImpl.sqlConnectors;
@ -77,8 +80,8 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
}
baseQuerySql.append(sqlConnectors(baseQuerySql))
.append(" META_INFO_ = #{metaInfo}");
query.parameter("metaInfo", MODEL_META_INFO_PROCESS);
.append(" META_INFO_ like #{metaInfo}");
query.parameter("metaInfo", "%" + MODEL_TYPE_PROCESS + "%");
NativeModelQuery dataSqlQuery = query.sql(baseQuerySql.append(" order by LAST_UPDATE_TIME_ desc").toString());
List<Model> models = dataSqlQuery
.listPage((dto.getPageNo() - 1) * dto.getPageSize(), dto.getPageSize());
@ -99,9 +102,13 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
throw new WorkflowEngineException(MODEL_KEY_EXISTS, dto.getKey());
}
Map<String, String> metaInfoMap = new HashMap<>();
metaInfoMap.put(MODEL_TYPE, MODEL_TYPE_PROCESS);
metaInfoMap.put(MODEL_DESCRIPTION, dto.getDescription());
Model model = repositoryService.newModel();
model.setName(dto.getName());
model.setMetaInfo(MODEL_META_INFO_PROCESS);
model.setMetaInfo(JSON.toJSONString(metaInfoMap));
model.setCategory(dto.getCategory());
model.setKey(dto.getKey());
model.setTenantId(dto.getTenantId());
@ -138,7 +145,7 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
@Override
public BpmnModelDetailVO getById(String processModelId, @Nullable String tenantId) {
Model model = repositoryService.getModel(processModelId);
if (Objects.isNull(model) && !Objects.equals(model.getMetaInfo(), MODEL_META_INFO_PROCESS)) {
if (Objects.isNull(model) || !model.getMetaInfo().contains(MODEL_TYPE_PROCESS)) {
throw new WorkflowEngineException(MODEL_ID_NOT_EXISTS, processModelId);
}
if (StringUtils.hasLength(tenantId) && !Objects.equals(model.getTenantId(), tenantId)) {
@ -153,7 +160,7 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
@Override
public BpmnModelDetailVO getByKey(String processModelKey, @Nullable String tenantId) {
Model model = repositoryService.createModelQuery().modelKey(processModelKey).singleResult();
if (Objects.isNull(model) && !Objects.equals(model.getMetaInfo(), MODEL_META_INFO_PROCESS)) {
if (Objects.isNull(model) || !model.getMetaInfo().contains(MODEL_TYPE_PROCESS)) {
throw new WorkflowEngineException(MODEL_KEY_NOT_EXISTS, processModelKey);
}
if (StringUtils.hasLength(tenantId) && !Objects.equals(model.getTenantId(), tenantId)) {
@ -174,8 +181,12 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
if (ObjectUtils.isEmpty(originModel)) {
throw new WorkflowEngineException(MODEL_ID_NOT_EXISTS, dto.getProcessModelId());
}
Map<String, String> metaInfoMap = JSON.parseMap(originModel.getMetaInfo(), String.class, String.class);
metaInfoMap.put(MODEL_DESCRIPTION, dto.getDescription());
originModel.setName(dto.getName());
originModel.setMetaInfo(MODEL_META_INFO_PROCESS);
originModel.setMetaInfo(JSON.toJSONString(metaInfoMap));
originModel.setCategory(dto.getCategory());
originModel.setKey(dto.getKey());
originModel.setTenantId(dto.getTenantId());
@ -237,7 +248,7 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
public void deleteBpmModelById(String processModelId, @Nullable String tenantId) {
// 校验流程模型存在
Model model = repositoryService.getModel(processModelId);
if (Objects.isNull(model) || !Objects.equals(model.getMetaInfo(), MODEL_META_INFO_PROCESS)) {
if (Objects.isNull(model) || !model.getMetaInfo().contains(MODEL_TYPE_PROCESS)) {
throw new WorkflowEngineException(MODEL_ID_NOT_EXISTS, processModelId);
}
if (StringUtils.hasLength(tenantId) && !Objects.equals(model.getTenantId(), tenantId)) {
@ -254,7 +265,7 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
modelQuery.modelTenantId(tenantId);
}
Model model = modelQuery.singleResult();
if (Objects.isNull(model) || !Objects.equals(model.getMetaInfo(), MODEL_META_INFO_PROCESS)) {
if (Objects.isNull(model) || !model.getMetaInfo().contains(MODEL_TYPE_PROCESS)) {
throw new WorkflowEngineException(MODEL_NOT_EXISTS);
}
repositoryService.deleteModel(model.getId());