Enhancements to "Branch" functionality in Action Framework

  • 6
  • Idea
  • Updated 2 years ago
  • Under Consideration
Would like to see the following regarding "Branching"

1) Ability to return to the "main line" of the action sequence when branch formula evaluates to true and the "true actions" have all completed.  This would provide for scenarios like "if (true) then set field to "ABC" but then continue for actions like "save model", etc from the main line.  As it stands, it would take duplicate sequences (one in the main line and one in the branch) to accomplish this. For example, a way to accomplish the following:

if (true) {
    ... stuff....
}
... more stuff....

2) Ability to have separate "true" and "false" paths.  Similar to above, sometimes you might want to evaluate a condition and set a field value to "ABC" or "XYZ" but then continue back in the main line.  if #1 was implemented, you could have two "branch" actions (one for the "ABC" case and one for the "XYZ" case) but having separate paths for true/false makes it much more intuitive as to what i trying to be accomplished.  For example, a way to accomplish the folllowing:

if (true) {
 ... stuff...
} else {
 ... different stuff...
}
... more stuff....


3) Ability to "break" out of a branch.  This is similar to #1 and if implemented, would actually address #1 as well.  Providing a way to go back to the mainline explicitly rather than naturally when the sequence runs out of actions.  For example, a way to accomplish the following:

if (true) {
   ... stuff ....
   if (true) {
     ... break back to main line...
   }
   .. more stuff ...
}

... more main line stuff....


4) Ability to explicitly "stop" processing of the action sequence.  The only way for a sequence to end currently is when it runs out of actions (or encounters an error).  Having an explicit "stop" action would simplifying action sequence definitions.  For example, a way to accomplish the following:

if (true) {
    ... do some stuff...
    if (true) {
        display message
        "stop" processing
   }
   .. do more stuff...
}
... and even more....


All of the above would address the following:

1) Minimizing duplication of actions within a sequence which would decrease maintenance and risk
2) Making the declaration of the page more self-documenting which would decrease maintenance and risk
3) Increasing the feature set and robustness of Skuid
4) Cause it would be super cool :)

Unfortunately, since Branch is now out in the wild, adding the above might break backwards compat.  To that end, adding a "Branch Ex" or "Advanced Branch" or "Branch with Directions" action might make the most sense.  Additionally, if something like a "Goto" action was implemented and it had the options of "parent", "stop processing" it would likely cover most of the above concepts.  And yes, I said "GOTO" lol :)

10 REM Skuid Branch Demo
20 CLS
30 GOTO 50
40 PRINT "Never gonna see this"
50 PRINT "Thanks for humoring me"

Thank you!
Photo of Barry Schnell

Barry Schnell, Champion

  • 18,076 Points 10k badge 2x thumb

Posted 2 years ago

  • 6
Photo of Zach McElrath

Zach McElrath, Employee

  • 49,004 Points 20k badge 2x thumb
Barry, FYI we are planning to enable the "continue main line" behavior you described in (1) in an upcoming update release. No immediate plans to implement simultaneous "If false" branching at this time, primarily due to the complexity of the Action Framework user experience which that would introduce.
Photo of Barry Schnell

Barry Schnell, Champion

  • 18,076 Points 10k badge 2x thumb
Hey Zach -

Thanks for the update, very glad to hear that "continue main line" is in the roadmap.  Taking that concept a step further, would be great to see "continue with parent" and "continue with main line" to account for multiple layers of branching (nesting branches).

Understood regarding complexity of UI on the simultaneous paths.  One idea here would be to have a pop-up editor dialog for configuration, similar to the way the new Formula editor works on the branch.  Food for thought for potential future enhancements.

That all said, if continue parent/main were added and possibly a "stop" (#4 in OP), I think it would go a long way to covering configuration scenarios.

Thanks!