2010年1月23日土曜日

フレームワーク奮闘記 その2 当たり前を考える。

完全に備忘録。
Soilがカバーするのは業務。
MVCに分割するのはもうちょっと後で良くて、まずは守備範囲を考えてみる。
まだまだ、思考/試行しながら書いているのまとまりが無いのは御免!
SoilはService,Document,Detailを管理するのが責務。
Soil: 全ての土壌
 Service: 提供するサービス
  Document: 提供する書類
   Detail: 明細
そして、Soilは複数のサービスで構成される。(コードはイメージ)
class Soil{
 Service getService(String serviceName);
}
サービス間には連携があるはずで。サービス間の連携は自身が知っているはず。
しかし、連携の大元は別にあるべきか?? --> これはそのとおりなはず。
class Soil{
        Service getService(String serviceName);
 List getRelatedService(String serviceName);
}
--> ここ微妙(T0T)

となると、連携していた場合、次の段階に進む為には、
自身の状態を通知出来無ければならない。
class Service{
 Status getStatus();
}
と考えると、関係性がある場合は以下の様に表現されるべき。

サービス間は順次処理がされていく。 sequence
Service1 --> Service2 --> Service3

サービスの連携先はいずれかである。 selection
Service1 --> Service2
--> Service3

サービス1とサービス2に処理順は無いが、1と2が終了次第、サービス3が行われる。
Service1
Service2 --> Service3

サービス1とサービス2のいずれかが満たされれば次に進む。
Service1 ---> Service3
or
Service2

サービス1とサービス2が満たされない場合には次に進む。
!Service1 --> Service3
&&
!Service2

サービス1かサービス2のいずれかが満たされない場合に先に進む
!Service1 --> Service4
or
!Service2

まだあるかもしれないけど、ほろ酔い加減の頭ではここまでしか
思いつかないよ。。。

ここから見える事は、ここで書いた内容は【次の段階】へ進む為の条件である。
class Service{
 Status getStatus();
        @nextCondition(COND_AND);
    Service next();
}
上記の内容は同じ様に戻る場合にも言えるはず。
class Service{
 Status getStatus();
        
        @nextCondition(COND_AND);
    Service next();

        @backCondition(COND_OR);
        Service back();
}

以下は備忘。まだまとまってない。

提供されるサービスは複数の書類を持つ。
class Serivce{
getDocument(String name)
}

書類には処理をする順番がある時がある。
Doc1 --> Doc2 --> Doc3

class Service{
function Document getDocument(String name);

}

書類は明細を持つ場合、持たない場合がある。
A Document doesn't have detail;
A Document has a detail;
A Document has many details;

こんな感じか?

@hasDetail(true)
class Document{
...
}

2010年1月20日水曜日

フレームワーク奮闘記 その1 Soil

あけまして、おめでとうございます。
今年はWebアプリケーションフレームワークを作る年になりそうです。
最近は色んな優秀なフレームワークがありますが、自身でフレームワークを開発する
機会に恵まれるとは思っていませんでした。というのも、現在の基盤が色々と
問題を抱えているからで、改善!とか思ったのですが、修正箇所が
膨れ上がってしまいそうなので、一層のこと0ベースでスタートしようかと
言うのが事の始まりです。基本的な要件としては。。。
  • Java 1.5ベース





  • 開発者の効率が上がること





  • Connection系の処理は隠蔽する





  • SessionはService毎に付与すること





  • 必要なものを見極めてCacheしなさい





  • と何とも、何も決まっていない状況。
    白紙の地図を渡された状態なので、今から悶々とする日々が始まりそうです。
    全ての製品の土壌になることを目指して。。。
    Soilという名前だけは決めました。
    どう転んでいくのか、備忘の為に奮闘記をつけていこうと思います。