2.1.1 WAMのビルドおよびコンパイル

WAMのビルドやコンパイルのプロセスを確認しながら、開発プロセスに与える影響を見ていきたいと思います。

WAMがビルドもしくはコンパイルされたときに何が起こるかを確認する一番簡単な方法は、簡単なWAMを作成し、結果のオブジェクトを確認することです。

次のようなWebroutineが1つだけ(KWAM1001)の非常に簡単なWAM(KWAM10)を使用してみましょう。

初めてウェブデザインが生成される時には、適切なレイアウト・オブジェクトも生成されます。その後の生成ではレイアウト・オブジェクトは再生成されません。生成されたレイアウトに対する変更は全てLANSAエディターを使用して行います。

レイアウトについてはこのドキュメントで後ほど詳しく説明されますので、現時点では深く考えないでください。

WAMレイアウトに関連するオブジェクトは、以下の通りです。

1つもしくは複数のテクノロジ・サービスと共に[XSLの生成]オプションを選択すると、ビルドまたはコンパイルの段階で、各Webroutineについて追加のXMLとXSLオブジェクトが生成、もしくは再生成されます。RDMLX Webroutineコマンドのすぐ右側にある小さな緑の矢印を使って、特定のWebroutine用にこれらのXMLやXSLオブジェクトを生成または再生成することもできます。この一連のオブジェクトは区画の言語及び選択されたテクノロジ・サービスの組み合わせで次のディレクトリ構造を使って作成されます。...\X_WIN95\X_LANSA\X_<区画>\web\<プロバイダ>\<テクノロジ・サービス>\<言語>

[XSLの生成]設定に関連するオブジェクトは、以下の通りです。

ビルドを実行した場合、デフォルトのシステム設定である、全ての新しいWebroutine (つまり、これまでXSL/ XMLオブジェクトを生成したことがないWebroutine)に対するXSLの生成が適用されます。このプロセスはWAMのコンパイル・オプションによってさらに制御が可能です。

WAMをコンパイルするとき、[XSLの生成]オプションにより、XSL生成を避けたり、全てのWebroutine、もしくは新しいWebroutineにのみXSLを生成させることができます。RDMLX Webroutineコマンドのすぐ右にある小さな緑色の矢印を使って、1つのWebroutineに対してオンデマンドでXSLを生成することも可能です。

全てのWebroutineに対して[XSLの生成]を選択すると、XSLが再生成されますが、これによりLANSAエディターで適用されたすべての修正が失われることを覚えておいてください。オンデマンドでXSLを再生成した際にも同じことが当てはまります。

 

複数言語の開発を行っている場合…
デフォルトの区画言語に関連したXSLオブジェクトはLANSAリポジトリで発行され、他の言語用に複製されます。このプロセスにより、各テクノロジ・サービスの全言語用のXSL情報が1セットずつ効率的に用意されます。各言語用に発行された別々のXSLを1セット作成することも可能ですが、各言語に対し全く異なるインターフェースが必要な場合を除き、一般的にはこのアプローチは推奨されません。複数言語変数を使用すると、1つのウェブデザインしか必要とせず、保守がより簡単で、より良いアプローチと言えます。

 

XMLとXSLオブジェクトの生成に加え、WAMがコンパイルされると(ビルド・オプションには適用されません)、WAMに関連するRDMLXオブジェクト一式が常に作成または再作成されます。その他のコンパイル可能なRDMLXオブジェクトに対しても、同様のオブジェクト一式がWAM用に生成されます。例えば次のようなものです。

上記はWAMをサポートするために生成されるファイルですが、最後にあと1つ、全体を完成させるのに必要な部分があります。WAMがビルドもしくはコンパイルされると、Webroutineごとに、LXML(XMLタグを表すリスト)情報が常に生成または再生成されます。このLXML情報はLANSAデータベースに内部的に格納され、テクノロジ・サービスや言語の影響を受けません。

LXML情報が自動的に再生成されることは重要です。これはWAB_MAP定義に加えられたあらゆる修正を[Webroutine 出力]タブで使用できるようにするからです。LXMLはLANSAエディターで[XML]タブを選ぶことで確認できます。

生成されたLXMLに対する修正(LANSAエディターで加えられた、クッキーやTSMLノード)はLXMLが再生成された時も保持されます。

以下はWAMのビルド及びコンパイル・プロセスを簡潔に示した図です。下図で分かるように、複数のオブジェクトがWAM用に生成され、WAMの中の全てのWebroutineに適用されます。同時に、Webroutineごとにその他のオブジェクトが生成されます(そして情報が内部的に格納されます)。