WAMフィルターおよびコマンド・ハンドラーの構造
WAMにのみ適用
WAMフィルターおよびコマンド・ハンドラー:
· LANSA 10.5(以降)をインストールしたシステムでのみ使用可能です。
· 通常表示されます。
· レイアウト・ウェブレットとしてvlf_layoutまたはvlf_layout_v2を使用します。vlf_layout_v2ウェブレットを使用することで、jQuery UIデザイン・テーマのウェブレット使用が可能になります。
· WAMエディターを使用して、フォームに色を塗ることが可能です。
· サーバー・システムで実行します。
· Webブラウザー・ベースなので状態を保持できません。
WAM関数の構造は、以下のようになります:
WAMフィルターやコマンド・ハンドラーの構造について、5つの重要な点を理解しておいてください:
すべてのWAMフィルターおよびコマンド・ハンドラーは#PRIM_WAMというベース・クラスを拡張(つまり、継承)します。ベース・クラスは一組の定義済みの動作をWAMに提供します。 | |
Webページとして送信するものを定義するWebマップが常に存在します。この例では、プッシュ・ボタン#UB_SAVEおよび#UB_SEARCHが送信されます。 | |
定義されるWEBROUTINEは必ず1つだけであり、ここでは2つの重要なことを行います: ・フィルターやコマンド・ハンドラーが扱えるすべてのイベントを登録し、イベント処理ルーチンに関連付けます。この例では、#UB_SAVEおよび#UB_SEARCHボタンのクリック・イベントを登録し、イベント・ルーチンに関連付けます(青および茶の矢印は関連を表す)。 ・フレームワークマネージャに、フレームワークが初期化および実行できることを示します。 uHandleEventルーチンに追加する必要があるコードは、avRegisterEventメソッド呼び出しだけです。その他すべてのロジックは、uInitialize、uExecute、uTerminateまたはuWAMEvent_Nイベント処理ルーチンに適宜追加します。 | |
フィルターやコマンド・ハンドラーはオプションuInitialize、uTerminate、uExecuteイベント・ハンドラーを持つことができます。WAMルーチンは実行のたびに作成、破棄されるため、WAMが呼び出されるたびにuInitializeおよびuTerminateルーチンが実行されます。したがって、WAMとクライアントの各対話処理の開始または終了時に実行するコードを入れておくだけで済みます。 uExecuteは、WAMの実行時(つまり、フィルターの開始時またはコマンド・ハンドラーの実行時)にのみ実行されます。アクティブなWAM(例えば、ボタンのクリック)の内部でイベントが発生すると、uExecuteのシグナルは通知されず、登録済みのuWAMEvent_Nイベントのシグナルのみが通知されます。 | |
ほとんどのフィルターやコマンド・ハンドラーは固有のイベント処理ルーチンを持っています。ここで使われているサンプルWAMはイベント(UB_SAVE.ClickおよびUB_SEARCH.Click)を登録するので、それぞれのクリック・イベントを処理するために2つのイベント・ルーチンを定義しています。 |
ルーチンは次の順序でWeb用VLF WAMを実行します。
1. uHandleEvent(ルーチンuHandleEventからのメッセージは、最初に実行された場合でも最後に送信されます)
2. uInitialize
3. uExecute(初回ロジック)
4. ユーザーWAMイベント
5. uTerminate
フレームワークがいつ、どこで、どのようにフィルターやコマンド・ハンドラーが作成、表示、破棄されるかを管理することを除けば、WAMフィルターやコマンド・ハンドラーを書くことは、他のWAMプログラムを書くことに似ています。
通常、WAMはまずコード ウィザードで生成してから、別のイベントを追加する必要があるときに、以下を実行します。
· イベントを登録し、イベント処理ルーチンに関連付ける
· イベントを処理する新しいイベント処理ルーチンを追加する
最も重要なことは、WAMのフィルターやコマンド・ハンドラーがイベントの処理を完了したら残存してはいけないということです。