From a1ef6c1dc2fa16ab90a6d7dd8c199f3fe3f940fc Mon Sep 17 00:00:00 2001 From: dengqichen Date: Wed, 11 Dec 2024 14:25:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8A=82=E7=82=B9=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/pom.xml | 5 +++ .../workflow/entity/WorkflowDefinition.java | 12 ++++++ .../impl/WorkflowDefinitionServiceImpl.java | 2 +- .../workflow/util/JsonSchemaValidator.java | 39 +++++++++++++++++++ .../db/migration/V1.0.0__init_schema.sql | 1 + 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/workflow/util/JsonSchemaValidator.java diff --git a/backend/pom.xml b/backend/pom.xml index ac48ac2c..4bc6af70 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -225,6 +225,11 @@ + + com.networknt + json-schema-validator + 1.0.86 + diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowDefinition.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowDefinition.java index e91da303..05549518 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowDefinition.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowDefinition.java @@ -54,6 +54,18 @@ public class WorkflowDefinition extends Entity { @Column(name = "graph_json", columnDefinition = "json") private JsonNode graphJson; + /** + * 表单配置JSON + * 包含: + * - 流程级别的表单配置 + * - 流程变量定义 + * - 表单验证规则 + * - 表单布局配置 + */ + @Type(JsonType.class) + @Column(name = "form_config", columnDefinition = "json") + private JsonNode formConfig; + @Column(nullable = false) @Enumerated(EnumType.STRING) private WorkflowStatusEnums status; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/service/impl/WorkflowDefinitionServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/service/impl/WorkflowDefinitionServiceImpl.java index 6c02ad7c..5165fbe4 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/service/impl/WorkflowDefinitionServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/service/impl/WorkflowDefinitionServiceImpl.java @@ -71,7 +71,7 @@ public class WorkflowDefinitionServiceImpl extends BaseServiceImpl 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()); + } + } +} \ No newline at end of file diff --git a/backend/src/main/resources/db/migration/V1.0.0__init_schema.sql b/backend/src/main/resources/db/migration/V1.0.0__init_schema.sql index c519ba4f..ea3df333 100644 --- a/backend/src/main/resources/db/migration/V1.0.0__init_schema.sql +++ b/backend/src/main/resources/db/migration/V1.0.0__init_schema.sql @@ -399,6 +399,7 @@ CREATE TABLE workflow_definition ( graph_json JSON COMMENT 'x6 JSON内容', status VARCHAR(32) NOT NULL COMMENT '状态', description VARCHAR(255) NULL COMMENT '流程描述', + form_config JSON COMMENT '表单配置JSON', CONSTRAINT UK_workflow_definition_key_version UNIQUE (`key`, flow_version) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流定义表';