WAMはWebの概念をサポートするコンポーネントです。WAMはXMLを出力しますが、これには、この出力Webページに渡されるフィールドやリストが含まれています。このWebページはXSLT変換によって作成されます。XSLは出力XMLを読み取り、XHTMLを生成します。そして、Webアプリケーションに関連付けられたWebサーバーによって、このXHTMLがをユーザーのブラウザーに転送されるのです。
XSLT変換は、ウェブレットと呼ばれる、別のLANSA XSLコンポーネントを使用します。これらのウェブレットからは複数のWeb コンポーネントが提供され、これらのコンポーネントをページに追加して、構成することが可能です。このコンポーネントには、デザイン時と実行時の両方で、必要に応じて設定できるプロパティがあります。ウェブレットには、比較的シンプルなコンポーネント (プッシュボタンやクリック可能な画像など)のほか、複雑なコンポーネント (グリッドやツリービューなど) も含まれています。
Webページのレイアウトは、レイアウト・ウェブレットによって制御されます。レイアウトウェ ブレットはWAMのコンパイル時に割り当てられ、デザイン時と実行時のいずれにおいても変更可能です。
WAMのデザインビューはグラフィカルなエディターで、これを使って開発者はWebroutineに対して出力される、Webページの外観や動作を定義できます。例えばプッシュボタンといったウェブレットをこのページにドロップして、[詳細] タブを使ってプロパティを設定できます。
通常WAMには、複数のWebroutineが含まれています。各Webroutineはプログラムのエントリーポイントです。ですから、例えばWebページのリンクから起動させることができます。Webroutineが終了すると、フィールドやリストがXMLドキュメントとして出力されます。
Webroutineに対するデータ・マッピングとWebroutineから外部へのデータ・マッピングは、WEB_MAPステートメントで制御されます。WEB_MAPではFOR()パラメータを使用して、フィールドをWebroutineにマッピングするか、Webroutineからマッピングするか、または両方向にマッピングするかを定義します。フィールドとリストは、WEB_MAP FIELDS() パラメータでマッピングされます。フィールドとリストは、そのフィールドが入力可能 (デフォルト) なのか出力のみなのかを制御する表示属性を持たせることができます。その他のフィールド属性として、*private や *hidden など使うこともできます。
WEB_MAPステートメントの例
WEB_MAP FOR(*OUTPUT) FIELDS(#EMPNO)
フィールドEMPNOはこのWebルーチンからマップされます。EMPNOはページで入力可能です。
WEB_MAP FOR(*INPUT) FIELDS(#EMPNO)
フィールドEMPNOはこのWebroutine内にマップされます。EMPNO はこのWebroutineからページにはマップされません。
WEB_MAP FOR(*BOTH) FIELDS((#EMPNO *OUTPUT) #SURNAME #GIVENAME)
フィールドはこのWebroutine内にマップされ、このWebroutineからもマップされます。フィールド EMPNOはページに出力されるため、次のWebroutineにマップすることはできません。
WEB_MAP FOR(*BOTH) FIELDS((#STDRENTRY *HIDDEN))
フィールドSTDRENTRYは、このWebroutine内にマップされ、このWebroutineからもマップされます。STDRENTRYはXHTMLで定義された非表示フィールドですが、Webページには表示されません。
WAMアプリケーションには、次のような2つのレイヤーがあると思ってください。
WAMのアーキテクチャ
- 1つのWAMには1つ以上のWEBROUTINEを組み込むことができます。
- WebRoutineは通常 1 つのWebページを出力します。
- Web_MapではWebRoutine内外にマップされるフィールドやリストが定義されます。
- WAMレベルで定義されたWeb_MapはすべてのWebRoutineに適用されます。
- WAMは標準レイアウトを採用します。
- すべてのWebRoutineレイアウトは (最初は) wam_layoutを共有します。
- WebRoutineのWebページには、*outputまたは*bothにマッピングされたフィールドとリストが含まれます。
- 開発者はグラフィカル・エディター (デザイン・ビュー) を使って、WebRoutineのページ・デザインを完成させます。
- ウェブレットからはXSLが提供され、プッシュボタンなどのWebコンポーネントをWebページに追加できます。
ウェブレットは、[詳細] タブのプロパティ・シートを使って設定 (プログラム) できます。
ステートレス・プログラミング
WAMについて理解する際に重要なことの1つは、WAMはスレートレス (状態非依存)、つまり状態を保持しないということです。実際には、すべてのインターネット・ベースのアプリケーションがステートレスです。これはつまり、WAMがプレゼンテーション層から実行された時、これが稼動し (ジョブがサーバー上で開始され)、なんらかの出力 (1つのWebページ) を作成し、終了する (サーバー上のジョブが終了し、コントロールがブラウザに送り返される) ということを意味しています。
ジョブの開始と終了は、どの点から見ても、"トランザクション"です。ユーザーのWeb "セッション" (つまり、複数のトランザクションにわたるもの) の間維持される必要があるデータは全て、どこかに保持されなくてはいけません。これからシンプルなWAM演習を行う中で、Web アプリケーションの設計の方法や「ステートレス」モデルをどのように扱えばよいのかを理解できると思います。
ロングネームの使用
コンポーネントはロングネームを使用して定義することが可能です。これは区画レベルのオプション設定です。ロングネームを使用してWAMやフォーム、再利用可能パーツを作成すると、Visual LANSAによって、一意の識別子 (最大10文字) が割り当てられます。新しいコンポーネントを作成する際に、独自の識別子を割り当てることもできます。これによって、開発者チームがロングネームと識別子の両方を完全にコントロールすることができるようになります。
詳細は、『LANSA テクニカル リファレンスガイド』の「LANSAオブジェクト名」を参照してください。
このチュートリアルでは、ロングネームが有効になっていることを前提としています。

