CookBook

テナント環境セットアップ時にテーブルが作成されるよう設定する

投稿日:2015-12-14 更新日:

e Builderを利用して作成したアプリケーションにおいて、テナント環境セットアップ時に自動でテーブルが作成されるように設定する手順を紹介します。

今回は例として、CookBook:フォームに入力した内容をデータベースに登録するで利用するテーブルをテナント環境セットアップ時に作成するように設定します。

完成イメージ

本稿の内容を設定したユーザモジュールをwarファイルに含めてデプロイしてください。
その後テナント環境セットアップを行った時に以下のテーブルがテナントデータベースに作成されます。

テーブル名:cb109004
カラム名 データ型 備考
item_cd VARCHAR 20 主キー
item_name VARCHAR 100
item_price NUMERIC 15
comment VARCHAR 200

完成サンプル

以下の完成サンプルをダウンロードしてご活用ください。
e builder プロジェクト : im_cookbook_109004.zip
imm ファイル : im_cookbook_109004-1.0.0.imm

レシピ

  1. セットアップ設定ファイルを作成します。
  2. 実行するDDLファイルを作成します。

1. セットアップ設定ファイルを作成します。

(1) はじめにe Builder のモジュールプロジェクト内に「セットアップ設定ファイル」を作成してください。
セットアップ設定ファイルを作成することで、テナント環境セットアップ時にデータベースのテーブル作成処理を組み込むことができます。
セットアップ設定ファイルには定義ルールがあります。必ず以下の配置ディレクトリ、ファイル名で作成してください。
定義ルールに則っていない場合テナント環境セットアップの対象となりません。この場合、実行時例外は発生しません。注意してください。

定義ルール
配置ディレクトリ src/main/conf/products/import/basic/{アーティファクトID}/
ファイル名 import-{アーティファクトID}-config-1.xml

モジュールプロジェクトのルートディレクトリに配置されているmodule.xmlのidタグにおいて、アーティファクトIDは以下のように定義されています。

この${artifact_id}がセットアップ設定ファイルの配置ディレクトリやファイル名に使用するアーティファクトIDです。

ファイル名に追加されているサフィックス “1” は、各モジュールにおけるテナント環境セットアップのバージョン管理のための番号(スキーマバージョン)です。初回では、必ず “1” を指定してください。
スキーマバージョンの詳細はSchemaUpdateをご参照ください。

今回配布しているサンプルでは module.xmlのidタグは以下のように設定されています。

アーティファクトIDはim_cookbook_109004となっているので、セットアップ設定ファイルは src/main/conf/products/import/basic/im_cookbook_109004/import-im_cookbook_109004-config-1.xml で作成してください。

(2) セットアップ設定ファイルの内容を記述してください。
セットアップ設定ファイルはXMLで記述してください。その基本構造は以下の通りです。

セットアップ設定ファイルのフォーマットはWebアーカイブディレクトリ内の下記のxsdファイルで定義されています。

  • WEB-INF/schema/import-data-config.xsd

今回はデータベースのテーブル作成のみを行うので、セットアップ設定ファイルの内容は以下の通り記述してください。

テナント環境セットアップ時にテーブル作成のDDLを実行するように設定する場合、create-fileタグでセットアップ時に実行したいDDLファイルのシステムストレージからの相対パスを指定してください。
DDLファイルの拡張子は.sqlです。

セットアップ設定ファイルの詳細はintra-mart Accel Platform ユーザモジュール開発ガイド-テナント環境セットアップの組み込みをご参照ください。

2. 実行するDDLファイルを作成してください。

(1) 上記のセットアップ設定ファイルで指定したパス上に、DDLファイルを作成してください。

intra-mart Accel Platform がサポートしているデータベース毎に、DDLファイルおよびDMLファイルを切り換えることができます。
例えば、セットアップ設定ファイルのDDLファイル名に my_project-ddl.sql というファイルを指定している場合、Oracle 専用のDDL文を実行したい場合は my_project-ddl_oracle.sql というファイルを作成してください。
このようにするとテナントデータベースが Oracle の場合 my_project-ddl_oracle.sql が実行されます。
各データベースのサフィックスは以下のようになっています。

データベース サフィックス
DB2 db2
Oracle oracle
Postgre SQL postgre
SQL Server sqlserver

今回はPostgreSQL専用のDDLファイルのみ作成します。
このDDLファイルのディレクトリパスやファイル名はセットアップ設定ファイルで指定したパスにPostgreSQLのサフィックスを加えた src/main/storage/system/products/import/basic/im_cookbook_109004/im_cookbook_109004-ddl_postgre.sql で作成してください。

(2) DDLファイルの内容を記述してください。
冒頭の完成イメージの通り、以下のようなテーブルを作成するSQLを記述してください。

テーブル名:cb109004
カラム名 データ型 備考
item_cd VARCHAR 20 主キー
item_name VARCHAR 100
item_price NUMERIC 15
comment VARCHAR 200

この場合はim_cookbook_109004-ddl_postgre.sqlに以下の通り記述してください。

以上を設定することで、テナント環境セットアップ時にテーブルの作成が自動的に実行されます。

-CookBook
-

執筆者:


  1. […] 第1回:スクリプト開発で登録フォームを作成する 第2回:フォームに入力した内容をデータベースに登録する 第3回:画面にインジケータ(ロード中のアイコン)を表示する 第4回:画面に確認ダイアログ(コンファーム)を表示する 第5回:スクリプト開発した画面にバリデーション(入力チェック)を実装する 第6回:テナント環境セットアップ時にテーブルが作成されるよう設定する […]

  2. […] テナント環境セットアップ時にテーブルが作成されるよう設定する […]

スクリプト開発で登録フォームを作成する | intra-mart Developer Site へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

IFTTT と連携して LogcDesigner のフローを呼び出す方法

この CookBook では、IFTTT と連携して LogcDesigner のフローを呼び出す方法について紹介しています。 Twitter から「intra-mart」を含むつぶやきを検索し、IM …

BloomMakerでワークフローの添付ファイルを直接編集する画面を作成する

このCookBookでは、BloomMakerで、ワークフローの添付ファイルを直接追加や削除する画面を作成してみました。 本稿で紹介のサンプルのように、BloomMakerを利用することで、ちょっとし …

no image

BloomMaker 独自の入力チェックでエラーとなった時に入力部品にエラーのハイライトを表示する方法

このCookBookでは、Accel Platform 2021 Springから利用可能になったプロパティ「入力規則エラーハイライト」について紹介しています。 「入力規則エラーハイライト」は、入力さ …

no image

IMBox の「Like!」を別のキャプションにする方法

この Cookbook では、IMBox の「Like!」を別のキャプションにする方法を紹介します。 具体的には、「Like!」を「確認」に変更する方法を紹介します。 この Cookbook では、日 …

no image

NEologd の辞書を使って全文検索を新語に対応させる方法

この CookBook では、Solr で利用している形態素解析エンジンである kuromoji に NEologd を取り入れビルドを行い、 既存の kuromoji の実装と差し替えることで、NE …