feat(REQ-3004) - 修复一些特殊配置引起的异常

This commit is contained in:
wangli 2024-12-03 15:00:11 +08:00
parent cfce9d7cd8
commit e483d76a3a
3 changed files with 26 additions and 12 deletions

View File

@ -156,7 +156,7 @@ public class GetFormInstanceAndPermissionCmd implements Command<FormInstanceInfo
// 假设通过分享功能分享了审批那么被分享人不应该看到表单
ExtAxProcessLog starterLog = logs.stream().filter(e -> Objects.equals(NODE_STARTER.getType(), e.getActivityId()))
.findFirst().orElse(new ExtAxProcessLog());
starterLog.getFormFieldPermissionConf().forEach(perm -> {
ListUtils.emptyIfNull(starterLog.getFormFieldPermissionConf()).forEach(perm -> {
// 防预编程, 强制设置为 hidden
perm.setRequired(false);
perm.setEditable(false);
@ -237,10 +237,8 @@ public class GetFormInstanceAndPermissionCmd implements Command<FormInstanceInfo
FormRepositoryService formRepositoryService = formEngineConfiguration.getFormRepositoryService();
FormDefinition formDefinition = formRepositoryService.createFormDefinitionQuery().deploymentId(relation.getFormDeploymentId()).singleResult();
FormService formService = formEngineConfiguration.getFormService();
// 获取表单定义+字段内容
return commandContext.getCommandExecutor().execute(new CustomGetFormInstanceModelCmd(null, null, formDefinition.getId(), taskId, processInstanceId, instance.getTenantId() ,null, false ));
// return formService.getFormInstanceModelById(formDefinition.getId(), taskId, processInstanceId, null, instance.getTenantId(), false);
}
private void preCheckParam() {

View File

@ -99,6 +99,7 @@ public class AggregateModelServiceImpl implements AggregateModelService {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(definitionId).singleResult();
String formDeploymentId = formModelService.deployFormModelById(formModel.getId(), tenantId, processDefinition.getDeploymentId());
if (StringUtils.hasText(formDeploymentId)) {
// 保存关联关系
BpmnFormRelationCreateDTO relation = new BpmnFormRelationCreateDTO();
relation.setKey(model.getKey());
@ -106,6 +107,7 @@ public class AggregateModelServiceImpl implements AggregateModelService {
relation.setFormDeploymentId(formDeploymentId);
relation.setTenantId(tenantId);
formRelationService.insert(relation);
}
return definitionId;
}

View File

@ -11,6 +11,7 @@ import cn.axzo.workflow.common.model.response.form.model.FormModelBaseVO;
import cn.axzo.workflow.core.service.FormModelService;
import cn.axzo.workflow.form.service.converter.FormModelConverter;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.ManagementService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.Model;
@ -44,6 +45,7 @@ import static cn.axzo.workflow.common.util.BpmnNativeQueryUtil.sqlConnectors;
* @author wangli
* @since 2023/7/25 10:13
*/
@Slf4j
@Service
public class FormModelServiceImpl implements FormModelService {
@ -215,9 +217,21 @@ public class FormModelServiceImpl implements FormModelService {
if (Objects.nonNull(tenantId) && !Objects.equals(model.getTenantId(), tenantId)) {
throw new WorkflowEngineException(FORM_MODEL_NOT_EXISTS);
}
byte[] modelEditorSource = repositoryService.getModelEditorSource(model.getId());
String modelStr;
if (StringUtils.hasText(modelStr = new String(modelEditorSource))) {
try {
FormDefinitionDTO formDefinitionDTO = JSON.parseObject(modelStr, FormDefinitionDTO.class);
if (Objects.isNull(formDefinitionDTO) || CollectionUtils.isEmpty(formDefinitionDTO.getFields())) {
return null;
}
} catch (Exception e) {
log.warn("form model parse error: {}", e.getMessage(), e);
return null;
}
}
FormDeployment deploy = formRepositoryService.createDeployment()
.addFormDefinition(model.getKey() + FORM_FILE_SUFFIX,
new String(repositoryService.getModelEditorSource(model.getId())))
.addFormDefinition(model.getKey() + FORM_FILE_SUFFIX, modelStr)
.name(model.getName())
.category(model.getKey())
.tenantId(model.getTenantId())