ここでは、HelloApcoordinatorの動作概要を説明します。
まずは、初期起動時の動作です。
初期起動時の動作の概念図を下図に示します。下図のように初期起動は9つのフェーズに分かれています。
次に上記の図より、具体的な動きを追っていきます。図中の番号と、その動作を下記の表に示します。
リクエストの送信
まず、ブラウザから制御ページにリクエストが送信されます。
uji:dispatchタグの起動
制御ページに記述されてあるuji:dispatchタグから、Apcoordinatorが起動します。
コマンドマップから初期起動用のメソッドを検索
コマンドマップ内から初期起動用のメソッドを検索します。
初期起動では、下記の行が検索されます。
;="クラス名.メソッド名"
HelloApcoordinatorではhello.HelloHandlerクラスのstartup()メソッドが呼ばれます。
データBeanを領域にセット
HelloHandlerクラスのstartup()メソッド内でDispatchContextクラスのsetResponseBean()メソッドが呼ばれ、データBeanに領域名がセットされます。
そのとき、HelloApcoordinatorではデータBeanに表示モードを設定しています。
これは、複数の入出力ページに1つのデータBeanが対応している場合に用います。
入出力ページに対応した表示モードをデータBeanに設定します。ここではinputが設定されています。
これで、uji:dispatchタグの動作は終了です。
uji:includeタグの起動
次に、制御ページに記述されているuji:includeタグが呼ばれ、Apcoordinatorが起動します。
領域名からデータBean名を検索
uji:includeタグのpaneアトリビュートに記述されている領域名からデータBeanを検索します。
ページマップから入出力ページを検索
検索されたデータBeanをもとに、ページマップから対応する入出力ページを検索します。
入出力ページをuji:includeタグにセット
入出力ページがuji:includeタグのある場所にセットされます。
レスポンスの送信
最後に生成された表示用データをブラウザに送信します。
以上の9つのフェーズを経て、レスポンスが送信されます。ただし、5~8はuji:includeタグの数だけ繰り返されます。
次に、ブラウザからデータが送られて来る場合を考えます。この場合は、下図のように10のフェーズに分かれます。
先ほどと同様に、上記の図より、具体的な動きを追っていきます。図中の番号と、その動作を下記の表に示します。
初期起動時と異なるのは、リクエスト受信時にデータBeanにデータがセットされ、ビジネスクラスに渡されるところです。
リクエストの送信
まず、ブラウザから制御ページにリクエストが送信されます。
uji:dispatchタグの起動
制御ページに記述されてあるuji:dispatchタグから、Apcoordinatorが起動します。
データBeanにデータをセット
ブラウザから送信されたデータをデータBeanにセットします。
コマンドマップからメソッドを検索
コマンドマップ内からメソッドを検索します。
ここでは、HelloApcoordinatorの名前入力画面からリクエストが送信されたとします。この場合、ブラウザからokボタンが押され、リクエスト内にHelloBodyBeanクラスのデータが格納されています。
よって、下記の記述からHelloHandlerクラスのok()メソッドが呼ばれます。
hello.HelloBodyBean;ok=hello.HelloHandler.ok
このとき、3のデータBeanがok()メソッドに渡されます。
データBeanを領域にセット
HelloHandlerクラスのok()メソッド内でDispatchContextクラスのsetResponseBean()メソッドが呼ばれ、データBeanに領域名がセットされます。
そのとき、HelloApcoordinatorではデータBeanに表示モードを設定しています。
これは、複数の入出力ページに1つのデータBeanが対応している場合に用います。
入出力ページに対応した表示モードをデータBeanに設定します。ここではoutputが設定されています。
これで、uji:dispatchタグの動作は終了です。
uji:includeタグの起動
次に、制御ページに記述されているuji:includeタグが呼ばれ、Apcoordinatorが起動します。
領域名からデータBean名を検索
uji:includeタグのpaneアトリビュートに記述されている領域名からデータBeanを検索します。
ページマップから入出力ページを検索
検索されたデータBeanをもとに、ページマップから対応する入出力ページを検索します。
入出力ページをuji:includeタグにセット
入出力ページがuji:includeタグのある場所にセットされます。
レスポンスの送信
最後に生成された表示用データをブラウザに送信します。