From b2f33c261b44eaa7f38d3858a4148bb54637a305 Mon Sep 17 00:00:00 2001 From: zhanghan Date: Thu, 9 Oct 2025 15:09:34 +0800 Subject: [PATCH] Support orchestration output parameter configuration --- .../module/job_workflow/dao/template.go | 54 ++++++++++++------- .../module/job_workflow/model/template.go | 53 ++++++++++-------- automation/server/internal/service/mysql.go | 3 +- 3 files changed, 69 insertions(+), 41 deletions(-) diff --git a/automation/server/internal/module/job_workflow/dao/template.go b/automation/server/internal/module/job_workflow/dao/template.go index 73064e16..7231868b 100644 --- a/automation/server/internal/module/job_workflow/dao/template.go +++ b/automation/server/internal/module/job_workflow/dao/template.go @@ -14,30 +14,40 @@ func CreateTemplate(dto *model.TaskTemplateDTO) error { return global.App.MySQL.Transaction(func(tx *gorm.DB) error { // 1. 插入模板 template := &model.TaskTemplate{ - Name: dto.Template.Name, - Description: dto.Template.Description, - Tags: dto.Template.Tags, - ModifyUser: dto.Template.ModifyUser, - ModifyTime: time.Now().Format("2006-01-02 15:04:05"), + Name: dto.Template.Name, + Description: dto.Template.Description, + Tags: dto.Template.Tags, + PublishStatus: dto.Template.PublishStatus, + ModifyUser: dto.Template.ModifyUser, + ModifyTime: time.Now().Format("2006-01-02 15:04:05"), } if err := tx.Create(template).Error; err != nil { return err } templateId := template.ID - // 2. 插入变量 - if len(dto.Variables) > 0 { - for i := range dto.Variables { - dto.Variables[i].TemplateId = templateId + // 2. 插入输入参数 + if len(dto.Params) > 0 { + for i := range dto.Params { + dto.Params[i].TemplateId = templateId } - if err := tx.Create(&dto.Variables).Error; err != nil { + if err := tx.Create(&dto.Params).Error; err != nil { + return err + } + } + // 3. 插入输出参数 + if len(dto.OutputParams) > 0 { + for i := range dto.OutputParams { + dto.OutputParams[i].TemplateId = templateId + } + if err := tx.Create(&dto.OutputParams).Error; err != nil { return err } } - // 3. 插入步骤 & 脚本 + // 4. 插入步骤 & 脚本 if len(dto.Steps) > 0 { - // 3.1 按 stepNum 排序,补全链路 + // 4.1 按 stepNum 排序,补全链路 sort.Slice(dto.Steps, func(i, j int) bool { return dto.Steps[i].StepNum < dto.Steps[j].StepNum }) @@ -56,10 +66,10 @@ func CreateTemplate(dto *model.TaskTemplateDTO) error { return err } - // 3.2 设置模板的首尾步骤 + // 4.2 设置模板的首尾步骤 template.FirstStepNum = dto.Steps[0].StepNum template.LastStepNum = dto.Steps[len(dto.Steps)-1].StepNum - // 3.4 回写模板首尾步骤 + // 4.3 回写模板首尾步骤 if err := tx.Model(&model.TaskTemplate{}). Where("id = ?", templateId). Updates(map[string]interface{}{ @@ -104,8 +114,12 @@ func GetTemplateById(id string) (interface{}, error) { return nil, err } // 2. 查询变量 - var variables []model.TaskTemplateVariable - if err := global.App.MySQL.Model(&model.TaskTemplateVariable{}).Where("template_id = ?", id).Find(&variables).Error; err != nil { + var params []model.TaskTemplateParams + if err := global.App.MySQL.Model(&model.TaskTemplateParams{}).Where("template_id = ?", id).Find(¶ms).Error; err != nil { + return nil, err + } + var output_params []model.TaskTemplateOutputParams + if err := global.App.MySQL.Model(&model.TaskTemplateOutputParams{}).Where("template_id = ?", id).Find(&output_params).Error; err != nil { return nil, err } // 3. 查询步骤 @@ -118,7 +132,11 @@ func GetTemplateById(id string) (interface{}, error) { data["name"] = template.Name data["description"] = template.Description data["tags"] = template.Tags - data["variableList"] = variables - data["stepList"] = steps + data["publish_status"] = template.PublishStatus + data["modify_user"] = template.ModifyUser + data["modify_time"] = template.ModifyTime + data["params"] = params + data["output_params"] = output_params + data["steps"] = steps return data, nil } diff --git a/automation/server/internal/module/job_workflow/model/template.go b/automation/server/internal/module/job_workflow/model/template.go index 7eb1d0c8..8018a497 100644 --- a/automation/server/internal/module/job_workflow/model/template.go +++ b/automation/server/internal/module/job_workflow/model/template.go @@ -3,31 +3,39 @@ package model import "encoding/json" type TaskTemplate struct { - ID int `json:"id" gorm:"primaryKey;autoIncrement;comment:作业编排Id"` - Name string `json:"name" gorm:"type:varchar(255);comment:作业编排名称"` - Description string `json:"description" gorm:"type:varchar(255);comment:作业描述"` - Tags string `json:"tags" gorm:"comment:场景标签"` - FirstStepNum int `json:"first_step_num"` - LastStepNum int `json:"last_step_num"` - ModifyUser string `json:"modify_user" gorm:"type:varchar(100);not null;comment:'最后修改者'"` - ModifyTime string `json:"modify_time" gorm:"comment:'最后修改时间'"` + ID int `json:"id" gorm:"primaryKey;autoIncrement;comment:作业编排Id"` + Name string `json:"name" gorm:"type:varchar(255);comment:作业编排名称"` + Description string `json:"description" gorm:"type:varchar(255);comment:作业描述"` + Tags string `json:"tags" gorm:"comment:场景标签"` + PublishStatus string `json:"publish_status" gorm:"comment:发布状态"` + FirstStepNum int `json:"first_step_num"` + LastStepNum int `json:"last_step_num"` + ModifyUser string `json:"modify_user" gorm:"type:varchar(100);not null;comment:'最后修改者'"` + ModifyTime string `json:"modify_time" gorm:"comment:'最后修改时间'"` } -type TaskTemplateVariable struct { - ID int `json:"id" gorm:"primaryKey;autoIncrement"` - TemplateId int `json:"template_id" gorm:"comment:作业编排Id"` - Name string `json:"name" gorm:"type:varchar(255);comment:变量名称"` - Type string `json:"type" gorm:"comment:变量类型(字符串、命名空间、数组等)"` - DefaultVaue json.RawMessage `json:"default_value" gorm:"comment:变量默认值"` - Description string `json:"description" gorm:"comment:变量描述"` - IsChangeable bool `json:"is_changeable" gorm:"comment:赋值可变"` - IsRequired bool `json:"is_required" gorm:"comment:是否必需"` +type TaskTemplateParams struct { + ID int `json:"id" gorm:"primaryKey;autoIncrement"` + TemplateId int `json:"template_id" gorm:"comment:作业编排Id"` + Name string `json:"name" gorm:"type:varchar(255);comment:输入参数名称"` + Type string `json:"type" gorm:"comment:参数类型(string、number、host、json等)"` + DefaultVaue json.RawMessage `json:"default_value" gorm:"comment:参数默认值"` + Description string `json:"description" gorm:"comment:输入参数描述"` + IsRequired bool `json:"is_required" gorm:"comment:是否必需"` +} + +type TaskTemplateOutputParams struct { + ID int `json:"id" gorm:"primaryKey;autoIncrement"` + TemplateId int `json:"template_id" gorm:"comment:作业编排Id"` + Name string `json:"name" gorm:"type:varchar(255);comment:输出参数名称"` + Type string `json:"type" gorm:"comment:参数类型string"` + Description string `json:"description" gorm:"comment:输出参数描述"` } type TaskTemplateStep struct { ID int `json:"id" gorm:"primaryKey;autoIncrement"` TemplateId int `json:"template_id" gorm:"comment:作业编排Id"` - StepType string `json:"step_type" gorm:"comment:编排步骤类型(开始、脚本、人工干预、结束等)"` + StepType string `json:"step_type" gorm:"comment:编排步骤类型(任务、人工处理、控制)"` Name string `json:"name" gorm:"comment:步骤名称"` StepNum int `json:"step_num" gorm:"comment:作业编排步骤Id"` PreviousStepNum int `json:"previous_step_num" gorm:"comment:作业编排上一步骤Id"` @@ -48,8 +56,9 @@ type TaskTemplateStepScript struct { } type TaskTemplateDTO struct { - Template TaskTemplate `json:"template"` - Variables []TaskTemplateVariable `json:"variables"` - Steps []TaskTemplateStep `json:"steps"` - Scripts []TaskTemplateStepScript `json:"scripts"` + Template TaskTemplate `json:"template"` + Params []TaskTemplateParams `json:"params"` + OutputParams []TaskTemplateOutputParams `json:"output_params"` + Steps []TaskTemplateStep `json:"steps"` + Scripts []TaskTemplateStepScript `json:"scripts"` } diff --git a/automation/server/internal/service/mysql.go b/automation/server/internal/service/mysql.go index 7d2cac8c..5fa5c979 100644 --- a/automation/server/internal/service/mysql.go +++ b/automation/server/internal/service/mysql.go @@ -47,7 +47,8 @@ func (m *MySQLService) Init(ctx *AppContext) error { db.AutoMigrate(&scriptLibrary.Script{}) db.AutoMigrate(&scriptLibrary.ScriptVersion{}) db.AutoMigrate(&jobworkflow.TaskTemplate{}) - db.AutoMigrate(&jobworkflow.TaskTemplateVariable{}) + db.AutoMigrate(&jobworkflow.TaskTemplateParams{}) + db.AutoMigrate(&jobworkflow.TaskTemplateOutputParams{}) db.AutoMigrate(&jobworkflow.TaskTemplateStep{}) db.AutoMigrate(&jobworkflow.TaskTemplateStepScript{}) -- Gitee