I assume you would have conditions for each workflow which are then pattern matched to user behaviour to see if that workflow is relevant.
You still have a globally defined happy path of coordination but your overarching application logic isn't spread everywhere but contained in one place.
The preconditions for the logout would trigger a different workflow.
I am the author of additive-gui, which is based around the idea that you provide all the rules of the GUI and the computer works it out - what applies when. Additive GUIs loosely models dataflow between components and layout.
https://github.com/samsquire/additive-guis
It's not ready for anything, it's just a proof of concept. But it doesn't really implement workflows yet.
I would rather maintain a codebase that uses this pattern of user workflows, similar to state management than sprinkled logic everywhere.
Think of workflow engines as a runtime, not a hardcoded sequence of steps that can be activated or deactivated based on events, like a state machine.