クラウド温泉@小樽に向けてブログに書いてきたものを実演しました。
デモに使ったモデルは以下の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
- 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)
- }
- 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 件のコメント:
コメントを投稿