增加节点面板查询

This commit is contained in:
dengqichen 2024-12-11 14:25:54 +08:00
parent aba4f837ed
commit a1ef6c1dc2
5 changed files with 58 additions and 1 deletions

View File

@ -225,6 +225,11 @@
<!-- <artifactId>flowable-spring-boot-starter-rest</artifactId>--> <!-- <artifactId>flowable-spring-boot-starter-rest</artifactId>-->
<!-- <version>${flowable.version}</version>--> <!-- <version>${flowable.version}</version>-->
<!-- </dependency>--> <!-- </dependency>-->
<dependency>
<groupId>com.networknt</groupId>
<artifactId>json-schema-validator</artifactId>
<version>1.0.86</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -54,6 +54,18 @@ public class WorkflowDefinition extends Entity<Long> {
@Column(name = "graph_json", columnDefinition = "json") @Column(name = "graph_json", columnDefinition = "json")
private JsonNode graphJson; private JsonNode graphJson;
/**
* 表单配置JSON
* 包含
* - 流程级别的表单配置
* - 流程变量定义
* - 表单验证规则
* - 表单布局配置
*/
@Type(JsonType.class)
@Column(name = "form_config", columnDefinition = "json")
private JsonNode formConfig;
@Column(nullable = false) @Column(nullable = false)
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private WorkflowStatusEnums status; private WorkflowStatusEnums status;

View File

@ -71,7 +71,7 @@ public class WorkflowDefinitionServiceImpl extends BaseServiceImpl<WorkflowDefin
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public WorkflowDefinitionDTO saveWorkflowDesign(WorkflowDefinitionDTO dto) throws Exception { public WorkflowDefinitionDTO saveWorkflowDesign(WorkflowDefinitionDTO dto) throws Exception {
// 转换图形JSON为BPMN XML // 转换图形JSON为BPMN XML
String bpmnXml = bpmnConverter.convertToBpmnXml(dto.getGraphJson().toString(), dto.getKey()); String bpmnXml = bpmnConverter.convertToBpmnXml(dto.getGraphJson(), dto.getKey());
dto.setFlowVersion(1); dto.setFlowVersion(1);
dto.setBpmnXml(bpmnXml); dto.setBpmnXml(bpmnXml);

View File

@ -0,0 +1,39 @@
package com.qqchen.deploy.backend.workflow.util;
import com.fasterxml.jackson.databind.JsonNode;
import com.networknt.schema.JsonSchema;
import com.networknt.schema.JsonSchemaFactory;
import com.networknt.schema.SpecVersion;
import com.networknt.schema.ValidationMessage;
import com.qqchen.deploy.backend.framework.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
@Component
public class JsonSchemaValidator {
private final JsonSchemaFactory factory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7);
/**
* 验证JSON数据是否符合Schema
*/
public void validate(JsonNode data, JsonNode schema) {
try {
JsonSchema jsonSchema = factory.getSchema(schema);
Set<ValidationMessage> errors = jsonSchema.validate(data);
if (!errors.isEmpty()) {
String errorMessages = errors.stream()
.map(ValidationMessage::getMessage)
.collect(Collectors.joining(", "));
throw new IllegalStateException("JSON Schema validation failed: " + errorMessages);
}
} catch (Exception e) {
log.error("JSON Schema validation error", e);
throw new IllegalStateException("JSON Schema validation error: " + e.getMessage());
}
}
}

View File

@ -399,6 +399,7 @@ CREATE TABLE workflow_definition (
graph_json JSON COMMENT 'x6 JSON内容', graph_json JSON COMMENT 'x6 JSON内容',
status VARCHAR(32) NOT NULL COMMENT '状态', status VARCHAR(32) NOT NULL COMMENT '状态',
description VARCHAR(255) NULL COMMENT '流程描述', description VARCHAR(255) NULL COMMENT '流程描述',
form_config JSON COMMENT '表单配置JSON',
CONSTRAINT UK_workflow_definition_key_version UNIQUE (`key`, flow_version) CONSTRAINT UK_workflow_definition_key_version UNIQUE (`key`, flow_version)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流定义表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流定义表';