| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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,
- })
- }
|