diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppConfigDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppConfigDTO.java index e43a18c2..c207dd14 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppConfigDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppConfigDTO.java @@ -20,14 +20,6 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) public class DeployAppConfigDTO extends BaseDTO { - @Schema(description = "环境ID") - @NotNull(message = "环境ID不能为空") - private Long environmentId; - - @Schema(description = "应用ID") - @NotNull(message = "应用ID不能为空") - private Long applicationId; - @Schema(description = "应用") private ApplicationDTO application; @@ -38,9 +30,6 @@ public class DeployAppConfigDTO extends BaseDTO { @NotNull(message = "应用语言不能为空") private DevelopmentLanguageTypeEnum languageType; - @NotNull(message = "已发布的流程定义ID") - private Long workflowDefinitionId; - @Schema(description = "已发布的流程定义") private WorkflowDefinitionDTO publishedWorkflowDefinition; @@ -48,6 +37,17 @@ public class DeployAppConfigDTO extends BaseDTO { @NotNull(message = "构建配置不能为空") private JsonNode buildVariables; + @Schema(description = "环境ID") + @NotNull(message = "环境ID不能为空") + private Long environmentId; + + @Schema(description = "应用ID") + @NotNull(message = "应用ID不能为空") + private Long applicationId; + + @NotNull(message = "已发布的流程定义ID") + private Long workflowDefinitionId; + @NotNull(message = "启用字段不能为空") private Boolean enabled = true; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsBaseBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsBaseBuildVariables.java deleted file mode 100644 index f9d12bf8..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsBaseBuildVariables.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.qqchen.deploy.backend.deploy.dto.variables; - -import com.qqchen.deploy.backend.workflow.annotation.CodeEditorConfig; -import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; -import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSource; -import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSourceParam; -import com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables.DeployNodeFormVariables; -import lombok.Data; - -/** - * Jenkins构建变量 - */ -@Data -public class JenkinsBaseBuildVariables extends DeployNodeFormVariables { - - @SchemaProperty( - title = "禅道任务号", - description = "禅道任务号", - order = 0 - ) - private String taskId; - -} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/DeployNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java similarity index 88% rename from backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/DeployNodeFormVariables.java rename to backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java index 3b84ecab..7e0b6ddf 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/DeployNodeFormVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java @@ -1,14 +1,15 @@ -package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables; +package com.qqchen.deploy.backend.deploy.dto.variables.build; import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSource; import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSourceParam; import lombok.Data; -import lombok.EqualsAndHashCode; +/** + * Jenkins构建变量 + */ @Data -@EqualsAndHashCode(callSuper = true) -public class DeployNodeFormVariables extends BaseNodeFormVariables { +public class JenkinsBaseBuildVariables { @SchemaProperty( title = "绑定三方Jenkins系统", @@ -20,7 +21,7 @@ public class DeployNodeFormVariables extends BaseNodeFormVariables { valueField = "id", labelField = "name" ), - order = 1 + order = 2 ) private String externalSystemId; @@ -39,7 +40,7 @@ public class DeployNodeFormVariables extends BaseNodeFormVariables { @SchemaPropertyDataSourceParam(name = "externalSystemId", value = "${externalSystemId}") } ), - order = 2 + order = 3 ) private String viewId; @@ -59,8 +60,8 @@ public class DeployNodeFormVariables extends BaseNodeFormVariables { @SchemaPropertyDataSourceParam(name = "viewId", value = "${viewId}") } ), - order = 3 + order = 4 ) private String jobId; -} +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsJavaBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsJavaBuildVariables.java similarity index 76% rename from backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsJavaBuildVariables.java rename to backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsJavaBuildVariables.java index 61f44135..64e48934 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsJavaBuildVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsJavaBuildVariables.java @@ -1,4 +1,4 @@ -package com.qqchen.deploy.backend.deploy.dto.variables; +package com.qqchen.deploy.backend.deploy.dto.variables.build; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsNodeJsBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsNodeJsBuildVariables.java similarity index 76% rename from backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsNodeJsBuildVariables.java rename to backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsNodeJsBuildVariables.java index 1a8bfb26..adcf5551 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsNodeJsBuildVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsNodeJsBuildVariables.java @@ -1,4 +1,4 @@ -package com.qqchen.deploy.backend.deploy.dto.variables; +package com.qqchen.deploy.backend.deploy.dto.variables.build; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/DeployAppConfig.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/DeployAppConfig.java index 8cc25a12..402d8135 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/DeployAppConfig.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/DeployAppConfig.java @@ -40,6 +40,10 @@ public class DeployAppConfig extends Entity { @Column(name = "workflow_definition_id", nullable = false) private Long workflowDefinitionId; + @Type(JsonType.class) + @Column(name = "form_variables_schema", columnDefinition = "text") + private JsonNode formVariablesSchema; + @Type(JsonType.class) @Column(name = "build_variables", columnDefinition = "text", nullable = false) private JsonNode buildVariables; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/BuildTypeEnum.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/BuildTypeEnum.java index 9760aa95..5cf34043 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/BuildTypeEnum.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/BuildTypeEnum.java @@ -1,8 +1,9 @@ package com.qqchen.deploy.backend.deploy.enums; import com.fasterxml.jackson.annotation.JsonValue; -import com.qqchen.deploy.backend.deploy.dto.variables.JenkinsJavaBuildVariables; -import com.qqchen.deploy.backend.deploy.dto.variables.JenkinsNodeJsBuildVariables; +import com.qqchen.deploy.backend.deploy.dto.variables.build.JenkinsJavaBuildVariables; +import com.qqchen.deploy.backend.deploy.dto.variables.build.JenkinsNodeJsBuildVariables; +import com.qqchen.deploy.backend.deploy.dto.variables.form.BuildFormVariables; import lombok.Getter; /** @@ -20,6 +21,7 @@ public enum BuildTypeEnum { DevelopmentLanguageTypeEnum.GO, DevelopmentLanguageTypeEnum.PYTHON }, + BuildFormVariables.class, new Class[] { JenkinsJavaBuildVariables.class, JenkinsNodeJsBuildVariables.class, @@ -28,11 +30,28 @@ public enum BuildTypeEnum { }, "Jenkins构建" ), + NATIVE( + "NATIVE", + "Native构建", + null, + null, + null, + "Native构建" + ), + CODE_ARTS( + "CODE_ARTS", + "CodeArts构建", + null, + null, + null, + "CodeArts构建" + ), GITLAB_RUNNER( "GITLAB_RUNNER", "GitLab Runner构建", null, null, + null, "GitLab Runner构建" ), GITHUB_ACTION( @@ -40,6 +59,7 @@ public enum BuildTypeEnum { "GitHub Action构建", null, null, + null, "GitHub Action构建" ); @@ -50,14 +70,17 @@ public enum BuildTypeEnum { private final DevelopmentLanguageTypeEnum[] supportedLanguages; + private final Class formVariablesSchema; + private final Class[] buildVariables; private final String description; - BuildTypeEnum(String code, String name, DevelopmentLanguageTypeEnum[] supportedLanguages, Class[] buildVariables, String description) { + BuildTypeEnum(String code, String name, DevelopmentLanguageTypeEnum[] supportedLanguages, Class formVariablesSchema, Class[] buildVariables, String description) { this.code = code; this.name = name; this.supportedLanguages = supportedLanguages; + this.formVariablesSchema = formVariablesSchema; this.buildVariables = buildVariables; this.description = description; } diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployAppConfigServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployAppConfigServiceImpl.java index 8ff9ccb7..040323d7 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployAppConfigServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployAppConfigServiceImpl.java @@ -1,15 +1,13 @@ package com.qqchen.deploy.backend.deploy.service.impl; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.qqchen.deploy.backend.deploy.converter.ApplicationConverter; -import com.qqchen.deploy.backend.deploy.dto.ApplicationDTO; import com.qqchen.deploy.backend.deploy.dto.BuildConfigDefinedDTO; import com.qqchen.deploy.backend.deploy.dto.DeployAppConfigDTO; import com.qqchen.deploy.backend.deploy.entity.Application; import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig; -import com.qqchen.deploy.backend.deploy.entity.ProjectGroup; import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum; import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum; -import com.qqchen.deploy.backend.deploy.query.ApplicationQuery; import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery; import com.qqchen.deploy.backend.deploy.repository.IApplicationRepository; import com.qqchen.deploy.backend.deploy.service.IDeployAppConfigService; @@ -17,6 +15,7 @@ import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; import com.qqchen.deploy.backend.workflow.converter.WorkflowDefinitionConverter; import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition; import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository; +import com.qqchen.deploy.backend.workflow.util.GenerateSchemaUtils; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -24,6 +23,7 @@ import org.springframework.data.domain.PageImpl; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -90,4 +90,12 @@ public class DeployAppConfigServiceImpl extends BaseServiceImpl使用示例: + *
+ * {@code
+ * @SchemaProperty(
+ *     title = "Jenkins任务",
+ *     visibleOn = @SchemaPropertyVisibleOn(
+ *         field = "buildType",
+ *         value = "JENKINS"
+ *     )
+ * )
+ * private String jenkinsJob;
+ * 
+ * @SchemaProperty(
+ *     title = "共享配置",
+ *     visibleOn = {
+ *         @SchemaPropertyVisibleOn(
+ *             field = "buildType",
+ *             value = {"JENKINS", "NATIVE"},
+ *             operator = CompareOperator.IN
+ *         )
+ *     }
+ * )
+ * private String sharedConfig;
+ * }
+ * 
+ */ +@Target({}) +@Retention(RetentionPolicy.RUNTIME) +public @interface SchemaPropertyVisibleOn { + /** + * 依赖的字段名 + */ + String field() default ""; + + /** + * 字段值 + * 支持单个值或多个值 + */ + String[] value() default {}; + + /** + * 比较操作符 + */ + CompareOperatorEnums operator() default CompareOperatorEnums.EQUAL; +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowDefinitionDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowDefinitionDTO.java index 4062a6db..b8afdab0 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowDefinitionDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowDefinitionDTO.java @@ -62,7 +62,7 @@ public class WorkflowDefinitionDTO extends BaseDTO { private WorkflowDefinitionStatusEnums status; - private JsonNode formVariablesSchema; + private JsonNode localVariablesSchema; /** * 流程描述 diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/ApprovalNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/ApprovalNodeFormVariables.java deleted file mode 100644 index 35c7d83b..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/ApprovalNodeFormVariables.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables; - -import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 审批节点表单变量 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class ApprovalNodeFormVariables extends BaseNodeFormVariables { - - @SchemaProperty( - title = "审批意见", - description = "请填写审批意见", - required = true - ) - private String comment; - - @SchemaProperty( - title = "审批结果", - description = "请选择审批结果", - required = true, - enumValues = {"APPROVED", "REJECTED"}, - enumNames = {"同意", "拒绝"} - ) - private String approvalResult; -} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/BaseNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/BaseNodeFormVariables.java deleted file mode 100644 index 7fbe4277..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/BaseNodeFormVariables.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables; - -import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; -import lombok.Data; - -/** - * 事件节点基础配置 - */ -@Data -public class BaseNodeFormVariables { - -} diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/ScriptNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/ScriptNodeFormVariables.java deleted file mode 100644 index 51358254..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables/ScriptNodeFormVariables.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -public class ScriptNodeFormVariables { - -} diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/ApprovalNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/ApprovalNodeFormVariables.java new file mode 100644 index 00000000..721e71ba --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/ApprovalNodeFormVariables.java @@ -0,0 +1,29 @@ +//package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables_remove; +// +//import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; +//import lombok.Data; +//import lombok.EqualsAndHashCode; +// +///** +// * 审批节点表单变量 +// */ +//@Data +//@EqualsAndHashCode(callSuper = true) +//public class ApprovalNodeFormVariables extends BaseNodeFormVariables { +// +// @SchemaProperty( +// title = "审批意见", +// description = "请填写审批意见", +// required = true +// ) +// private String comment; +// +// @SchemaProperty( +// title = "审批结果", +// description = "请选择审批结果", +// required = true, +// enumValues = {"APPROVED", "REJECTED"}, +// enumNames = {"同意", "拒绝"} +// ) +// private String approvalResult; +//} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/BaseNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/BaseNodeFormVariables.java new file mode 100644 index 00000000..e8e3e268 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/BaseNodeFormVariables.java @@ -0,0 +1,11 @@ +//package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables_remove; +// +//import lombok.Data; +// +///** +// * 事件节点基础配置 +// */ +//@Data +//public class BaseNodeFormVariables { +// +//} diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/DeployNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/DeployNodeFormVariables.java new file mode 100644 index 00000000..6e2cc4f1 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/DeployNodeFormVariables.java @@ -0,0 +1,83 @@ +//package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables_remove; +// +//import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; +//import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSource; +//import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSourceParam; +//import lombok.Data; +//import lombok.EqualsAndHashCode; +// +//@Data +//@EqualsAndHashCode(callSuper = true) +//public class DeployNodeFormVariables extends BaseNodeFormVariables { +// +// @SchemaProperty( +// title = "部署类型", +// description = "部署类型", +// required = true, +// enumValues = { +// "JENKINS", +// "NATIVE", +// }, +// enumNames = { +// "Jenkins部署", +// "本地部署" +// }, +// order = 1 +// ) +// private String gatewayType; +// +// +// @SchemaProperty( +// title = "绑定三方Jenkins系统", +// description = "请选择三方Jenkins系统", +// required = true, +// dataSource = @SchemaPropertyDataSource( +// type = "api", +// url = "/api/v1/external-system/list?type=JENKINS", +// valueField = "id", +// labelField = "name" +// ), +// order = 2 +// ) +// private String externalSystemId; +// +// +// @SchemaProperty( +// title = "绑定Jenkins视图", +// description = "Jenkins视图", +// required = true, +// dataSource = @SchemaPropertyDataSource( +// type = "api", +// url = "/api/v1/jenkins-view/list", +// valueField = "id", +// labelField = "viewName", +// dependsOn = {"externalSystemId"}, +// params = { +// @SchemaPropertyDataSourceParam(name = "externalSystemId", value = "${externalSystemId}") +// } +// ), +// order = 3 +// ) +// private String viewId; +// +// +// @SchemaProperty( +// title = "绑定Jenkins任务", +// description = "Jenkins任务", +// required = true, +// dataSource = @SchemaPropertyDataSource( +// type = "api", +// url = "/api/v1/jenkins-job/list", +// valueField = "id", +// labelField = "jobName", +// dependsOn = {"externalSystemId", "viewId"}, +// params = { +// @SchemaPropertyDataSourceParam(name = "externalSystemId", value = "${externalSystemId}"), +// @SchemaPropertyDataSourceParam(name = "viewId", value = "${viewId}") +// } +// ), +// order = 4 +// ) +// private String jobId; +// +//} diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/ScriptNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/ScriptNodeFormVariables.java new file mode 100644 index 00000000..d9c2a410 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/fromVariables_remove/ScriptNodeFormVariables.java @@ -0,0 +1,8 @@ +//package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables_remove; +// +//import lombok.Data; +// +//@Data +//public class ScriptNodeFormVariables { +// +//} diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/ApprovalNodeLocalVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/ApprovalNodeLocalVariables.java index df2b59aa..458c4f36 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/ApprovalNodeLocalVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/ApprovalNodeLocalVariables.java @@ -3,9 +3,6 @@ package com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables; import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; import lombok.Data; -/** - * 审批节点运行时变量 - */ @Data public class ApprovalNodeLocalVariables { diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/BaseNodeLocalVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/BaseNodeLocalVariables.java index e817182d..4a05bc56 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/BaseNodeLocalVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/BaseNodeLocalVariables.java @@ -1,12 +1,5 @@ package com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables; -import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; -import lombok.Data; - -/** - * 系统需要使用的变量 - */ -@Data public class BaseNodeLocalVariables { } diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/DeployNodeFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/DeployNodeFormVariables.java new file mode 100644 index 00000000..f48e1913 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/DeployNodeFormVariables.java @@ -0,0 +1,83 @@ +//package com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables; +// +//import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; +//import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSource; +//import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSourceParam; +//import lombok.Data; +//import lombok.EqualsAndHashCode; +// +//@Data +//@EqualsAndHashCode(callSuper = true) +//public class DeployNodeFormVariables extends BaseNodeLocalVariables { +// +// @SchemaProperty( +// title = "部署类型", +// description = "部署类型", +// required = true, +// enumValues = { +// "JENKINS", +// "NATIVE", +// }, +// enumNames = { +// "Jenkins部署", +// "本地部署" +// }, +// order = 1 +// ) +// private String buildType; +// +// +// @SchemaProperty( +// title = "绑定三方Jenkins系统", +// description = "请选择三方Jenkins系统", +// required = true, +// dataSource = @SchemaPropertyDataSource( +// type = "api", +// url = "/api/v1/external-system/list?type=JENKINS", +// valueField = "id", +// labelField = "name" +// ), +// order = 2 +// ) +// private String externalSystemId; +// +// +// @SchemaProperty( +// title = "绑定Jenkins视图", +// description = "Jenkins视图", +// required = true, +// dataSource = @SchemaPropertyDataSource( +// type = "api", +// url = "/api/v1/jenkins-view/list", +// valueField = "id", +// labelField = "viewName", +// dependsOn = {"externalSystemId"}, +// params = { +// @SchemaPropertyDataSourceParam(name = "externalSystemId", value = "${externalSystemId}") +// } +// ), +// order = 3 +// ) +// private String viewId; +// +// +// @SchemaProperty( +// title = "绑定Jenkins任务", +// description = "Jenkins任务", +// required = true, +// dataSource = @SchemaPropertyDataSource( +// type = "api", +// url = "/api/v1/jenkins-job/list", +// valueField = "id", +// labelField = "jobName", +// dependsOn = {"externalSystemId", "viewId"}, +// params = { +// @SchemaPropertyDataSourceParam(name = "externalSystemId", value = "${externalSystemId}"), +// @SchemaPropertyDataSourceParam(name = "viewId", value = "${viewId}") +// } +// ), +// order = 4 +// ) +// private String jobId; +// +//} diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/DeployNodeLocalVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/DeployNodeLocalVariables.java index 6550f68c..5dcbefd2 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/DeployNodeLocalVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/DeployNodeLocalVariables.java @@ -1,30 +1,27 @@ package com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables; import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; -import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSource; -import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSourceParam; import lombok.Data; import lombok.EqualsAndHashCode; -@Data @EqualsAndHashCode(callSuper = true) +@Data public class DeployNodeLocalVariables extends BaseNodeLocalVariables { + + @SchemaProperty( + title = "三方Jenkins系统", + description = "三方Jenkins系统", + required = true + ) + private String externalSystemId; + + @SchemaProperty( title = "绑定Jenkins视图", description = "Jenkins视图", required = true, - dataSource = @SchemaPropertyDataSource( - type = "api", - url = "/api/v1/jenkins-view/list", - valueField = "id", - labelField = "viewName", - dependsOn = {"externalSystemId"}, - params = { - @SchemaPropertyDataSourceParam(name = "externalSystemId", value = "${externalSystemId}") - } - ), - order = 2 + order = 3 ) private String viewId; @@ -33,18 +30,7 @@ public class DeployNodeLocalVariables extends BaseNodeLocalVariables { title = "绑定Jenkins任务", description = "Jenkins任务", required = true, - dataSource = @SchemaPropertyDataSource( - type = "api", - url = "/api/v1/jenkins-job/list", - valueField = "id", - labelField = "jobName", - dependsOn = {"externalSystemId", "viewId"}, - params = { - @SchemaPropertyDataSourceParam(name = "externalSystemId", value = "${externalSystemId}"), - @SchemaPropertyDataSourceParam(name = "viewId", value = "${viewId}") - } - ), - order = 3 + order = 4 ) private String jobId; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/GatewayNodeLocalVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/GatewayNodeLocalVariables.java deleted file mode 100644 index 2fa3b5e3..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/GatewayNodeLocalVariables.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables; - -import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode(callSuper = true) -public class GatewayNodeLocalVariables extends BaseNodeLocalVariables { - - -} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/ScriptNodeLocalVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/ScriptNodeLocalVariables.java index fc52edb6..3d45032e 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/ScriptNodeLocalVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/localVariables/ScriptNodeLocalVariables.java @@ -1,6 +1,5 @@ package com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables; -import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; import lombok.Data; import lombok.EqualsAndHashCode; 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 dab3fdcc..a076abf6 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 @@ -80,8 +80,8 @@ public class WorkflowDefinition extends Entity { * 表单配置 */ @Type(JsonType.class) - @Column(name = "form_variables_schema", columnDefinition = "json") - private JsonNode formVariablesSchema; + @Column(name = "local_variables_schema", columnDefinition = "json") + private JsonNode localVariablesSchema; /** * 流程状态 diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/enums/CompareOperatorEnums.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/enums/CompareOperatorEnums.java new file mode 100644 index 00000000..be16b415 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/enums/CompareOperatorEnums.java @@ -0,0 +1,26 @@ +package com.qqchen.deploy.backend.workflow.enums; + +/** + * 比较操作符枚举 + */ +public enum CompareOperatorEnums { + /** + * 等于 + */ + EQUAL, + + /** + * 不等于 + */ + NOT_EQUAL, + + /** + * 在列表中 + */ + IN, + + /** + * 不在列表中 + */ + NOT_IN +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/enums/NodeTypeEnums.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/enums/NodeTypeEnums.java index 11d38344..fa989962 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/enums/NodeTypeEnums.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/enums/NodeTypeEnums.java @@ -1,13 +1,9 @@ package com.qqchen.deploy.backend.workflow.enums; import com.fasterxml.jackson.annotation.JsonValue; -import com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables.DeployNodeFormVariables; -import com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables.ScriptNodeFormVariables; -import com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables.ApprovalNodeFormVariables; import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.DeployNodeLocalVariables; import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.NotificationNodeLocalVariables; import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.ScriptNodeLocalVariables; -import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.ApprovalNodeLocalVariables; import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.DeployNodePanelVariables; import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.EndNodePanelVariables; import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.GatewayNodePanelVariables; @@ -103,8 +99,8 @@ public enum NodeTypeEnums { APPROVAL_NODE( "APPROVAL_NODE", "审批节点", - ApprovalNodeLocalVariables.class, - ApprovalNodePanelVariables.class, + null, + null, NodeUiVariables.class, BpmnNodeTypeEnums.USER_TASK, NodeCategoryEnums.TASK, 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 7e6fd2aa..2b2a1469 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 @@ -402,34 +402,34 @@ CREATE TABLE deploy_repo_branch CREATE TABLE workflow_definition ( -- 主键 - id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', + id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', -- 基础信息 - name VARCHAR(255) NOT NULL COMMENT '流程名称', - `key` VARCHAR(255) NOT NULL COMMENT '流程标识', - category VARCHAR(100) COMMENT '流程分类', - triggers VARCHAR(200) COMMENT '流程分类', - process_definition_id VARCHAR(100) NULL COMMENT '工作流定义ID', - flow_version INT NOT NULL COMMENT '流程版本', - description TEXT COMMENT '流程描述', + name VARCHAR(255) NOT NULL COMMENT '流程名称', + `key` VARCHAR(255) NOT NULL COMMENT '流程标识', + category VARCHAR(100) COMMENT '流程分类', + triggers VARCHAR(200) COMMENT '流程分类', + process_definition_id VARCHAR(100) NULL COMMENT '工作流定义ID', + flow_version INT NOT NULL COMMENT '流程版本', + description TEXT COMMENT '流程描述', -- 流程配置 - bpmn_xml TEXT COMMENT 'BPMN XML内容', - graph JSON COMMENT '流程图数据,包含节点和连线的位置、样式等信息', - form_variables_schema JSON COMMENT '表单配置', - tags JSON COMMENT '流程标签', + bpmn_xml TEXT COMMENT 'BPMN XML内容', + graph JSON COMMENT '流程图数据,包含节点和连线的位置、样式等信息', + local_variables_schema JSON COMMENT '节点变量Schema', + tags JSON COMMENT '流程标签', -- 流程属性 - status VARCHAR(50) NOT NULL COMMENT '流程状态(DRAFT-草稿、PUBLISHED-已发布、DISABLED-已禁用)', - is_executable BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否可执行', - target_namespace VARCHAR(255) DEFAULT 'http://www.flowable.org/test' COMMENT '目标命名空间', + status VARCHAR(50) NOT NULL COMMENT '流程状态(DRAFT-草稿、PUBLISHED-已发布、DISABLED-已禁用)', + is_executable BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否可执行', + target_namespace VARCHAR(255) DEFAULT 'http://www.flowable.org/test' COMMENT '目标命名空间', -- 审计字段 - created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间', - updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '更新时间', - created_by BIGINT COMMENT '创建人', - updated_by BIGINT COMMENT '更新人', - is_deleted BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否删除', + created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间', + updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '更新时间', + created_by BIGINT COMMENT '创建人', + updated_by BIGINT COMMENT '更新人', + is_deleted BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否删除', -- 约束 UNIQUE KEY uk_key_version (`key`, flow_version) diff --git a/backend/src/main/resources/db/migration/V1.0.1__init_data.sql b/backend/src/main/resources/db/migration/V1.0.1__init_data.sql index b2772afb..3f08024c 100644 --- a/backend/src/main/resources/db/migration/V1.0.1__init_data.sql +++ b/backend/src/main/resources/db/migration/V1.0.1__init_data.sql @@ -194,7 +194,7 @@ INSERT INTO workflow_definition ( -- 基础信息 name, `key`, process_definition_id, flow_version, description, category, triggers, -- 流程配置 - graph, form_variables_schema, tags, + graph, local_variables_schema, tags, -- 流程属性 status, is_executable, target_namespace, -- 审计字段