クラウド温泉@小樽に向けてブログに書いてきたものを実演しました。
デモに使ったモデルは以下のCSV、demo.csvをコンバートして生成したDEACustomer.java、DEEBuy.java、DERGoods.javaの3つのScala DSLで記述したものです。
demo.csv
#actor,parts,attrs customer,,phone #resource goods,,note #event buy,customer;goodsそのうちの一つ、DEACustomer.javaのソースコードは以下のものです。DEEBuy.javaとDERGoods.javaもだいたい同じコードになります。
DEACustomer.java
package com.demo import org.simplemodeling.dsl._ import org.simplemodeling.dsl.datatype._ import org.simplemodeling.dsl.domain._ import org.simplemodeling.dsl.domain.values._ case class DEACustomer extends DomainActor { term = "customer" caption = "customer" brief = <t></t> description = <text></text> id("customerId", DVICustomerId()) attribute("name", DVNCustomerName()) attribute("summary", XString) attribute("phone", XString) } case class DVICustomerId extends DomainValueId { term = "customerId" caption = "customerId" brief = <t></t> description = <text></text> attribute("value", XString) } case class DVNCustomerName extends DomainValueName { term = "customerName" caption = "customerName" brief = <t></t> description = <text></text> attribute("value", XString) }デモでは、このモデルからg4上で動作するJavaソースコードを生成し、Androidアプリケーションとして動作させました。Javaソースコードの生成は、一部デモに間に合わなかったものもあったので、その後、少し改良しました。その改良版では、以下のソースコード(33ファイル、4.7Kステップ)を生成します。
- BuyRestFeedAdapter.java
- BuyRestFeedRepository.java
- BuyRestViewActivity.java
- CustomerRestFeedAdapter.java
- CustomerRestFeedRepository.java
- CustomerRestViewActivity.java
- DDBuy.java
- DDCustomer.java
- DDGoods.java
- DEACustomer.java
- DEEBuy.java
- DERGoods.java
- DVIBuyId.java
- DVICustomerId.java
- DVIGoodsId.java
- DVNCustomerName.java
- DVNGoodsName.java
- DemoAgent.java
- DemoApplication.java
- DemoContext.java
- DemoContract.java
- DemoController.java
- DemoErrorModel.java
- DemoFactory.java
- DemoG3Driver.java
- DemoModel.java
- DemoModule.java
- DemoProvider.java
- DemoRepository.java
- GoodsRestFeedAdapter.java
- GoodsRestFeedRepository.java
- GoodsRestViewActivity.java
- IDemoRestDriver.java
BuyRestViewActivity, CustomerRestViewActivity, GoodsRestViewActivityがAndroidの画面クラスであるActivity(Androidの画面クラス)です。これらのActivityがサーバー上に格納されているデータを画面に表示します。
これらのActivityからDemoControllerを経由して、ドメインモデルを管理するクラスDemoModelにアクセスします。データの管理は、サーバーから取得したフィードデータをメモリ上に保持するクラスBuyRestFeedRepository, CustomerRestFeedRepository, GoodsRestFeedRepositoryで行い、これらのクラスをAndroidのウィジェットであるListView用のアダプタBuyRestFeedAdapter, CustomerRestFeedAdapter, GoodsRestFeedAdapterが使用します。
また、サーバーとの通信はDemoG3Driverが行います。今回のデモではサーバー側はg3なので、g3と通信するためのドライバを使用していますが、ドライバはインタフェースIDemoRestDriverを実装していれば取り替え可能な構造になっています。
クラス図の下に、Documentオブジェクト(DTO)であるDDCustomer, DDBuy, DDGoodsがありますが、これらのオブジェクトでデータのやりとりを行います。
クラス図のざっくりとした説明は以上の通りです。追々詳細な情報を書いていく予定です。
ここで強調したいのは、(トイプログラムではなくて)ある程度本格的なアプリケーションを作成する場合、ごく小さなドメインモデルからでも、これらのクラス群を作成しなければならないということです。一般的なJavaプログラムでも必要なものもありますし、Android特有のクラスもありますが、いずれにしても相当量のコーディングが必要になります。しかも、これらのクラス群はドメインモデルが決まれば、Android上でどう実装するのかというのも、ほとんど決まってしまうので、人力でコーディングするのは、かなりもったいない作業です。こういった定型部分を自動コーディングしてしまうことがSimpleModelerの目的です。
0 件のコメント:
コメントを投稿