I have been using SWF as a complete replacement for JSF navigation-rules, even in the case of our simpler pages and menus. I was happy to be able to take it to this extreme as it would be a bit too confusing for my team to have navigation rules defined in multiple places.
I find that even with the simpler pages in JSF, you oftentimes need something to manage the state of your model across multiple requests to the page...there are many solutions for this problem in the JSF community (Tomahawk's saveState tag, Shale's dialog framework, etc.), but I personally find SWF's multiple scopes to be the most robust and elegant solution. Even for the simpler pages, we typically use SWF's flash scope to store model state. This did take some extra work, as we had to write a custom ELResolver to be able to access more than just flow scope via EL expressions (something I will likely contribute back to the community), but once that was done it works quite seamlessly. For handling the application menu, I have found global transitions to work well.
As a side note, combining this use of SWF for all navigation along with using Shale's annotation-based configuration mechanism for the managed beans, we end up with almost nothing in our faces-config file.
-Jeremy
|