Scala版の簡易ワークステートエンジン作ってみた。
まずは、サンプル
https://gist.github.com/1554280
Sample01Entityの定義とSample01EntityPersistentPluginはまぁ適当に。
ぶりだとDaoのアクセスルールを決めて自動でアクセスしてたけど簡易なので・・・というかデータアクセス系のデファクトが見当たらなかったから特に制限せずって感じ
定義自体はこんな感じでBuriBuilderを継承してDSLっぽく記述する感じ、"process01"はあんまり意味もないけど気にしない(ぉぃ
class Process01 extends BuriBuilder("process01") {
あとは、activityとかを定義していってエンジン部分をこんな感じで生成するイメージ
val procecss01 = new Process01 buildBuri
実行はぶりをちょっと見習って、toNextStatusって名前にしてみた。
entryもたぶんtoNextStatus出来るけどentryにした方が速いかも
val entity = new Sample01Entity(1,"","") Process01().entry(entity) assert(entity.status == "保存済み" , "status eq 保存済み") Process01().update(entity) assert(entity.status == "保存済み" , "status eq 保存済み") Process01().delete(entity) assert(entity.status == "Delete" , "status eq Delete")
updateとdeleteはtoNextStatus対応にしてない。
ってことで本体のコードはここ
https://gist.github.com/1582844
思いつくまま書いたから見直して読みやすいコードに書き換えたないなとちょっと思った。
末尾再帰してないっぽいしw