windmill-labs / windmill

Open-source developer platform to turn scripts into workflows and UIs. Fastest workflow engine (5x vs Airflow). Open-source alternative to Airplane and Retool.

Home Page:https://windmill.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

feature: Visually organize complex flows s.t. less overlaps happen or overlaps are less confusing

wasnertobias opened this issue · comments

When there are a lot of branches and parallelism in a complex flow, it is tough to follow the lines of a branch, as any other elements overlap them. In addition, overlapping lines (crossings) make it hard to follow in a quick look.

Generally, I would love to see it less dense but more structured.

Another idea: If there is a for loop or branch (if), then instead of indenting it as code, it could be visually indented as well, e.g., through shadows (higher z-axis)

One (not most extreme) example:
Screenshot 2024-05-17 at 10 17 57

Some "minimum example":

summary: ""
value:
  modules:
    - id: a
      value:
        type: branchall
        branches:
          - modules:
              - id: d
                value:
                  type: identity
                  flow: false
              - id: e
                value:
                  type: whileloopflow
                  modules:
                    - id: f
                      value:
                        type: identity
                        flow: false
                  skip_failures: false
            skip_failure: false
          - summary: ""
            expr: "false"
            modules:
              - id: b
                value:
                  type: forloopflow
                  modules:
                    - id: c
                      value:
                        type: identity
                        flow: false
                  iterator:
                    type: javascript
                    expr: ""
                  skip_failures: true
                  parallel: false
            skip_failure: false
          - summary: ""
            expr: "false"
            modules:
              - id: g
                value:
                  type: forloopflow
                  modules:
                    - id: i
                      value:
                        type: identity
                        flow: false
                  iterator:
                    type: javascript
                    expr: ""
                  skip_failures: true
                  parallel: false
            skip_failure: false
          - summary: ""
            expr: "false"
            modules: []
            skip_failure: false
        parallel: false
      summary: ""
    - id: h
      value:
        type: branchone
        branches:
          - summary: The default braunch looks like it goes to step n
            expr: "false"
            modules: []
          - summary: ""
            expr: "false"
            modules: []
          - summary: ""
            expr: "false"
            modules:
              - id: j
                value:
                  type: forloopflow
                  modules:
                    - id: l
                      value:
                        type: identity
                        flow: false
                  iterator:
                    type: javascript
                    expr: ""
                  skip_failures: true
                  parallel: false
              - id: m
                value:
                  type: branchall
                  branches:
                    - summary: ""
                      expr: "false"
                      modules:
                        - id: n
                          value:
                            type: identity
                            flow: false
                      skip_failure: false
                    - summary: ""
                      expr: "false"
                      modules: []
                      skip_failure: false
                  parallel: false
                summary: ""
              - id: k
                value:
                  type: identity
                  flow: false
          - summary: ""
            expr: "false"
            modules: []
          - summary: ""
            expr: "false"
            modules: []
          - summary: ""
            expr: "false"
            modules: []
        default: []
      summary: ""
schema:
  $schema: https://json-schema.org/draft/2020-12/schema
  properties: {}
  required: []
  type: object

Hi we did some improvements recently, and we will on work on two special cases we have identified soon.

Screenshot 2024-05-23 at 15 59 42