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. […] テナント環境セットアップ時にテーブルが作成されるよう設定する […]

comment

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

関連記事

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

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

IM-BloomMaker Bulma タイルの利用方法

この CookBook では、 2020 Summer でリリースした Bulma の「タイル」エレメントの利用方法について説明していきます。 「タイル」エレメントは自由にグリッドレイアウトを構築する …

no image

ワークフローの一覧を使い分けるには(改訂版)

このCookbookでは、以前に公開した「IM-Workflowの一覧を業務別に使い分けるには」に関して、お問い合わせいただいた内容を追加してワークフローの一覧の検索条件を付与する方法をご紹介いたしま …

no image

スクリプト開発でのCSRF対策(formタグ編)

Cross Site Request Forgery(CSRF)とは、閲覧者に不正にHTTPリクエストを送信させ、攻撃者の意図した処理を実行させる攻撃手法です。 このCookBookでは、スクリプト開 …

BloomMakerで動的承認ノードを利用したWorkflowコンテンツを作成する

このCookBookでは、BloomMakerで、動的承認ノードを利用したWorkflowのコンテンツを作成する方法を紹介します。 本稿では、BloomMakerとLogicDesignerでWork …