1.5.2. 動作内容
ゲームは
numberGuess.jspx から始まります。 ページが初めて表示されると、 pages.xml 設定は対話をアクティブにし numberGuess ページフローをその対話と関連付けます。 ページフローは start-page タグから開始されるので (待機 状態) numberGuess.xhtml が表示されます。
ビューは
numberGuess コンポーネントを参照し、 これにより新しいインスタンスが生成され対話に保管されます。 @Create メソッドが呼び出され、 ゲームの状態が初期化されます。 ビューは h:form を表示し、ユーザーは #{numberGuess.currentGuess} を編集できます。
「Guess」ボタンは
guess アクションを引き起こします。 Seam はアクションを処理するためにページフローを参照し、 このページフローが evaluateGuess を呼び出し (推測した数字と numberGuess コンポーネント内の最小と最大の候補を更新)、 evaluateGuess 状態に遷移します。
evaluateGuess 状態は #{numberGuess.correctGuess} の値をチェックし、 win または evaluatingRemainingGuesses 状態のいずれかに遷移します。 数字が間違っていたとすると、ページフローは evaluatingRemainingGuesses に遷移します。 これは決定する状態でもあり、 ユーザーがまだ数字当てを続行できるか否かを決定する #{numberGuess.lastGuess} 状態をテストします。 続行できる場合は (lastGuess が false) 最初の displayGuess 状態に戻ります。 これはページの状態となるため、関連ページの /numberGuess.jspx が表示されます。 また、 このページにはリダイレクトエレメントが含まれるため、 Seam はリダイレクトをユーザーのブラウザに送信し、 それがプロセスを再び開始します。
以降の要求により
win または lose の遷移のいずれかが呼び出されると、 ユーザーは /win.jspx または /lose.jspx にそれぞれ移動されます。 いずれの状態も Seam が対話を終了、 ゲームとページフロー状態の保持を中止、 ユーザーを最終ページへとリダイレクトすることを指定します。
また、 数字当てゲームのサンプルには と のボタンもあります。 両方の動作のページフロー状態の追跡は比較的簡単ですので、 ここでは説明しません。
cheat トランザクションに注目してください。これはサブプロセスを読み込みその特定の流れを処理します。 このアプリケーションではこのプロセスは余分ですが、 理解し易くするために複雑なページフローを細分化してより簡単な構造にする方法を示しています。