diff --git a/automation/server/internal/module/common/enum/workflow/publish.go b/automation/server/internal/module/common/enum/workflow/publish.go new file mode 100644 index 0000000000000000000000000000000000000000..ca3d0b2d0f83b0a97336da1eea40e5aa2550c8fa --- /dev/null +++ b/automation/server/internal/module/common/enum/workflow/publish.go @@ -0,0 +1,67 @@ +package workflow + +import ( + "database/sql/driver" + "encoding/json" + "fmt" + + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum" +) + +type PublishStatus int + +const ( + Develop PublishStatus = 1 + Published PublishStatus = 2 +) + +var PublishStatusMap = enum.EnumMap{ + int(Develop): "开发中", + int(Published): "已发布", +} + +func (p PublishStatus) String() string { + return PublishStatusMap.String(int(p)) +} +func ParsePublishStatus(s string) PublishStatus { + for k, v := range PublishStatusMap { + if v == s { + return PublishStatus(k) + } + } + return 0 +} + +func (p PublishStatus) MarshalJSON() ([]byte, error) { + return json.Marshal(PublishStatusMap[int(p)]) +} + +func (p *PublishStatus) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + for k, v := range PublishStatusMap { + if v == s { + *p = PublishStatus(k) + return nil + } + } + return fmt.Errorf("invalid PublishStatus: '%s', allowed: %v", s, PublishStatusMap) +} + +func (p PublishStatus) Value() (driver.Value, error) { + return int64(p), nil +} + +func (p *PublishStatus) Scan(value interface{}) error { + if value == nil { + *p = 0 + return nil + } + if v, ok := value.(int64); ok { + *p = PublishStatus(int(v)) + return nil + } + return nil +} diff --git a/automation/server/internal/module/common/enum/workflow/step.go b/automation/server/internal/module/common/enum/workflow/step.go new file mode 100644 index 0000000000000000000000000000000000000000..b0d52f1aec5e58921482e20554b2617ee306d3c1 --- /dev/null +++ b/automation/server/internal/module/common/enum/workflow/step.go @@ -0,0 +1,69 @@ +package workflow + +import ( + "database/sql/driver" + "encoding/json" + "fmt" + + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum" +) + +type StepType int + +const ( + ExecTask StepType = 1 + ManualReview StepType = 2 + ProcessControl StepType = 3 +) + +var StepTypeMap = enum.EnumMap{ + int(ExecTask): "任务", + int(ManualReview): "人工处理", + int(ProcessControl): "流程控制", +} + +func (p StepType) String() string { + return StepTypeMap.String(int(p)) +} +func ParseStepType(s string) StepType { + for k, v := range StepTypeMap { + if v == s { + return StepType(k) + } + } + return 0 +} + +func (p StepType) MarshalJSON() ([]byte, error) { + return json.Marshal(StepTypeMap[int(p)]) +} + +func (p *StepType) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + for k, v := range StepTypeMap { + if v == s { + *p = StepType(k) + return nil + } + } + return fmt.Errorf("invalid StepType: '%s', allowed: %v", s, StepTypeMap) +} + +func (p StepType) Value() (driver.Value, error) { + return int64(p), nil +} + +func (p *StepType) Scan(value interface{}) error { + if value == nil { + *p = 0 + return nil + } + if v, ok := value.(int64); ok { + *p = StepType(int(v)) + return nil + } + return nil +} diff --git a/automation/server/internal/module/job_workflow/model/template.go b/automation/server/internal/module/job_workflow/model/template.go index 8018a497772a097058227bb779ace12e90bb37bd..cebff8ad9ccac99ca616a8b79dc2447aa5654e3f 100644 --- a/automation/server/internal/module/job_workflow/model/template.go +++ b/automation/server/internal/module/job_workflow/model/template.go @@ -1,17 +1,21 @@ package model -import "encoding/json" +import ( + "encoding/json" + + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum/workflow" +) 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:场景标签"` - 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:'最后修改时间'"` + 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 workflow.PublishStatus `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 TaskTemplateParams struct { @@ -33,13 +37,13 @@ type TaskTemplateOutputParams struct { } 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:编排步骤类型(任务、人工处理、控制)"` - Name string `json:"name" gorm:"comment:步骤名称"` - StepNum int `json:"step_num" gorm:"comment:作业编排步骤Id"` - PreviousStepNum int `json:"previous_step_num" gorm:"comment:作业编排上一步骤Id"` - NextStepNum int `json:"next_step_num" gorm:"comment:作业编排下一步骤Id"` + ID int `json:"id" gorm:"primaryKey;autoIncrement"` + TemplateId int `json:"template_id" gorm:"comment:作业编排Id"` + StepType workflow.StepType `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"` + NextStepNum int `json:"next_step_num" gorm:"comment:作业编排下一步骤Id"` } type TaskTemplateStepScript struct {