ぶり2.3を適当に読む(2)
エスカフェ構想が発表になっていたので、今後のカテゴリはs2buri→buriとしてみます。
以前のはぼちぼち修正する予定。
今日はあまり時間がとれなかったけど、BuriActivitySelectorについて読んでみました。
BuriActivitySelector
実行対象のアクティビティを特定するためのセレクタ。
いくつかの実装クラスが用意されている。自前で用意すればアクティビティの決定方法をカスタマイズ可能。
もうすんごい独特な権限制御ががちがちに入る場合とか、ここで対処するのも1つの手段かと思った。
以前はXPDLで表現していたところが、この仕組みでJavaオンリーで再実装された感じかな。
- DirectActivitySelector
- 指定されたアクティビティIDを元にピンポイントでアクティビティを特定するセレクタ。アクティビティIDは systemContext.getCallPath().getActivityId() な感じで取得されてる。アクティビティIDが1つだけ指定された場合のみ発動。というか1個以上だと例外発生。SystemContext周りを後で読んでおこう。★
- ParticipantBuriActivitySelector
- StartActivitySelector
- プロセス中の開始アクティビティに当たるアクティビティ群を取得するセレクタ。最初にデータを突っ込む時ようかと。
- StateActivitySelector
- たぶんもっとも基本的なセレクタ。登録済みのデータがFinish mode = Manualにひっかかって現在止まっているアクティビティ群を取得する。分岐によって複数アクティビティにデータが所属することがあるので「群」ね。
- BuriActivityPathFilter
- ★後で読む。
セレクタの登録
buriSimple.diconやstardardBuri.diconでBuriEngineの実装クラスのコンポーネント定義で、addActivitySelector()メソッドを使って登録してる。
並び順が重要なのかな。
<component name="BuriSimpleEngine" class="org.seasar.buri.engine.impl.BuriSimpleEngineImpl"> <initMethod name="addActivitySelector"> <arg><component class="org.seasar.buri.engine.selector.activityImpl.DirectActivitySelector"> </component></arg> </initMethod> <initMethod name="addActivitySelector"> <arg><component class="org.seasar.buri.engine.selector.activityImpl.StateActivitySelector"> </component></arg> </initMethod> <initMethod name="addActivitySelector"> <arg><component class="org.seasar.buri.engine.selector.activityImpl.StartActivitySelector"> </component></arg> </initMethod> <initMethod name="addActivitySelector"> <arg><component class="org.seasar.buri.engine.selector.activityImpl.BuriActivityPathFilter"> </component></arg> </initMethod> 〜(省略)〜 </component>
SELECT_FINAL
どこで返してるのかな?SELECT_NEXTオンリーだと全部のセレクタが流れそう...。
BuriProcessSelector
名前だけしかチェックしてないけど、対称性を考えてアクティビティ同じような感じなんだろうなぁと思われ。