InitLoader が用いる設定ファイル initidb.xml の構造を説明します。また、開発者が拡張できる initdb_ex.xml についても説明します。

initdb.xml は InitLoader コマンドが用いる設定ファイルです。 このファイルは wagbyapp/webapps/wagby/WEB-INF/export/conf フォルダに含まれています。

initdb.xml は次のような構造になっています。

<config>
  <!-- データベースの設定 -->
  <database ...>
    ...
  </database>

  <!-- 各フォルダの設定 -->

  <directory .../>

  <directory .../>

  <directory .../>
  ...
</config>

データベースのタイプや JDBC ドライバ、接続先 URL の指定などを行います。

type 属性
データベースの種類を指定します。内蔵データベースの場合は "sql92" を指定します。
driver 属性
JDBC ドライバを指定します。
url 属性
接続先データベースへの URL を指定します。
user 属性
接続先データベースのユーザー名を指定します。
password 属性
接続先データベースのパスワードを指定します。
quoteid 属性
SQL文における識別子の区切り文字(quote.id)を指定します。 例えば、'"' を指定した場合は、「select * from "juser" where id > 0」のようなSQL文が実行されます。
quotewhere 属性
SQL文におけるWHERE句の区切り文字(quote.where)を指定します。 例えば、'"'を指定した場合は、「select * from juser where "id > 0"」のようなSQL文が実行されます。
quoteidinwhere 属性
SQL文におけるWHERE句内の識別子の区切り文字(quote.idInWhere)を指定します。 例えば、'"'を指定した場合は、「select * from juser where "id" > 0」のようなSQL文が実行されます。

エクスポートされたフォルダを起点とした、相対的なフォルダ名と、各種属性を指定します。 具体的には、次のようになります。

  <directory group="data hibernate"
	     tablename="customer"
	     storage="hibernate"
	     createddlfilename="createddl/customer.ddl"
	     dropddlfilename="dropddl/customer.ddl"
	     importxslfilename="importxsl/customer.xsl"
	     convertimportxslfilename="convertimportxsl/customer.xsl">
    init/customer
  </directory>
group 属性

この sql 要素のグループ名を指定します。スペース区切りで複数記述することが可能です。コマンド実行時にグループ名に合致した sql 要素をまとめて実行することができます。次の値が設定されます。

  • data : エンドユーザによって開発されたという意味を示すマーカーです。
  • jfc_data : Wagby 内部で管理されているモデルを示すマーカーです。
  • hibernate : Hibernate を用いてデータを格納します。エンドユーザによって開発されたモデルが該当します。

この group 属性値を利用して、InitLoader を操作することができます。対象となるグループに限定した操作を行えるようになります。

tablename 属性
データベースのテーブル名が指定されて実行された場合に、一致した sql 要素のみを実行します。
storage 属性
"hibernate" を指定できます。
createddlfilename 属性
テーブル作成時の DDL ファイルを指定します。
dropddlfilename 属性
テーブル削除時の DDL ファイルを指定します。
importxslfilename 属性
この属性にXSLファイルのファイル名を指定することにより、import時に読み込んだXMLを指定したXSLで処理を行います。指定がない場合は読み込んだXMLでそのまま処理します。initdb.xmlファイルの親ディレクトリからの相対パスを指定します。
convertimportxslfilename 属性
過去データを移行して新システムにデータを格納するタイミングで、ここに指定した XSLT を(フィルタとして)通すことができます。

InitLoader 実行時に、同時に実行する SQL 文を指定します。例えばビューの定義など、さまざまな SQL 文(一文)を指定します。

  <sql group="create_view jfc_data"
       tablename="staff">
    create view ...
  </sql>

複数の SQL 文を実行させる場合は、当該要素を複数回、記述してください。または記述するSQLをセミコロン「;」で区切って記述します。

MySQL を利用する場合、セミコロンで区切った複数のSQLを認識させるための設定が必要です。[詳細...]
group 属性
この sql 要素のグループ名を指定します。スペース区切りで複数記述することが可能です。コマンド実行時にグループ名に合致した sql 要素をまとめて実行することができます。
tablename 属性
データベースのテーブル名が指定されて実行された場合に、一致した sql 要素のみを実行します。
acceptcommand属性、denycommand属性を共に指定していない場合は、デフォルト値として
acceptcommand="sql sql-auto-before" denycommand="all"
を使用します。

InitLoader 実行時に、同時に実行する CREATE SEQUENCE 文を指定します。 具体的には、次のようになります。

  <sequence group="create_seq jfc_data"
       tablename="jprincipal" tablemaxcolumn="id"
       seqname="jprincipal_seq" start="1000"/>
group 属性
この sequence 要素のグループ名を指定します。スペース区切りで複数記述することが可能です。コマンド実行時にグループ名に合致した sequence 要素をまとめて実行することができます。
tablename 属性
データベースのテーブル名が指定されて実行された場合に、一致した sequence 要素のみを実行します。
tablemaxcolumn 属性
tablename属性とこの属性で指定されたテーブルの列の最大値を取得し、start属性で指定された値より大きい場合は、この値をSTARTの値とします。tablename属性又はこの属性が指定されてない場合は、start属性の指定に従います。
seqname 属性
作成するSEQUENCEの名前を指定します。必ず指定されなければなりません。
increment 属性、minvalue 属性、maxvalue 属性、start 属性、cache 属性
CREATE SEQUENCE文のINCREMENT, MINVALUE, MAXVALUE, START, CACHEに対応します。指定されてない場合は、省略されます。
cycle 属性
CREATE SEQUENCE文のCYCLEに対応します。値がtrueの場合にのみ指定されます。指定されてない場合又は値がfalseの場合は、省略されます。
acceptcommand属性、denycommand属性を共に指定していない場合は、デフォルト値として
acceptcommand="sequence" denycommand="all"
を使用します。

initdb.xml はモデル定義から常に自動生成されます。一方、initdb_ex.xml は開発者が作成し、customize フォルダに配置します。この仕組みを用いることで、モデル定義によらず、InitLoader 時に常に実行してほしい SQL を 用意することができます。

使い方

  1. $(DEVHOME)/customize/webapp/WEB-INF/export/conf/initdb_ex.xml を用意します。
  2. ファイルの中身を作成します。例を示します。
    <?xml version="1.0" encoding="UTF-8"?>
      <sql group="data"
            acceptcommand="sql sql-create-after" denycommand="all"
            tablename="seq">
    INSERT INTO &quot;seq&quot; VALUES('report_seq1',1);
    INSERT INTO &quot;seq&quot; VALUES('report_seq2',1);
      </sql>
    
  3. ビルドします。ビルド後は wagbyapp/webapps/wagby/WEB-INF/export/conf/initdb_ex.xml に配置されます。
  4. init_db.bat を実行すると、ここに記述した内容が (initdb.xml のあとに) 実行されます。

[利用例 : サポート > リポジトリ > 業務ロジック > 主キー > 順序を定義する]

運用時の注意

  • SQLを直接、記述するため、お使いのデータベースに依存します。データベース変更時は、このファイルに記述した内容も見直してください。
  • テーブル名を囲むダブルクォートの有無などは、ご利用になるデータベースによって異なります。
  • Designerで「テーブルを作成しない」とした場合、Web画面からのインポート操作では、当該モデルに関するSQL実行はスキップされます。コンソールからinit_db.batスクリプトを実行した場合は、initdb_ex.xml のすべての内容が常に実行されます。
  • 記述内容に誤りがあった場合は、その記述は実行されません。例えば tablename 属性のスペルミスや、余分な空白が入っていた、という場合などです。