In switching from Bolt to FC/NC, a couple of things I’ve missed are a) multiple start states and b) using graphs as transitions (instead of just the previous state’s On Finish or Conditional Tasks). I’d like to have a second Start state always running that calculates distances in an FC graph without having to put it inside every state. With only a single Start state, I’d have the duplicate the distance graph in every state or do the check from Any State, but I can’t use an FC graph as a transition. Both of these options are possible in Bolt and it would be really convenient if NC/FC could support them.
Regarding “multiple start states”, please take a look at the “Parallel” FSM node. It is basically a node that runs in parallel (simultaneously) along the “normal” state machine flow. You can also have multiple “Parallel” nodes if you so require. Have you checked the “Parallel” node out and if so does it (or does it not) work for you?
As far as using graphs for transitions this is something that is not possible at least right now, but it is something that I have been thinking about. However, usually state transitions are generally “simple” checks and hence why I think a condition task would be simple to use there. If using a graph for transition checks become possible, please note that it would also come with an overhead for deserializing and loading that graph, which for a usually simple “check” it might not be worth it (but it’s still something I am thinking about implementing).
Thanks for the prompt reply! I have seen the parallel states, but unfortunately I don’t think they can use flowcanvas graphs? I’m doing as much as I can with flowcanvas graphs (using the bridge), and I’d need a parallel flowcanvas graph, can this be done?
It would be great to use a flowgraph as a transition, then I could use something like this for the transition, that performs a flow of one-off events, then flows into an empty state:
Here, I set a var at the end of the trigger flow and used a conditional task to “kill” the FSM to an empty action. The better way I’m doing it is like this:
Checking for the trigger as a conditional task and doing the one-off instead the dead states On Enable:
It would be handy if a flowgraph could be used for the transitions, then I could just set an onFinish inside it and change state, and it would be really easy for for Bolt users to switch over to.
Indeed; right now there is only a ‘Parallel FSM’ node for FSM graphs. I can probably create a similar node -> ‘Parallel FlowScript’ which will be possible to add on an FSM so that a flowscript graph can run in parallel. Please let me know if that would that work for you?
As for the ability to use flowscripts for transitions (or basically in place where tasks can be assigned altogether), this is something I will definitely look into 🙂
A parallel flowscript node would be really useful, thanks! I’m trying to do as much of my work using FC flowgraphs as possible, so that would make it a lot easier to work this way. Using flowscripts for transitions/tasks would be very helpful too, especially for Bolt migrates! Thanks again!
Just a quick bump to check if graphs as transitions was still being considered? Although I agree, there would be an overhead and conditional checks are simple enough, it might be nice to be able to just use a graph to set exactly what is needed for the transition (like bolt does) rather than having to use intermediate values or bools for the conditional checks.
It is being considered, but to be completely honest it is not in the highest of priority among the rest of the things I have noted down for the next few version releases, but it is still something I will take a look at once other things are implemented/fixed first. 🙂