package approve_former const signTemplate = ` [[- $name := .name -]] [[- $upperNodeNames := .upper_node_names -]] - name: [[ $name ]] template: approval [[- if $upperNodeNames ]] [[- if eq (len $upperNodeNames) 1 ]] depends: "[[ index $upperNodeNames 0 ]].Succeeded" when: "{{ tasks.[[- index $upperNodeNames 0 -]].outputs.parameters.approve }} == 通过" [[- else -]] depends: " [[- range $index, $upper_node_name := $upperNodeNames -]] [[- if eq $index 0 -]] [[ $upper_node_name ]].Succeeded [[- else ]] && [[ $upper_node_name ]].Succeeded [[- end -]] [[- end -]] " when: " [[- range $index, $upper_node_name := $upperNodeNames -]] [[- if eq $index 0 -]] {{ tasks.[[ $upper_node_name ]].outputs.parameters.approve }} == 通过 [[- else -]] && {{ tasks.[[ $upper_node_name ]].outputs.parameters.approve }} == 通过 [[- end -]] [[- end -]] " [[- end -]] [[- end -]] ` type Sign struct { Name string } func NewSign(name string) *Sign { return &Sign{ Name: name, } } func (sign *Sign) GetName() string { return sign.Name } func (sign *Sign) GetChildNodes() []Node { return make([]Node, 0) } func (sign *Sign) Render(upperNodes ...Node) (string, error) { upperNodeNames := make([]string, 0) for _, upperNode := range upperNodes { upperNodeNames = append(upperNodeNames, upperNode.GetName()) } return render("sign", signTemplate, map[string]any{ "name": sign.Name, "upper_node_names": upperNodeNames, }) }