カテゴリを一意に識別するコード。クラスへのステレオタイプ付加[Item]クラスと[Category]クラスに、[Manageable]と[Entity]のステレオタイプを付加します。「ステレオタイプ」とは、UMLの標準構成要素にユーザーが独自に性質を付加できるメカニズムのことです。クラス図上のクラスに≪utility≫とステレオタイプを付加することで、そのクラスに「ユーティリティクラス」であるという性質を付加する事ができます。ここでの「Manageable」と「Entity」はAndroMDAが提供するプロファイルで用意されているステレオタイプです。包含ツリー上でクラスをダブルクリックし、[モデルクラス仕様]ダイアログボックスを開きます。[ステレオタイプ]タブで[全てのアイテム]リストから[Manageable]と[Entity]を選択し、[選択されたアイテム]リストに移動します。AndroMDAは、このステレオタイプの設定により、クラスの特性を認識します。「Manageable」ステレオタイプによりクラスを「CRUD」の対象とみなし、「Entity」ステレオタイプによってクラスをHibernateのO/Rマッピングの対象とみなします。クラス属性へのステレオタイプ付加アプリケーションの仕様上、[Item]クラスの[itemcode]属性と、[Category]クラスの[categorycode]属性はシステム内で一意である必要があります。各属性に[Unique]ステレオタイプを付加します。Itemクラスの設定を例にします。包含ツリー上で[Item]クラスの[categorycode]をダブルクリックすると、[属性仕様]ダイアログボックスが開きますので、[ステレオタイプ]タブを選択します。[すべてのアイテム]リスト上の[Unique]を選択されたアイテムに移動します。[Category]クラスの[categorycode]属性も同様に設定します。包含ツリー上で「Data/ItemCategory/to/msn/wings/codezine」を右クリックし、[新規の図]→[クラス図]を選択します。Entities」とします。名前は任意の名前で構いません。クラスの図への追加[Item]クラスと[Category]クラスを、クラス図上へドラッグ&ドロップします。関連の追加クラス図の左横にあるツールバー上の[関連]を選択し、[Item]と[Category]の間に関連を設定します。関連仕様(多重度)の設定クラス図上の関連をダブルクリックし、[関連仕様]ダイアログボックスで関連終端Aの多重度と関連終端Bの多重度に、それぞれ「0..*」を設定します。関連端の可視性を「public」に設定します。[包含ツリー]上で[category]モデルパッケージの[関係]→[関連]→[A<>]、[B<>]を開きます。[A<>]をダブルクリックすると[関連端仕様]ダイアログボックスが開きますので、[一般]タブを選択し、[可視性]の設定を[public]に設定して下さい。[B<>]にも同様の設定をします。関連端仕様ダイアログ以上でモデリングは完了です。モデリングした内容はXMIファイルに保存されます。リソース自動生成(AndroMDA実行)プロジェクトのルートディレクトリでmavenを実行します。successful」と表示されたら成功です。XMIファイルをもとに各種リソース(Javaソースコード、各種設定ファイル、SQLファイル)が自動生成されます。本稿のサンプルでは、JBossに標準で添付しているHSQLDBを使用しますので、テーブルを作成するためにJBossを起動します。HSQLDBのデータソース設定JBossではデフォルトで添付のHSQLDBが使用できる状態になっていませんので、「%JBOSS_HOME%/server/deploy/hsqldb-ds.xml」ファイルの以下の箇所を編集します。以下の記述がコメントアウトされているので、有効にします。「hsqldb-ds.xml」<connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>また同時に、以下の記述を削除して下さい。以下の記述がコメントになっているので有効にします。name="No_system_exit">true</attribute></mbean>上記は、JBossのMBean(管理Bean)の設定です。この設定により、このMBeanと関連づけられたサービスがJBossの管理コンソール上で参照可能となります。JBossの管理コンソールは「http://localhost:8080/jmx-console/」のURLでブラウザからアクセスできます。上記の設定では「org.jboss.jdbc.HypersonicDatabase」のインスタンスを「Hypersonic」(jboss:service=Hypersonic指定により)というサービス名のMBean(管理Bean)で管理することを意味します。そのほかにattribute要素でデータベースのポート番号、DB名、デバッグ出力設定などを定義しています。JBoss起動テーブル作成前にJBossを起動します。%JBOSS_HOME%/bin/run.batDBのテーブル作成プロジェクトのルートディレクトリで、以下のコマンドを実行します。create-schema自動生成されたSQLファイル(プロジェクトルート「/core/targe/schema-create.sql」)が実行され、JBoss上のHSQLDBにテーブルが作成されます。deploy「$JBOSS_HOME/server/default/deploy」フォルダに「itemcategory-app-1.0.ear」ファイルがコピーされ、JBoss上にデプロイされます。デプロイが成功した場合、JBossのコンソール上にデプロイ完了のメッセージが表示されます。サンプルアプリケーション実行では、サンプルアプリケーションを実行してみましょう。ブラウザで「http://localhost:8080/itemcategory/」にアクセスすると、本稿のサンプルのトップ画面(Item画面)が表示されます。トップ画面(Item画面)商品の追加ここでは2件商品を追加します。商品コードは「i-0001」「i-0002」とします。追加された商品は入力フォームの下の一覧に表示されます。商品とカテゴリの関連付けはまだされていませんので、「Categories」の列は空で表示されています。entity:]セレクトボックスの[Category*]を選択すると、「Category」画面に移動します。カテゴリコードは「c-0001」「c-0002」とします。ここでは「Items」リストでは何も選択せず「create」ボタンを押下します。押下後、新規に作成されたカテゴリが入力フォーム下のカテゴリ一覧に表示されます。ここでは商品とカテゴリは関連付けられていませんので、一覧の「Items」フィールドは空で表示されます。商品とカテゴリの関連付け「Category」画面で一覧の[c-0001]の行のラジオボタンをチェックすると、入力フォームに値がコピーされます。[Items]リストで[i-0001]を選択し[Update]ボタンを押下します。カテゴリ一覧のCategorycode[c-0001]の[Items]フィールドには[i-0001]が表示されます。商品とカテゴリの関連付けまとめ本稿では、AndroMDAを使用して「多対多」のモデルのデータを管理(新規登録・読み込み・更新・削除)するアプリケーションを自動生成し、その実行までを確認しました。仕様レベルのモデルを定義し、設計モデルそして実装に変換・マッピングするという作業は、ある一定のルールに従って行う事が可能です。この考え方がMDAの基本部分です。MDAを可能な部分からでもシステム開発に適用し、実践することによって大きなメリットを得られるでしょう。アプリケーションが実行できた所で、開発者としては自動生成されたアプリケーションの内部構造が気になる所です。「AndroMDAでMDAの世界を体験する(コード分析編)」では、本稿で自動生成されたアプリケーションのコードを解析します。連載通知を行うには会員登録(無料)が必要です。会員の方はログインを行ってください。