2.1 モジュール構成

以下、全体のモジュールの概略構成について、実際のクラス名も含めて説明する。
以下の図は、DBServletクラスの動作を図に示したものである。DBServletクラスは、httpプロトコルを受信して、ルールにしたがってデータベースを使いながら取得テーブルを作成し、WebPartsクラスを使って描画する。
なお、WebPageは、HTML書き出しのための低レベルI/Oメソッドや、URLなどから取得したパラメータテーブルを取り出してシンボルテーブル(記号表)などを取り出すものであり、DBServletやRuleTable,RuleSyntax,WebPartsなどからも利用される共通のクラスである。

その他のクラスには、データベースの内容やパラメータなど多くの場合で使用されるTableクラスがある。
上の図で示している各クラスの内容を示す
  • DBServlet
    • httpプロトコルを受信すると、DBServletクラスのdoGetやdoPostメソッドが起動される。これらメソッドが起動されると、まず、WebPageインスタンスを作成する。次にWebPageインスタンスでは、URLパラメータリストを解析するので、その中のURLパラメータのsrc/tbl/dbAction変数の値を取り出して、適用するルールを示すRuleTableインスタンスを作成する。RuleTableインスタンスは、こららパラメータを元に適用するルールの文字列を求める。さらにこのルール文字列を元に構文を解析するRuleSyntaxインスタンスを実行する。
    • RuleSyntaxインスタンスでは、ルール文字列からルール構文の解析を行いツリー形式の内部構造を作成する。そして、RuleSyntaxインスタンスに存在するインタープリターメソッドを実行することで、データベースで表示するテーブルを作成する。生成されたWebPartsインスタンスに、テーブルやルール規則の表示規則を渡して、HTMLホームページを作成し、ブラウザへ返却する。
  • WebPage
    • サーブレットでのdoGetやdoPostメソッドを起動された際に渡されるrequestやrespondパラメータを元にインスタンスが生成される。ブラウザの種類や文字コード、URLなどで渡されたパラメータのシンボルテーブルやHTMLページ生成のための低レベル出力処理、文字コード変換などのメソッドを持っており、クライアントの環境によらず、同一の動作を保証するクラスである。
  • RuleTable
    • ブラウザからのパラメータで渡されたsrc:ODBCソース名、tbl:コマンドテーブル名、dbAction:ルール名を元に、ルールとなる文字列を含むインスタンスを生成するクラスである。また、src,tbl,dbAction指定が無い場合に別の指定によりダイレクトにルール文字列を決定する機能も有している。
    • 現在は、データベースを使ってルール文字列のインスタンスを生成するようになっているが、本クラスのみ修正することで、URLなどのパラメータ指定方法によって、別の方式(csvファイルやxmlファイル)でも処理できるようにしたい。
  • RuleSyntax
    • ルール文字列から、Yawdbaで処理し易い内部形式のインスタンスへ変換するクラスである。ルール文字列の処理にあたっては、JavaCCにより文法解析を行って、ノードによる内部形式に変換する。JavaCCを用いることで、ルール規則の変更が容易にすることができる。
    • さらに、RuleSyntaxインスタンスのexecuteメソッドを実行することで、これら内部形式を実行(インタプリター実行)することで、データベース処理を行い表示するテーブルなどを取得することができる。
  • WebParts
    • RuleSyntaxインスタンス内のWeb表示オブジェクトのHTMLオブジェクトへの変換を行って、WebPageインスタンス内のメソッドをつかって、HTMLページの生成を行う。
  • Table
    • Yawdbaで共通に使用される配列テーブルのクラスである、データベースから取得したWeb表示用のテーブルだけでなく、URLで指定したパラメータのテーブル、変数テーブルなど多くの場面で利用される。インプリメント上は、2次元のテーブルであり、値の設定、行・列の挿入、行・列の削除などのメソッドが用意されている。

Comments