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

IM-LogicDesignerのIM-ContentsSearch コンテンツ登録タスク利用例

このCookBookでは、IM-LogicDesignerのIM-ContentsSearch コンテンツ登録タスクの利用例を紹介します。 IM-BISで作成したワークフローの案件終了処理で、画面項目 …

no image

IM-BloomMaker 繰り返しエレメントでの変数の使い方

このCookBookでは、IM-BloomMakerの繰り返しエレメントと変数の使い方について紹介しています。 サンプルでは、1・2・3次元配列の変数を使用して繰り返しエレメントを表示します。 完成イ …

no image

ViewCreatorのヘッダやフッタに配置するリンクのURLに計算結果を埋め込む方法

本記事では、ViewCreatorのヘッダやフッタにリンクを埋め込む際に、関数を利用する方法をご紹介します。 この方法を利用すると、パラメータ文字列に「今日日付」を受け渡すといったことが実現できます。 …

no image

IM-FormaDesignerで作成したフォーム内で、外部連携を利用して最も簡単に値を渡す方法(テーブルアイテム編)

このCookBookでは、IM-FormaDesignerで作成したフォーム画面の中で、テーブルアイテムからテーブルアイテムへ値を渡す方法について紹介します。 今回は例として、グリッドテーブルを利用し …

no image

IM-BloomMaker で作成した画面で、入力項目の値によってエレメントの表示・非表示を切り替える方法

このCookBookでは、IM-BloomMakerで入力系エレメントの入力値によってエレメントの表示/非表示を切り替える方法について紹介しています。 実際にサンプル画面を作成しながら解説を行います。 …

まだデータがありません。

RSSRSSRSSRSS