Faces Flows are a very useful feature in JSF 2.2, because they allow developers and designers to put together components that achieve customer (or user centric) goals. They also allow an architect to define groups of page views and controllers into specific business defined components. If the designer is careful, they can be linked together efficiently and decoupled from dependencies in meaningful strategies. The following points should be kept in mind while using Faces Flows:
Start small: Design a Faces Flow that achieves one responsibility and one goal. Don't try to build the entire process in a single flow.
Pass entities and meaning types: Implement Faces Flows that accept data entities and transfer objects.
Compose flows together: Group together common flows that achieve a similar goal. In a checkout process, you may have a flow dedicated to the shipping address and a flow responsible for payments. These two flows can be invoked by a master flow that handles the entire...