Ok, I have been using Seam for years now.
On a typical days programming I have to re-learn (aha.. there is a reason and I figure it out) and guess (this doesn't make sense but works) my way through the day.
For example; today...
It seems I can have
@Out(required=true) private Mode mode;
@In(required=false) @Out(required=true) private User user;
but not both.
In the first step of a business process
I set the mode and user
this.mode = Mode.CREATE; this.user = new User();
The first page is displayed which fills in the user fields...
When I click a button, then my jPDL goes for a decision step which actions a method then inside this method...
IF I have
then using the debugger I can see Mode set correctly but User is null (till the next step when it magically appears back on the screen again!)
if I use
Then I can see my User but mode is now null.
If I use neither of the above then mode is null.
Even if I don't use
Then by hitting the home button I can see the conversation (Is this correct as does the PDL create me a conversation for free?).
This is just typical of a days using Seam.
Sometimes it does not make sense.
Is jPDL conversational?.. do I add the annotation or not?
Adding stateful makes Mode work.. but why? its not a seam component (just an enumeration in an interface) perhaps this is something to do with it.
But why does using stateful now mean my seam name entity appears as null???
On another note...
What is even more infuriating is that now when I make a change to a .xhtml and refresh the page then what was instant is now not. I have to wait a random amount of time for the change to appear... something has brokem the hot-synch capability of MyEclipse (probably something to do with trying to get hot-deploy working with the Ant/Maven people). This is really annoying as I have to wonder if the cahnge has taken effect yet or not often I have to add a piece of text to the page to know when Seam has filtered the change through... Appauling state of affairs and really slowing me down.. at this rate progress will be so slow I might as well be using Ant!
To be honest; it used to be a lot easier in the early days of seam.
However if I compare this to what I see in the industry then I still would prefer to use Seam.
I have seen companies put in the most awful hack imaginable to get software out of the door. I have seen (a few times) Spring/Hibernate projects flounder on LIEs until they simply put Lazy-false and fetch everything every time everywhere in desperation (so don't think Spring/Hibernate projects work that well or are scalable)
I think the lack of support from the Seam guys is not becoming a real issue and would make me think twice about recommending Seam.
I still think that Seam is the right choice.
I wish someone would write a Seam for Idiots (Users!) book using JSF, PDL, BPM, EJB3, JPA (Seam Managed Transactions) on JBoss only (remove the clutter of all the options!).
I also don't really believe or use SeamGen other than a marketing tool. I believe you must write your code to understand it better (at least initially).
Err.. end rant!