feat(REQ-3004) - 集成表单引擎测试
This commit is contained in:
parent
424da03bd2
commit
d5ed0367d5
@ -2,7 +2,6 @@ package cn.axzo.workflow.common.model.request.bpmn.model;
|
|||||||
|
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonModel;
|
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonModel;
|
||||||
import cn.axzo.workflow.common.model.request.form.FormJsonModel;
|
import cn.axzo.workflow.common.model.request.form.FormJsonModel;
|
||||||
import cn.axzo.workflow.common.model.request.form.definition.FormFieldsDTO;
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -12,7 +11,6 @@ import org.hibernate.validator.constraints.Length;
|
|||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建流程模型的入参模型
|
* 创建流程模型的入参模型
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package cn.axzo.workflow.common.model.request.form;
|
package cn.axzo.workflow.common.model.request.form;
|
||||||
|
|
||||||
import cn.axzo.workflow.common.model.request.form.definition.FormFieldsDTO;
|
import cn.axzo.workflow.common.model.request.form.definition.FormFieldDTO;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -32,5 +32,5 @@ public class FormJsonModel implements Serializable {
|
|||||||
|
|
||||||
@ApiModelProperty(value = "表单模型")
|
@ApiModelProperty(value = "表单模型")
|
||||||
@Valid
|
@Valid
|
||||||
private List<FormFieldsDTO> formFields;
|
private List<FormFieldDTO> formFields;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,7 @@ public class FormDefinitionDTO {
|
|||||||
|
|
||||||
@ApiModelProperty(value = "表单定义的具体字段项", example = "[{'': '''}]")
|
@ApiModelProperty(value = "表单定义的具体字段项", example = "[{'': '''}]")
|
||||||
@Valid
|
@Valid
|
||||||
private List<FormFieldsDTO> fields;
|
private List<FormFieldDTO> fields;
|
||||||
|
|
||||||
@ApiModelProperty(value = "描述")
|
@ApiModelProperty(value = "描述")
|
||||||
private String description;
|
private String description;
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModelProperty;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -20,7 +19,7 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
@ApiModel("表单定义中的字段相关属性入参模型")
|
@ApiModel("表单定义中的字段相关属性入参模型")
|
||||||
@Data
|
@Data
|
||||||
public class FormFieldsDTO {
|
public class FormFieldDTO {
|
||||||
|
|
||||||
@ApiModelProperty(value = "表单字段类型", hidden = true)
|
@ApiModelProperty(value = "表单字段类型", hidden = true)
|
||||||
@NotBlank(message = "字段类型不能为空")
|
@NotBlank(message = "字段类型不能为空")
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package cn.axzo.workflow.common.model.request.form.model;
|
package cn.axzo.workflow.common.model.request.form.model;
|
||||||
|
|
||||||
import cn.axzo.workflow.common.model.request.form.definition.FormFieldsDTO;
|
import cn.axzo.workflow.common.model.request.form.definition.FormFieldDTO;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -37,7 +37,7 @@ public class FormModelCreateDTO {
|
|||||||
|
|
||||||
@ApiModelProperty(value = "表单模型的 Json 结构")
|
@ApiModelProperty(value = "表单模型的 Json 结构")
|
||||||
@Valid
|
@Valid
|
||||||
private List<FormFieldsDTO> formFields;
|
private List<FormFieldDTO> formFields;
|
||||||
|
|
||||||
@ApiModelProperty(value = "租户 ID", example = "1")
|
@ApiModelProperty(value = "租户 ID", example = "1")
|
||||||
private String tenantId = NO_TENANT_ID;
|
private String tenantId = NO_TENANT_ID;
|
||||||
|
|||||||
@ -2,12 +2,14 @@ package cn.axzo.workflow.common.model.response.bpmn.process;
|
|||||||
|
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonModel;
|
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonModel;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
|
import cn.axzo.workflow.common.model.request.form.definition.FormFieldDTO;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@ApiModel("流程定义响应模型")
|
@ApiModel("流程定义响应模型")
|
||||||
@Data
|
@Data
|
||||||
@ -57,6 +59,11 @@ public class BpmnProcessDefinitionVO {
|
|||||||
@ApiModelProperty(value = "状态 1:生效中(激活) 2:历史(挂起)", required = true, example = "1", notes = "参见 SuspensionState 枚举")
|
@ApiModelProperty(value = "状态 1:生效中(激活) 2:历史(挂起)", required = true, example = "1", notes = "参见 SuspensionState 枚举")
|
||||||
private Integer suspensionState;
|
private Integer suspensionState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表单字段集合
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "表单字段集合")
|
||||||
|
private List<FormFieldDTO> formFields;
|
||||||
/**
|
/**
|
||||||
* 流程模型 JSON 数据
|
* 流程模型 JSON 数据
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package cn.axzo.workflow.common.model.response.form.definition;
|
package cn.axzo.workflow.common.model.response.form.definition;
|
||||||
|
|
||||||
import cn.axzo.workflow.common.model.request.form.definition.FormFieldsDTO;
|
import cn.axzo.workflow.common.model.request.form.definition.FormFieldDTO;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -16,15 +16,15 @@ import java.util.List;
|
|||||||
@ApiModel("表单定义的响应模型")
|
@ApiModel("表单定义的响应模型")
|
||||||
@Data
|
@Data
|
||||||
public class FormDefinitionVO {
|
public class FormDefinitionVO {
|
||||||
|
@ApiModelProperty(value = "模型定义 ID")
|
||||||
|
private String formDefinitionId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "模型名称")
|
@ApiModelProperty(value = "模型名称")
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@ApiModelProperty(value = "模型 KEY")
|
@ApiModelProperty(value = "模型 KEY")
|
||||||
private String key;
|
private String key;
|
||||||
|
|
||||||
@ApiModelProperty(value = "自定义分类")
|
|
||||||
private String category;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "版本")
|
@ApiModelProperty(value = "版本")
|
||||||
private Integer version;
|
private Integer version;
|
||||||
|
|
||||||
@ -32,6 +32,6 @@ public class FormDefinitionVO {
|
|||||||
private String tenantId;
|
private String tenantId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "表单模型字段")
|
@ApiModelProperty(value = "表单模型字段")
|
||||||
private List<FormFieldsDTO> fields;
|
private List<FormFieldDTO> fields;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,12 +15,14 @@ import org.flowable.engine.repository.Model;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.FORM_FILE_SUFFIX;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.FORM_FILE_SUFFIX;
|
||||||
|
import static cn.axzo.workflow.common.constant.BpmnConstants.NO_TENANT_ID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 聚合审批模型和表单模型的操作服务
|
* 聚合审批模型和表单模型的操作服务
|
||||||
@ -51,6 +53,7 @@ public class AggregateModelServiceImpl implements AggregateModelService {
|
|||||||
formModelDto.setKey(dto.getKey());
|
formModelDto.setKey(dto.getKey());
|
||||||
formModelDto.setName(dto.getName());
|
formModelDto.setName(dto.getName());
|
||||||
formModelDto.setFormFields(dto.getFormJsonModel().getFormFields());
|
formModelDto.setFormFields(dto.getFormJsonModel().getFormFields());
|
||||||
|
formModelDto.setTenantId(StringUtils.hasText(dto.getTenantId()) ? dto.getTenantId() : NO_TENANT_ID);
|
||||||
if (Objects.isNull(formModel)) {
|
if (Objects.isNull(formModel)) {
|
||||||
formModelService.createFormModel(formModelDto);
|
formModelService.createFormModel(formModelDto);
|
||||||
} else {
|
} else {
|
||||||
@ -83,8 +86,10 @@ public class AggregateModelServiceImpl implements AggregateModelService {
|
|||||||
String definitionId = bpmnProcessModelService.deployBpmModelById(processModelId, tenantId, operator);
|
String definitionId = bpmnProcessModelService.deployBpmModelById(processModelId, tenantId, operator);
|
||||||
|
|
||||||
Model model = this.repositoryService.getModel(processModelId);
|
Model model = this.repositoryService.getModel(processModelId);
|
||||||
Model formModel = repositoryService.createModelQuery().modelKey(model.getKey())
|
Model formModel = repositoryService.createModelQuery()
|
||||||
|
.modelKey(model.getKey())
|
||||||
.modelCategory(FORM_FILE_SUFFIX)
|
.modelCategory(FORM_FILE_SUFFIX)
|
||||||
|
.modelTenantId(StringUtils.hasText(tenantId) ? tenantId : NO_TENANT_ID)
|
||||||
.singleResult();
|
.singleResult();
|
||||||
if (Objects.isNull(formModel)) {
|
if (Objects.isNull(formModel)) {
|
||||||
return definitionId;
|
return definitionId;
|
||||||
|
|||||||
@ -1,15 +1,18 @@
|
|||||||
package cn.axzo.workflow.core.service.impl;
|
package cn.axzo.workflow.core.service.impl;
|
||||||
|
|
||||||
|
import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.definition.BpmnProcessDefinitionUpdateDTO;
|
import cn.axzo.workflow.common.model.request.bpmn.definition.BpmnProcessDefinitionUpdateDTO;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessDefinitionPageDTO;
|
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessDefinitionPageDTO;
|
||||||
|
import cn.axzo.workflow.common.model.request.form.definition.FromDefinitionSearchDTO;
|
||||||
import cn.axzo.workflow.common.model.response.BpmPageResult;
|
import cn.axzo.workflow.common.model.response.BpmPageResult;
|
||||||
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO;
|
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO;
|
||||||
import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO;
|
||||||
import cn.axzo.workflow.core.common.utils.BpmnJsonConverterUtil;
|
import cn.axzo.workflow.core.common.utils.BpmnJsonConverterUtil;
|
||||||
import cn.axzo.workflow.core.repository.entity.ExtAxReProcDef;
|
import cn.axzo.workflow.core.repository.entity.ExtAxReProcDef;
|
||||||
import cn.axzo.workflow.core.service.BpmnProcessDefinitionService;
|
import cn.axzo.workflow.core.service.BpmnProcessDefinitionService;
|
||||||
import cn.axzo.workflow.core.service.ExtAxReProcDefService;
|
import cn.axzo.workflow.core.service.ExtAxReProcDefService;
|
||||||
import cn.axzo.workflow.core.service.converter.BpmnProcessDefinitionConverter;
|
import cn.axzo.workflow.core.service.converter.BpmnProcessDefinitionConverter;
|
||||||
|
import cn.axzo.workflow.form.service.FormDefinitionService;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -37,7 +40,6 @@ import java.util.Objects;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.BPMN_FILE_SUFFIX;
|
|
||||||
import static cn.axzo.workflow.common.code.BpmnModelRespCode.BPMN_BYTES_NOT_EXISTS;
|
import static cn.axzo.workflow.common.code.BpmnModelRespCode.BPMN_BYTES_NOT_EXISTS;
|
||||||
import static cn.axzo.workflow.common.code.BpmnModelRespCode.MODEL_NOT_EXISTS;
|
import static cn.axzo.workflow.common.code.BpmnModelRespCode.MODEL_NOT_EXISTS;
|
||||||
import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_DEPLOY_ID_NOT_EXISTS;
|
import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_DEPLOY_ID_NOT_EXISTS;
|
||||||
@ -47,6 +49,7 @@ import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS
|
|||||||
import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_KEY_NOT_MATCH;
|
import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_KEY_NOT_MATCH;
|
||||||
import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_NAME_NOT_MATCH;
|
import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_NAME_NOT_MATCH;
|
||||||
import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_RESULT_TOO_MANY;
|
import static cn.axzo.workflow.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_RESULT_TOO_MANY;
|
||||||
|
import static cn.axzo.workflow.common.constant.BpmnConstants.BPMN_FILE_SUFFIX;
|
||||||
import static cn.axzo.workflow.core.common.utils.BpmnCollectionUtils.addIfNotNull;
|
import static cn.axzo.workflow.core.common.utils.BpmnCollectionUtils.addIfNotNull;
|
||||||
import static cn.axzo.workflow.core.common.utils.BpmnCollectionUtils.convertMap;
|
import static cn.axzo.workflow.core.common.utils.BpmnCollectionUtils.convertMap;
|
||||||
import static java.util.Collections.emptyList;
|
import static java.util.Collections.emptyList;
|
||||||
@ -63,6 +66,8 @@ public class BpmnProcessDefinitionServiceImpl implements BpmnProcessDefinitionSe
|
|||||||
private BpmnProcessDefinitionConverter processDefinitionConverter;
|
private BpmnProcessDefinitionConverter processDefinitionConverter;
|
||||||
@Resource
|
@Resource
|
||||||
private String serviceVersion;
|
private String serviceVersion;
|
||||||
|
@Resource
|
||||||
|
private FormDefinitionService formDefinitionService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createProcessDefinition(Model model, byte[] bpmnBytes) {
|
public String createProcessDefinition(Model model, byte[] bpmnBytes) {
|
||||||
@ -185,6 +190,14 @@ public class BpmnProcessDefinitionServiceImpl implements BpmnProcessDefinitionSe
|
|||||||
}
|
}
|
||||||
BpmnProcessDefinitionVO vo = processDefinitionConverter.toVo(processDefinition);
|
BpmnProcessDefinitionVO vo = processDefinitionConverter.toVo(processDefinition);
|
||||||
vo.setJsonModel(BpmnJsonConverterUtil.convertToJson(repositoryService.getBpmnModel(id)));
|
vo.setJsonModel(BpmnJsonConverterUtil.convertToJson(repositoryService.getBpmnModel(id)));
|
||||||
|
|
||||||
|
FromDefinitionSearchDTO formDefinitionSearch = new FromDefinitionSearchDTO();
|
||||||
|
formDefinitionSearch.setKey(processDefinition.getKey());
|
||||||
|
formDefinitionSearch.setTenantId(processDefinition.getTenantId());
|
||||||
|
FormDefinitionVO formDefinitionVO = formDefinitionService.get(formDefinitionSearch);
|
||||||
|
if (Objects.nonNull(formDefinitionVO)) {
|
||||||
|
vo.setFormFields(formDefinitionVO.getFields());
|
||||||
|
}
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.axzo.workflow.form.service.converter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @author wangli
|
||||||
|
* @since 2024-11-11 13:42
|
||||||
|
*/
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ConversionUtils {
|
||||||
|
public static List<String> convertObjectToList(Object obj) {
|
||||||
|
if (obj instanceof List) {
|
||||||
|
List<?> list = (List<?>) obj;
|
||||||
|
List<String> stringList = new ArrayList<>();
|
||||||
|
for (Object item : list) {
|
||||||
|
if (item instanceof String) {
|
||||||
|
stringList.add((String) item);
|
||||||
|
} else {
|
||||||
|
// 处理非字符串类型的情况,可以选择忽略、抛出异常或进行其他处理
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return stringList;
|
||||||
|
} else {
|
||||||
|
// 如果输入不是列表类型,返回空列表或进行其他处理
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
package cn.axzo.workflow.form.service.converter;
|
||||||
|
|
||||||
|
import cn.axzo.workflow.common.model.request.form.definition.FormFieldDTO;
|
||||||
|
import org.flowable.form.model.FormField;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import static org.mapstruct.NullValueCheckStrategy.ALWAYS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @author wangli
|
||||||
|
* @since 2024-11-11 11:27
|
||||||
|
*/
|
||||||
|
@Mapper(
|
||||||
|
componentModel = "spring",
|
||||||
|
nullValueCheckStrategy = ALWAYS,
|
||||||
|
imports = {Arrays.class, ConversionUtils.class}
|
||||||
|
)
|
||||||
|
public interface FormFieldConverter extends EntityConverter<FormFieldDTO, FormField> {
|
||||||
|
|
||||||
|
@Mapping(target = "id", source = "entity.id")
|
||||||
|
@Mapping(target = "name", source = "entity.name")
|
||||||
|
@Mapping(target = "type", source = "entity.type")
|
||||||
|
@Mapping(target = "value", expression = "java(ConversionUtils.convertObjectToList(entity.getValue()))")
|
||||||
|
@Mapping(target = "required", source = "entity.required")
|
||||||
|
@Mapping(target = "readOnly", source = "entity.readOnly")
|
||||||
|
@Mapping(target = "placeholder", source = "entity.placeholder")
|
||||||
|
@Mapping(target = "params", source = "entity.params")
|
||||||
|
FormFieldDTO toVo(FormField entity);
|
||||||
|
|
||||||
|
}
|
||||||
@ -4,25 +4,29 @@ import cn.axzo.framework.jackson.utility.JSON;
|
|||||||
import cn.axzo.workflow.common.model.request.form.definition.FromDefinitionSearchDTO;
|
import cn.axzo.workflow.common.model.request.form.definition.FromDefinitionSearchDTO;
|
||||||
import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO;
|
import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO;
|
||||||
import cn.axzo.workflow.form.service.FormDefinitionService;
|
import cn.axzo.workflow.form.service.FormDefinitionService;
|
||||||
|
import cn.axzo.workflow.form.service.converter.FormFieldConverter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.ibatis.javassist.Loader;
|
||||||
|
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
|
||||||
import org.flowable.common.engine.impl.util.IoUtil;
|
import org.flowable.common.engine.impl.util.IoUtil;
|
||||||
import org.flowable.engine.FormService;
|
|
||||||
import org.flowable.engine.RepositoryService;
|
|
||||||
import org.flowable.engine.RuntimeService;
|
|
||||||
import org.flowable.form.api.FormDefinition;
|
import org.flowable.form.api.FormDefinition;
|
||||||
import org.flowable.form.api.FormDefinitionQuery;
|
import org.flowable.form.api.FormDefinitionQuery;
|
||||||
import org.flowable.form.api.FormInfo;
|
import org.flowable.form.api.FormInfo;
|
||||||
import org.flowable.form.api.FormRepositoryService;
|
import org.flowable.form.api.FormRepositoryService;
|
||||||
|
import org.flowable.form.model.FormField;
|
||||||
|
import org.flowable.form.model.SimpleFormModel;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.FORM_FILE_SUFFIX;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.FORM_FILE_SUFFIX;
|
||||||
|
import static cn.axzo.workflow.common.constant.BpmnConstants.NO_TENANT_ID;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,11 +42,7 @@ public class FormDefinitionServiceImpl implements FormDefinitionService {
|
|||||||
@Resource
|
@Resource
|
||||||
private FormRepositoryService formRepositoryService;
|
private FormRepositoryService formRepositoryService;
|
||||||
@Resource
|
@Resource
|
||||||
private RepositoryService repositoryService;
|
private FormFieldConverter formFieldConverter;
|
||||||
@Resource
|
|
||||||
private FormService formService;
|
|
||||||
@Resource
|
|
||||||
private RuntimeService runtimeService;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FormDefinitionVO getDraft(FromDefinitionSearchDTO dto) {
|
public FormDefinitionVO getDraft(FromDefinitionSearchDTO dto) {
|
||||||
@ -52,28 +52,22 @@ public class FormDefinitionServiceImpl implements FormDefinitionService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FormDefinitionVO get(FromDefinitionSearchDTO dto) {
|
public FormDefinitionVO get(FromDefinitionSearchDTO dto) {
|
||||||
FormDefinitionQuery definitionQuery = formRepositoryService.createFormDefinitionQuery()
|
FormInfo formModel;
|
||||||
.formTenantId(dto.getTenantId());
|
try {
|
||||||
if (StringUtils.hasText(dto.getKey())) {
|
formModel = formRepositoryService.getFormModelByKey(dto.getKey(), dto.getTenantId(), true);
|
||||||
definitionQuery.formDefinitionKey(dto.getKey());
|
}catch (FlowableObjectNotFoundException e){
|
||||||
}
|
return null;
|
||||||
if (StringUtils.hasText(dto.getDeploymentId())) {
|
|
||||||
definitionQuery.deploymentId(dto.getDeploymentId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FormDefinition formDefinition;
|
FormDefinitionVO formDefinitionVO = new FormDefinitionVO();
|
||||||
if (Objects.nonNull(dto.getVersion())) {
|
formDefinitionVO.setFormDefinitionId(formModel.getId());
|
||||||
formDefinition = definitionQuery.formVersion(dto.getVersion())
|
formDefinitionVO.setName(formModel.getName());
|
||||||
.singleResult();
|
formDefinitionVO.setKey(formModel.getKey());
|
||||||
} else {
|
formDefinitionVO.setVersion(formModel.getVersion());
|
||||||
formDefinition = definitionQuery.latestVersion()
|
formDefinitionVO.setTenantId(dto.getTenantId());
|
||||||
.singleResult();
|
List<FormField> fields = ((SimpleFormModel) formModel.getFormModel()).getFields();
|
||||||
}
|
formDefinitionVO.setFields(formFieldConverter.toVos(fields));
|
||||||
|
return formDefinitionVO;
|
||||||
InputStream formDefinitionResource = formRepositoryService.getFormDefinitionResource(formDefinition.getId());
|
|
||||||
byte[] bytes = IoUtil.readInputStream(formDefinitionResource, dto.getKey() + FORM_FILE_SUFFIX);
|
|
||||||
IoUtil.closeSilently(formDefinitionResource);
|
|
||||||
return JSON.parseObject(new String(bytes, StandardCharsets.UTF_8), FormDefinitionVO.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -13,15 +13,14 @@ import cn.azxo.framework.common.model.CommonResponse;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.bpmn.model.FlowElement;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.common.engine.impl.util.IoUtil;
|
import org.flowable.common.engine.impl.util.IoUtil;
|
||||||
import org.flowable.engine.FormService;
|
|
||||||
import org.flowable.engine.HistoryService;
|
import org.flowable.engine.HistoryService;
|
||||||
import org.flowable.engine.RepositoryService;
|
import org.flowable.engine.RepositoryService;
|
||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.form.StartFormData;
|
|
||||||
import org.flowable.engine.history.HistoricProcessInstance;
|
import org.flowable.engine.history.HistoricProcessInstance;
|
||||||
import org.flowable.engine.repository.Deployment;
|
import org.flowable.engine.repository.Deployment;
|
||||||
import org.flowable.form.api.FormInfo;
|
import org.flowable.form.api.FormInfo;
|
||||||
import org.flowable.form.api.FormRepositoryService;
|
import org.flowable.form.api.FormRepositoryService;
|
||||||
|
import org.flowable.form.api.FormService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
@ -267,7 +266,8 @@ public class TestController {
|
|||||||
@GetMapping("form")
|
@GetMapping("form")
|
||||||
public CommonResponse<FormInfo> getForm(@RequestParam String definitionId, @RequestParam(required = false) String processInstanceId) {
|
public CommonResponse<FormInfo> getForm(@RequestParam String definitionId, @RequestParam(required = false) String processInstanceId) {
|
||||||
// FormInfo startFormModel = bpmnProcessInstanceService.getStartFormModel(definitionId, processInstanceId);
|
// FormInfo startFormModel = bpmnProcessInstanceService.getStartFormModel(definitionId, processInstanceId);
|
||||||
StartFormData startFormData = formService.getStartFormData(definitionId);
|
// formService.getFormInstanceModelByKey("we", null, null, null);
|
||||||
|
FormInfo we = formService.getFormModelWithVariablesByKey("we", null, null);
|
||||||
FormInfo formModelByKey = formRepositoryService.getFormModelByKey("we");
|
FormInfo formModelByKey = formRepositoryService.getFormModelByKey("we");
|
||||||
FormInfo startFormModel = runtimeService.getStartFormModel(definitionId, processInstanceId);
|
FormInfo startFormModel = runtimeService.getStartFormModel(definitionId, processInstanceId);
|
||||||
return CommonResponse.success(null);
|
return CommonResponse.success(null);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user