DMDLスタートガイド¶
この文書では Asakusa Framework スタートガイド の構成で、DMDLを使ってJavaのデータモデルクラスを生成する方法について簡単に紹介します。
See also
DMDLの詳しい記述方法を知りたい場合や、コマンドライン等からDMDLを利用したい場合には、 DMDLユーザーガイド を参照してください。
DMDLを記述する¶
Data Model Definition Language (DMDL)はAsakusa Frameworkで利用可能なデータモデルを定義するためのDSLです。 DMDLスクリプトというファイルにデータモデルの名前や構造を定義し、DMDLコンパイラを実行することで、定義したデータモデルに対応するJavaのプログラムを自動的に生成します。
DMDLスクリプトを作成する¶
Asakusa Framework スタートガイド の流れに従ってプロジェクトを作成した場合、DMDLスクリプトはプロジェクトの src/main/dmdl
ディレクトリ以下に配置してください。
また、スクリプトのファイル名には .dmdl
の拡張子を付けて保存してください。
データモデルを定義する¶
データモデルを新たに定義するには、作成したDMDLスクリプト内に <データモデル名> = <プロパティ定義>;
のように記述します。
model_name = {
property_name : INT;
};
ここでは、以下の点に注意してください。
- データモデル名やプロパティ名はすべて小文字で指定し、単語区切りにアンダースコアを利用する
- プロパティの型は、プロパティ名の右側にコロンをはさんで大文字で指定する
- データモデルやプロパティの末尾にはセミコロンを指定する
データモデル内に複数のプロパティを定義するには、 {
と }
の間にプロパティを続けて指定します。
model_name = {
property_name : INT;
second_property : TEXT;
third : DOUBLE;
};
複数のデータモデルを定義するには、DMDLスクリプト内にデータモデルを続けて記述します。
model_name = {
property_name : INT;
};
second_model = {
prop : LONG;
};
third = {
other : DATE;
};
Tip
DMDLスクリプトファイルを複数用意し、それぞれのファイルにデータモデルクラスを定義することも可能です。
利用可能なプロパティの種類¶
それぞれのプロパティには下記のいずれかの型を指定できます。
型の名前 | 対応するJavaの型 |
---|---|
INT |
IntOption |
LONG |
LongOption |
FLOAT |
FloatOption |
DOUBLE |
DoubleOption |
TEXT |
StringOption |
DECIMAL |
DecimalOption |
DATE |
DateOption |
DATETIME |
DateTimeOption |
BOOLEAN |
BooleanOption |
BYTE |
ByteOption |
SHORT |
ShortOption |
複数のデータモデルを合成する¶
DMDLでは、定義した複数のデータモデルを組み合わせて新しいデータモデルを定義できます。
both = left + right;
left = {
left_value : INT;
};
right = {
right_value : TEXT;
};
上記のようにデータモデル定義の右辺で「モデル名 + モデル名」と記述した場合、それぞれのデータモデルで定義したプロパティをすべて持つような新しいデータモデルを定義します。 この例では、以下のようなデータモデルを定義したことになります。
both = {
left_value : INT;
right_value : TEXT;
};
なお、3つ以上のデータモデルを組み合わせることも可能です。
データモデルを拡張する¶
以下のように他のデータモデルと新しいプロパティを合成して、新しいデータモデルを定義できます。
origin = {
value : INT;
};
extended = origin + {
extra : TEXT;
};
上記の extended
では、 origin
で定義したプロパティ value
に加えて、新たに extra
というプロパティを定義しています。
この extended
は以下のような構造になります。
extended = {
value : INT;
extra : TEXT;
};
このようにDMDLでは、他のデータモデルの定義や新たなプロパティの定義を組み合わせて、複雑なデータモデルを定義できます。
データモデルクラスを生成する¶
DMDLコンパイラの起動¶
DMDLスクリプトに記述したデータモデルからJavaのデータモデルクラスを生成するには、Gradleを利用してDMDLコンパイラを実行します。
これはGradleの compileDMDL タスクで起動するので、プロジェクト内で以下のようにコマンドを実行します。
./gradlew compileDMDL
その他、 compileJava タスクや build タスクなどでも自動的にDMDLコンパイラが起動します。
Direct I/Oとの連携¶
Asakusa Framework スタートガイド の構成では、Direct I/Oと連携したバッチアプリケーションを作成できます。
Direct I/Oを利用するプロジェクト構成の場合、Direct I/Oに関するデータ変換を行うプログラムをDMDLから自動生成できます。 詳しい情報は データの直接入出力 - Direct I/O を参照してください。
WindGateとの連携¶
WindGateとの連携について、詳しい情報は 外部システムとの連携 - WindGate を参照してください。