プログラムによりWebroutineの流れをコントロール
後ほど説明するプレゼンテーション層から実行されるWebroutineと同様、CallやTransferのRDMLコマンドを使用してプログラムのコントロール下でWebroutineを実行することも可能です。次のコードを見てみましょう。
ユーザーがブラウザでURLを入力してInitializeWebroutineを実行するとします。ここでDEPTMENTに値が入れられます。
TransferコマンドはコントロールをShowPageWebroutineに移し、このWebroutineがDEPTMENTの値を受け取ります。現在のWebroutineのWebマップ定義に従って、適切なマッピングが移行(trasfer)の一部として行われます。このShowPageWebroutineは実際のところ何も行いませんが、DEPTMENTの値をそのまま出力して終了します。コントロールはその後プレゼンテーション層に送られ、ShowPageのWebページを表示します。
InitializeWebroutineのEndroutineコマンドは、コントロールがShowPageに移るので、絶対に実行されないことに注意してください。ですから、InitializeWebroutineではページは表示されません。
このTransferの使用方法はやや上級の技術ですが、WAM内の1つのWebroutineがどのようにしてプレゼンテーション層の表示を担当するかを示したものです。この技術を使用し、他のWebroutineも単体でアプリケーション・ロジックを実行するためだけに使用することができます。これらすべてで最後に行われることは、ShowPageWebroutineにコントロールを移すことです。
この技術によりアプリケーションが簡素化されることが分かると思います。これは、アプリケーションが複数のWAMで構成されており、各WAMはWebページを表示するためにたった1つのWebroutineを使用しているということです。このサポートをより強化するため、TransferコマンドはWAM間の移行もサポートしています。
CallコマンドはWebroutineを実行するという意味で、Transferコマンドと似ています。違いは、コントロールが移らないということです。WebroutineはEndroutineコマンドまですべて実行され、その後コントロールが実行したWebroutineに戻ってきます。呼び出されたWebroutineのWebページは表示されないことに注意してください。