此内容没有您所选择的语言版本。
9.2.3. Page nodes and transitions
Each
<page>
node represents a state where the system is waiting for user input:
The
view-id
is the JSF view ID. The <redirect/>
element has the same effect as <redirect/>
in a JSF navigation rule — that is, a post-then-redirect behavior, to overcome problems with the browser's refresh button. (Note that Seam propagates conversation contexts across these browser redirects, so Seam does not require a Ruby on Rails-style flash construct.)
The transition name is the name of a JSF outcome triggered by clicking a command button or command link in
numberGuess.jsp
.
<h:commandButton type="submit" value="Guess" action="guess"/>
<h:commandButton type="submit" value="Guess" action="guess"/>
When clicking this button triggers the transition, jBPM activates the transition action by calling the
guess()
method of the numberGuess
component. The syntax used for specifying actions in the jPDL is a familiar JSF EL expression, and the transition handler is a method of a Seam component in the current Seam contexts. Thus, we have the same event model for jBPM events as we have for JSF events. This is one of the guiding principles of Seam.
In the case of a null outcome (for example, a command button with no
action
defined), Seam signals the transition with no name (if one exists), or simply redisplay the page if all transitions are named. Therefore we could simplify this button and our pageflow like so:
<h:commandButton type="submit" value="Guess"/>
<h:commandButton type="submit" value="Guess"/>
This would fire the following un-named transition:
The button could also call an action method, in which case the action outcome determines the transition to be made:
<h:commandButton type="submit" value="Guess" action="#{numberGuess.guess}"/>
<h:commandButton type="submit" value="Guess"
action="#{numberGuess.guess}"/>
<page name="displayGuess" view-id="/numberGuess.jsp"> <transition name="correctGuess" to="win"/> <transition name="incorrectGuess" to="evaluateGuess"/> </page>
<page name="displayGuess" view-id="/numberGuess.jsp">
<transition name="correctGuess" to="win"/>
<transition name="incorrectGuess" to="evaluateGuess"/>
</page>
However, this style is considered inferior, since it shifts responsibility for flow control out of the pageflow definition and back into other components. It is much better to centralize this concern in the pageflow itself.