TOP>>ツアー>>チュートリアル(DBアプリ編) 概略<ツアー>OBAQ構成定義アプリケーションサーバリファレンスサイトマップ

標準DBドキュメントオブジェクトののカスタマイズ


標準ドキュメントオブジェクトのカスタマイズ

標準ドキュメントオブジェクトは、 データのチェックを行なわず単に画面の内容をデータベースに反映させます。 ですから、エンドユーザに提供するアプリケーションとしては利用できません。

しかし、これは以下に述べる手段でカスタマイズすることができます。

画面の変更

画面はHTMLテンプレートファイルから作成されています。 テンプレートファイルの内容を変更することで、 項目の画面上の位置を修正したり、 不要な項目を省いたり、 説明を追加することができます。

テンプレートメソッドの実装

標準ドキュメントオブジェクトはプログラミングパターンで言う所の、 「テンプレートメソッド」というパターンで作成されています。

例えば、Masterオブジェクトでは、データを追加する直前にcheck_insertというメソッドを呼びます。 Masterオブジェクト内では、このメソッドは空ですが、これを実装することで、 データ追加の前にデータの正当性チェックを行なうことができます。

テンプレートメソッドを実装するには、構成定義ファイル(index.wal)にメソッド定義を追加します。

MasterMnt tanto
  table_name = Tanto
  description = <<END
  マスターメンテナンスの例です。
  END
  template_name=master.html  
  .def_acq check_insert {{
     raise "累計金額は負の値を設定できません" if ruikei_kin.to_i < 0
  }}

カスタムクラスの作成

テンプレートメソッドだけで、要求する仕様を満たせない場合や、追加する処理の内容が複雑な場合は、 標準ドキュメントオブジェクトのクラスを継承して、 専用のクラスを作成します。

# クラス定義(mymaster1.rb)
class MyTantoMasuter < MasterMnt
  ....
end

というソースを作成して、構成定義ファイルを以下のようにします。

#!/usr/bin/walrus
%require walrus/rope.rb

%require walrus/db.rb
%require walrus/dbapp.rb
%require mymaster1.rb         # 追加

Site
.load_schema dbtut.wsc        

Folder top .

 Folder master     
  source_dir=.
  MyTantoMaster tanto         # 変更
    table_name = Tanto
    template_name=master.html  

ページトップへ