前の記事に続いてSeasar Conferenceをレポートする。
私は「企業システム進化論」を聞いてきた。発表者は和田卓人さん。なんか、いろんなSeasarプロダクトのコミッタをやってらっしゃる。
このセッションの主題であるワークフローの管理、その変化への対応、企業システムの統合といった分野は私は経験があまりなくて、S2Buriもあまりピンと来ていなかった。だからこそ聞きに行った。S2Daoは自前で勉強すればなんとかなるもの。
結果として、S2Buriの凄さがちょっとだけ分かった気がする。
これがこのセッションの主題である。
DI基盤(S2Container), プレゼンテーション層(Teeda, J2JSF), DB系(S2Dao他)をSeasarはサポートしているが、残るは分散である。Seasarはこれにどうやって立ち向かうのか
関連する主なプロダクトは、
S2Axisは上記参照。S2RMIも名前の通りJava RMIのgood wrapper。S2RemotingはS2AxisとS2RMIを隠蔽し、クライアントコードをプロトコルから独立にする。
S2JMSはこんな感じ。
えっと、私も前にちょっと読んだだけでJMSについてうろ覚えだったので一応復習。
まずMOMっていうのがある。非同期通信用のミドルウェアで、実装にはIBMのWebSphere MQとか、オープンソースのActiveMQとかがある。送信側はは非同期メッセージを一度MOMにキューイングして、受信側はMOMからそれを取り出す。構造はProducer-Consumerパターンっぽい?
MOMが間に入って送信側と受信側を互いに抽象化することで、
で、JMSとはJavaからMOMを扱うためのAPI。DBに対するJDBCのような低水準のAPIである。
業務において個々の局面で為すべき個々の作業はあまり変わらない。つまり、個々のビジネスロジックというのはあまり変化しない。変わるのは、そのビジネスロジックをどういう手順で進めていくのかというワークフローである。「業務ロジックよりも業務プロセスのほうが寿命が短い」。
ロジックの中に、プロセスが入り込んでしまうと厄介である。例えば、会計処理において項目を計算するロジック自体は変わらないのに、「こういう場合はどの部署に」というような業務プロセスがif文のような形で会計処理に入り込んでしまうと厄介である。
これはプロセスをロジックの中に、寿命の短い要素を再利用可能な要素の中にハードコードしていることになる。そして、プロセスに関する処理がロジックの中に散在してしまう。プロセスが変化した時の改修が困難となる。
従って、業務プロセスを業務ロジックから外部化しなければならない。SeasarプロダクトにあってはS2Buriがこれを実現する。S2Buri勉強会も沢山の人が集まり、Seasarプロダクトの中でもTuigwaaなどと並んで注目を集めているものの1つである。
S2BuriはSeasar発のワークステートエンジンであり、GUIによって簡単にプロセス(業務フロー)を管理できる。
そして、業務ロジックからも通信プロトコルからも独立で互いに依存しない、純粋なロジックだけが残る。それは、フレームワークにも依存しない、POJOである。
Javaにおいてもっとも寿命が長いのは、どんなフレームワークでもない、POJOであろう。それは「Javaである」ことしか要請しないのだから。POJOは中継層やプロセス層のような「うつろいゆくもの」に依存しない。
POJO(と、POJOのためのJUnit)を蓄積していくことが資産の蓄積である。Seasarファミリーはそれを可能とする。