In the Farley Practical Seam book, in the conversation chapter, there was a section that covers options when starting a conversation.
Specifically, he stated that when using a page link request param (or perhaps s:link), you can begin a conversation by using propagation="begin" which begins the conversations prior to the start of the action method.
When using @Begin, the conversation begins after the action method has finished executing. He also mentioned that the method should return a non-null value IIRC. What if the action method is public void?
I have not read this info anywhere else, is it true? If so, when would you need to use the s:link propagation="begin" instead of @Begin? I've never found the @Begin to be an inappropriate option except when needing to restart a conversation when the user selects a new value in a drop-down, for example, and then I used the Conversation API for more fine-grained control of the conversation mgmt.
This isn't quite right. A temporary conversation exists for the whole request. Begining a conversation simply promotes it to longrunning, so it isn't discarded once the request is complete.