CSVからGrailsまで(1)

鎌倉に行ってきました


日曜日のMindmapModelingで行ったSimpleModelerのデモの手順を記録しておく。
今日は、CSVからWeb仕様書の生成まで。

(1)CSVファイル

まず、以下のCSVファイル(demo.csv)を用意する。

===demo.csv===
#actor
customer
clerk
#resource
goods
#event
buy
===

このCSVファイルは、SimpleModeler用に拡張したCSVである。CSVにコメント行でアノテーションをつけることができるようにしたもので、Annotated CSVと呼んでいる。
demo.csvの場合には、customerとclerkがactor(登場人物)、goodsがresource(道具)、buyがevent(出来事)であることを定義している。

(2)CSVをMindmapModel(XMind)に変換

$ simplemodeler -convert ../demo.csv

simplemodelerの-convertオプションを用いてdemo.csvをdemo.xmindに変換。-convertオプションの出力フォーマットのデフォルトはMindmapModelを記述したXMind。

(3)SimpleModelerプロジェクトを作成

$ simplemodeler -project demo

simplemodelerの-projectオプションで、SimpleModelerのプロジェクト(足場)を生成。

(4)MindmapModelを移入

$ cd demo
$ simplemodeler -import ../demo.xmind -import.package:com.demo

新しく作成したSimpleModelerプロジェクトに移り、-importオプションでMindmapモデルを移入。移入先のパッケージはcom.demo。

src/main/scala/com/demoディレクトリに以下のようなScala DSLが作成される。

===DEAClerk.scala===
package com.demo

import org.simplemodeling.dsl.domain.DomainActor
import org.simplemodeling.dsl.domain.DomainValueId
import org.simplemodeling.dsl.domain.DomainValueName

case class DEAClerk extends DomainActor {
term = "clerk"
caption = "clerk"
brief =
description =

id("clerkId", DVIClerkId())
attribute("clerkName", DVNClerkName())
}

case class DVIClerkId extends DomainValueId {
term = "clerkId"
caption = "clerkId"
brief =
description =

}

case class DVNClerkName extends DomainValueName {
term = "clerkName"
caption = "clerkName"
brief =
description =

}
===

(5)SimpleModelをコンパイル

$ mvn compile

SimpleModelerのプロジェクトはMavenのプロジェクトなので、MavenコンパイルScala DSLコンパイルされてclassファイルが生成される。

(6)Web仕様書を作成

$ simplemodeler -html com.demo -output:target/html.d

target/html.d配下のcom.demo/index.htmlとして以下のWeb仕様書が生成される。
このデモではクラス間の関係を定義していないので、自動生成されたクラス図はクラス・シンボルのみが列挙されている。

続く...