sign.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package approve_former
  2. const signTemplate = `
  3. [[- $name := .name -]]
  4. [[- $upperNodeNames := .upper_node_names -]]
  5. - name: [[ $name ]]
  6. template: approval
  7. [[- if $upperNodeNames ]]
  8. [[- if eq (len $upperNodeNames) 1 ]]
  9. depends: "[[ index $upperNodeNames 0 ]].Succeeded"
  10. when: "{{ tasks.[[- index $upperNodeNames 0 -]].outputs.parameters.approve }} == 通过"
  11. [[- else -]]
  12. depends: "
  13. [[- range $index, $upper_node_name := $upperNodeNames -]]
  14. [[- if eq $index 0 -]]
  15. [[ $upper_node_name ]].Succeeded
  16. [[- else ]]
  17. && [[ $upper_node_name ]].Succeeded
  18. [[- end -]]
  19. [[- end -]]
  20. "
  21. when: "
  22. [[- range $index, $upper_node_name := $upperNodeNames -]]
  23. [[- if eq $index 0 -]]
  24. {{ tasks.[[ $upper_node_name ]].outputs.parameters.approve }} == 通过
  25. [[- else -]]
  26. && {{ tasks.[[ $upper_node_name ]].outputs.parameters.approve }} == 通过
  27. [[- end -]]
  28. [[- end -]]
  29. "
  30. [[- end -]]
  31. [[- end -]]
  32. `
  33. type Sign struct {
  34. Name string
  35. }
  36. func NewSign(name string) *Sign {
  37. return &Sign{
  38. Name: name,
  39. }
  40. }
  41. func (sign *Sign) GetName() string {
  42. return sign.Name
  43. }
  44. func (sign *Sign) GetChildNodes() []Node {
  45. return make([]Node, 0)
  46. }
  47. func (sign *Sign) Render(upperNodes ...Node) (string, error) {
  48. upperNodeNames := make([]string, 0)
  49. for _, upperNode := range upperNodes {
  50. upperNodeNames = append(upperNodeNames, upperNode.GetName())
  51. }
  52. return render("sign", signTemplate, map[string]any{
  53. "name": sign.Name,
  54. "upper_node_names": upperNodeNames,
  55. })
  56. }