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スクリプトファイルを複数用意し、それぞれのファイルにデータモデルクラスを定義することも可能です。

利用可能なプロパティの種類

それぞれのプロパティには下記のいずれかの型を指定できます。

DMDLとJavaのデータ型
型の名前 対応する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 を参照してください。