package approve_former const flowTemplate = `apiVersion: argoproj.io/v1alpha1 kind: WorkflowTemplate metadata: name: {{ .name }} spec: entrypoint: approve-flow templates: - name: approve-flow dag: tasks: {{- if .nodeContent }} {{ .nodeContent }} {{- else }} - name: node template: approval {{- end }} - name: approval suspend: {} inputs: parameters: - name: approve default: '通过' enum: - '通过' - '拒绝' outputs: parameters: - name: approve valueFrom: supplied: {} ` type Flow struct { Name string Nodes []Node } func NewFlow(name string, nodes ...Node) *Flow { return &Flow{ Name: name, Nodes: nodes, } } func (flow *Flow) Render() (string, error) { nodeContents := make([]string, 0) for _, node := range flow.Nodes { nodeContent, err := node.Render() if err != nil { return "", err } nodeContents = append(nodeContents, nodeContent) } return render("flow", flowTemplate, map[string]any{ "name": flow.Name, "nodes": nodeContents, }) }