update - 更新流程模型 restfulApi 接口相关逻辑
This commit is contained in:
parent
192f033786
commit
73fa39d117
@ -1,6 +1,9 @@
|
||||
package cn.axzo.workflow.core.common;
|
||||
|
||||
public interface BpmConstants {
|
||||
|
||||
String BPMN_FILE_SUFFIX = ".bpmn";
|
||||
String FORM_FILE_SUFFIX = ".form";
|
||||
String SERVER_APP_ID = "server-app-id";
|
||||
/**
|
||||
* 引擎自己隐藏指令
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.workflow.core.service;
|
||||
|
||||
import cn.axzo.workflow.core.service.dto.request.definition.BpmProcessDefinitionUpdateDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.process.BpmProcessDefinitionPageDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.process.BpmProcessDefinitionVO;
|
||||
@ -16,6 +17,10 @@ public interface BpmProcessDefinitionService {
|
||||
*/
|
||||
String createProcessDefinition(Model model, byte[] bpmnBytes);
|
||||
|
||||
void updateProcessDefinition(String processModelId, byte[] bpmnBytes);
|
||||
|
||||
void updateProcessDefinition(String processModelId, String bpmnXml);
|
||||
|
||||
|
||||
/**
|
||||
* 获取活跃的流程定义分页
|
||||
@ -60,4 +65,5 @@ public interface BpmProcessDefinitionService {
|
||||
*/
|
||||
String getActiveProcessDefinitionId(String tenantId, String category);
|
||||
|
||||
void updateProcessDefinition(BpmProcessDefinitionUpdateDTO dto);
|
||||
}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
package cn.axzo.workflow.core.service.dto.request.definition;
|
||||
|
||||
import cn.axzo.workflow.core.service.dto.BpmJsonNode;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2023/7/26 10:07
|
||||
*/
|
||||
@Data
|
||||
public class BpmProcessDefinitionUpdateDTO {
|
||||
@ApiModelProperty(value = "流程模型 ID")
|
||||
private String processModelId;
|
||||
|
||||
@ApiModelProperty(value = "JSON 转义的流程定义内容", notes = "枢智业务线在用")
|
||||
@Valid
|
||||
@NotNull(message = "模型定义内容不能为空")
|
||||
private BpmJsonNode bpmJson;
|
||||
}
|
||||
@ -38,9 +38,6 @@ public class BpmModelBaseVO {
|
||||
@ApiModelProperty(value = "版本", required = true, example = "1")
|
||||
private Integer version;
|
||||
|
||||
|
||||
private String metaInfo;
|
||||
|
||||
/**
|
||||
* 租户Id
|
||||
* */
|
||||
|
||||
@ -27,6 +27,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.axzo.workflow.core.common.BpmConstants.FORM_FILE_SUFFIX;
|
||||
import static cn.axzo.workflow.core.common.BpmConstants.MODEL_META_INFO_FORM;
|
||||
|
||||
/**
|
||||
@ -162,7 +163,7 @@ public class BpmFormModelServiceImpl implements BpmFormModelService {
|
||||
throw new WorkflowEngineException("模型不存在");
|
||||
}
|
||||
FormDeployment deploy = formRepositoryService.createDeployment()
|
||||
.addFormDefinition(model.getKey() + ".form",
|
||||
.addFormDefinition(model.getKey() + FORM_FILE_SUFFIX,
|
||||
new String(repositoryService.getModelEditorSource(model.getId())))
|
||||
.name(model.getName())
|
||||
.category(model.getCategory())
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package cn.axzo.workflow.core.service.impl;
|
||||
|
||||
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.core.common.utils.BpmTransformUtil;
|
||||
import cn.axzo.workflow.core.service.BpmProcessDefinitionService;
|
||||
import cn.axzo.workflow.core.service.converter.BpmProcessDefinitionConverter;
|
||||
import cn.axzo.workflow.core.service.dto.request.definition.BpmProcessDefinitionUpdateDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.process.BpmProcessDefinitionPageDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.process.BpmProcessDefinitionVO;
|
||||
@ -17,10 +19,12 @@ import org.flowable.engine.repository.ProcessDefinition;
|
||||
import org.flowable.engine.repository.ProcessDefinitionQuery;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
import static cn.axzo.workflow.core.common.BpmConstants.BPMN_FILE_SUFFIX;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.*;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.addIfNotNull;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.convertMap;
|
||||
@ -29,7 +33,8 @@ import static java.util.Collections.emptyList;
|
||||
@Service
|
||||
@Slf4j
|
||||
public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionService {
|
||||
private static final String BPMN_FILE_SUFFIX = ".bpmn";
|
||||
|
||||
|
||||
@Resource
|
||||
private RepositoryService repositoryService;
|
||||
@Resource
|
||||
@ -69,17 +74,34 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ
|
||||
throw new WorkflowEngineException(PROCESS_DEFINITION_NAME_NOT_MATCH);
|
||||
}
|
||||
|
||||
// 插入拓展表
|
||||
// ProcessDefinitionExtDO definitionDO = new ProcessDefinitionExtDO();
|
||||
// definitionDO.setModelId(model.getId());
|
||||
// BeanUtils.copyProperties(definition, definitionDO);
|
||||
// definitionDO.setProcessDefinitionId(definition.getId());
|
||||
// definitionDO.setModelId(model.getId());
|
||||
// definitionDO.setTenantId(definition.getTenantId());
|
||||
// processDefinitionExtMapper.insert(definitionDO);
|
||||
return definition.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProcessDefinition(String processModelId, byte[] bpmnBytes) {
|
||||
if (bpmnBytes != null && bpmnBytes.length != 0) {
|
||||
this.repositoryService.addModelEditorSource(processModelId, bpmnBytes);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProcessDefinition(String processModelId, String bpmnXml) {
|
||||
if (StringUtils.hasLength(bpmnXml)) {
|
||||
updateProcessDefinition(processModelId, bpmnXml.getBytes());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProcessDefinition(BpmProcessDefinitionUpdateDTO dto) {
|
||||
Model model = repositoryService.getModel(dto.getProcessModelId());
|
||||
if (Objects.isNull(model)) {
|
||||
throw new WorkflowEngineException("模型不存在");
|
||||
}
|
||||
//FIXME 在底层 Service 中直接将 jsonToXml 有风险,应先判断数据格式是否是 JSON
|
||||
byte[] bpmn = BpmTransformUtil.transformBpmnJsonToXml(dto.getBpmJson(), model);
|
||||
updateProcessDefinition(model.getId(), bpmn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProcessDefinitionSuspendedState(String processDefinitionId, Integer state) {
|
||||
// 激活
|
||||
|
||||
@ -109,7 +109,7 @@ public class BpmProcessModelServiceImpl implements BpmProcessModelService {
|
||||
if (dto.getNode() != null) {
|
||||
//FIXME 在底层 Service 中直接将 jsonToXml 有风险,应先判断数据格式是否是 JSON
|
||||
byte[] bpmn = BpmTransformUtil.transformBpmnJsonToXml(dto.getNode(), model);
|
||||
saveModelBpmnXml(model, bpmn);
|
||||
processDefinitionService.updateProcessDefinition(model.getId(), bpmn);
|
||||
}
|
||||
return model.getId();
|
||||
}
|
||||
@ -170,7 +170,7 @@ public class BpmProcessModelServiceImpl implements BpmProcessModelService {
|
||||
if (dto.getNode() != null) {
|
||||
//FIXME 入参是否强制为 JSON 格式?
|
||||
byte[] bpmn = BpmTransformUtil.transformBpmnJsonToXml(dto.getNode(), originModel);
|
||||
saveModelBpmnXml(originModel, bpmn);
|
||||
processDefinitionService.updateProcessDefinition(originModel.getId(), bpmn);
|
||||
}
|
||||
repositoryService.saveModel(originModel);
|
||||
}
|
||||
@ -240,17 +240,6 @@ public class BpmProcessModelServiceImpl implements BpmProcessModelService {
|
||||
repositoryService.deleteModel(model.getId());
|
||||
}
|
||||
|
||||
private void saveModelBpmnXml(Model model, String bpmnXml) {
|
||||
if (StringUtils.hasLength(bpmnXml)) {
|
||||
saveModelBpmnXml(model, bpmnXml.getBytes());
|
||||
}
|
||||
}
|
||||
|
||||
private void saveModelBpmnXml(Model model, byte[] bpmnXml) {
|
||||
if (bpmnXml != null && bpmnXml.length != 0) {
|
||||
this.repositoryService.addModelEditorSource(model.getId(), bpmnXml);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateProcessDefinitionSuspended(String deploymentId) {
|
||||
if (StringUtils.hasLength(deploymentId)) {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.workflow.server.controller.web;
|
||||
|
||||
import cn.axzo.workflow.core.service.BpmProcessDefinitionService;
|
||||
import cn.axzo.workflow.core.service.dto.request.definition.BpmProcessDefinitionUpdateDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.process.BpmProcessDefinitionPageDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.process.BpmProcessDefinitionVO;
|
||||
@ -32,6 +33,12 @@ public class BpmProcessDefinitionController {
|
||||
return CommonResponse.success(bpmProcessDefinitionService.getProcessDefinitionPage(dto));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
public CommonResponse updateProcessDefinition(@RequestBody BpmProcessDefinitionUpdateDTO dto) {
|
||||
bpmProcessDefinitionService.updateProcessDefinition(dto);
|
||||
return CommonResponse.success(true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得编号对应的 ProcessDefinition
|
||||
|
||||
Loading…
Reference in New Issue
Block a user