update - 解决自测过程中发现的一些问题
This commit is contained in:
parent
79ae087bc3
commit
8e53843649
@ -33,6 +33,9 @@ public class FormModelBaseVO {
|
||||
@ApiModelProperty(value = "租户")
|
||||
private String tenantId;
|
||||
|
||||
@ApiModelProperty(value = "部署 ID")
|
||||
private String deploymentId;
|
||||
|
||||
@ApiModelProperty(value = "版本")
|
||||
private Integer version;
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ public enum BpmErrorCode implements IProjectRespCode {
|
||||
PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF("05003", "流程取消失败,该流程不是你发起的"),
|
||||
PROCESS_INSTANCE_NOT_EXISTS("05004", "流程实例不存在"),
|
||||
PROCESS_INSTANCE_ID_NOT_EXISTS("05005", "流程实例【{}】不存在"),
|
||||
PROCESS_INSTANCE_CREATE_ERROR("05002", ""),
|
||||
PROCESS_INSTANCE_CANCELLED("05006", "流程实例已取消"),
|
||||
// ========== bpmn task 06-001 ==========
|
||||
TASK_COMPLETE_FAIL_NOT_EXISTS("06001", "未找到指定审批任务"),
|
||||
TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF("06002", "该任务的审批人不是你"),
|
||||
|
||||
@ -35,6 +35,14 @@ public interface BpmnProcessDefinitionService {
|
||||
*/
|
||||
BpmnProcessDefinitionVO getProcessDefinition(String id);
|
||||
|
||||
/**
|
||||
* 通过部署 ID 查询是否有激活/可用的定义版本
|
||||
*
|
||||
* @param deploymentId
|
||||
* @return
|
||||
*/
|
||||
Boolean hasActiveProcessDefinition(String deploymentId);
|
||||
|
||||
/**
|
||||
* 获得 deploymentId 对应的 ProcessDefinition
|
||||
*
|
||||
|
||||
@ -4,7 +4,6 @@ import cn.axzo.workflow.common.model.response.form.model.FormModelBaseVO;
|
||||
import org.flowable.engine.repository.Model;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@ -22,26 +21,17 @@ import static org.mapstruct.NullValueCheckStrategy.ALWAYS;
|
||||
imports = Arrays.class
|
||||
)
|
||||
public interface FormModelConverter extends EntityConverter<FormModelBaseVO, Model> {
|
||||
|
||||
@Mapping(target = "id", source = "entity.id")
|
||||
@Mapping(target = "name", source = "entity.name")
|
||||
@Mapping(target = "key", source = "entity.key")
|
||||
@Mapping(target = "category", source = "entity.category")
|
||||
@Mapping(target = "deploymentId", source = "entity.deploymentId")
|
||||
@Mapping(target = "tenantId", source = "entity.tenantId")
|
||||
@Mapping(target = "version", source = "entity.version")
|
||||
@Mapping(target = "status", expression = "java(convertStatus(entity.getDeploymentId()))")
|
||||
@Mapping(target = "createAt", source = "entity.createTime")
|
||||
@Mapping(target = "updateAt", source = "entity.lastUpdateTime")
|
||||
@Override
|
||||
FormModelBaseVO toVo(Model entity);
|
||||
|
||||
/**
|
||||
* 根据 deploymentId 计算模型状态
|
||||
*
|
||||
* @param deploymentId
|
||||
* @return
|
||||
*/
|
||||
default Integer convertStatus(String deploymentId) {
|
||||
return StringUtils.hasLength(deploymentId) ? 1 : 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -57,6 +57,7 @@ public class BpmnProcessDefinitionServiceImpl implements BpmnProcessDefinitionSe
|
||||
.addBytes(model.getKey() + BPMN_FILE_SUFFIX, bpmnBytes)
|
||||
// 关闭 BPMN 文件内容校验
|
||||
.disableBpmnValidation()
|
||||
.disableSchemaValidation()
|
||||
.deploy();
|
||||
|
||||
// 设置 ProcessDefinition 的 category 分类
|
||||
@ -148,6 +149,11 @@ public class BpmnProcessDefinitionServiceImpl implements BpmnProcessDefinitionSe
|
||||
return processDefinitionConverter.toVo(processDefinition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean hasActiveProcessDefinition(String deploymentId) {
|
||||
return repositoryService.createProcessDefinitionQuery().active().deploymentId(deploymentId).count() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProcessDefinition getProcessDefinitionByDeploymentId(String deploymentId) {
|
||||
ProcessDefinition processDefinition =
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.workflow.core.service.impl;
|
||||
|
||||
import cn.axzo.workflow.common.enums.BpmProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.*;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.common.model.response.BpmPageResult;
|
||||
@ -259,6 +260,9 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
if (!Objects.equals(instance.getStartUserId(), dto.getInitiator().getAssigneeId())) {
|
||||
throw new WorkflowEngineException(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF);
|
||||
}
|
||||
if (Objects.nonNull(instance.getEndTime()) && Objects.equals(BpmProcessInstanceResultEnum.CANCELLED.getStatus(), instance.getBusinessStatus())) {
|
||||
throw new WorkflowEngineException(PROCESS_INSTANCE_CANCELLED);
|
||||
}
|
||||
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
variables.put(INTERNAL_END_TENANT_ID, dto.getInitiator().getTenantId());
|
||||
|
||||
@ -89,7 +89,9 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
|
||||
return BpmPageResult.empty();
|
||||
}
|
||||
NativeModelQuery countSqlQuery = query.sql(countSql(baseQuerySql));
|
||||
return new BpmPageResult<>(formModelConverter.toVos(models), countSqlQuery.count());
|
||||
List<FormModelBaseVO> vos = formModelConverter.toVos(models);
|
||||
vos.forEach(i -> i.setStatus(processDefinitionService.hasActiveProcessDefinition(i.getDeploymentId()) ? 1 : 0));
|
||||
return new BpmPageResult<>(vos, countSqlQuery.count());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -190,13 +192,14 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
|
||||
originModel.setCategory(dto.getCategory());
|
||||
originModel.setKey(dto.getKey());
|
||||
originModel.setTenantId(dto.getTenantId());
|
||||
repositoryService.saveModel(originModel);
|
||||
|
||||
//存储Bpmn协议
|
||||
if (dto.getNode() != null) {
|
||||
//FIXME 入参是否强制为 JSON 格式?
|
||||
byte[] bpmn = BpmTransformUtil.transformBpmnJsonToXml(dto.getNode(), originModel, dto.getCategory());
|
||||
processDefinitionService.updateProcessDefinition(originModel.getId(), bpmn);
|
||||
}
|
||||
repositoryService.saveModel(originModel);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -281,8 +284,6 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
|
||||
if (StringUtils.hasLength(tenantId) && !Objects.equals(model.getTenantId(), tenantId)) {
|
||||
throw new WorkflowEngineException(MODEL_ID_NOT_EXISTS, processModelId);
|
||||
}
|
||||
model.setDeploymentId("");
|
||||
repositoryService.saveModel(model);
|
||||
updateProcessDefinitionSuspended(model.getDeploymentId());
|
||||
}
|
||||
|
||||
@ -290,7 +291,7 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
|
||||
if (StringUtils.hasLength(deploymentId)) {
|
||||
ProcessDefinition oldDefinition =
|
||||
this.processDefinitionService.getProcessDefinitionByDeploymentId(deploymentId);
|
||||
if (oldDefinition != null) {
|
||||
if (oldDefinition != null && !oldDefinition.isSuspended()) {
|
||||
this.processDefinitionService.updateProcessDefinitionSuspendedState(oldDefinition.getId(),
|
||||
SuspensionState.SUSPENDED.getStateCode());
|
||||
}
|
||||
|
||||
@ -97,7 +97,7 @@ public class BpmnProcessModelController implements ProcessModelApi {
|
||||
@Operation(summary = "更新流程模型")
|
||||
@PutMapping("/update")
|
||||
@Override
|
||||
public CommonResponse<String> update(@RequestBody BpmnModelUpdateDTO dto) {
|
||||
public CommonResponse<String> update(@Validated @RequestBody BpmnModelUpdateDTO dto) {
|
||||
log.info("修改流程信息updateBpmModel===>>>参数:{}", JSON.toJSONString(dto));
|
||||
bpmnProcessModelService.updateBpmModel(dto);
|
||||
return success();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user