読者です 読者をやめる 読者になる 読者になる

権限の機能強化案(2)

ぶりの呼びだし方にはBaoとInvokerの二つがあります。BaoはInvokerを扱いやすくするためのwrapAPIに過ぎません(内部でBaoInvokerを呼びだしてる)。なので頻繁に使う部分に関してはBaoでほぼカバーさせているモノの、定義が難しいとか定義すると混乱しそうな部分に関してBaoの対象外で直接Invokerを使うって事にしています。
2006-03-30 - まこたん(makotan)の日記

なるほどなるほど。そういうことですかー。
BaoInterceptorで提供されるS2Daoっぽい使い方があまりにシンプルで衝撃的だったので、そればっかり意識にありました(^^;
細かい制御をしたい人は各種Invokerを使えと。

これからはちょっとそっち方面を追ってみます。

ぶりはデータの制御はIDでしかしていないのでS2Pagerっぽい制御が難しくなっているんですね。
少なくとも今の仕様のDaoを作ってそれを指定することでぶりが使う、ぶりが認識するのはIDのみって仕様のままだとS2Pager的なことを実現するには限界があります。

持ってきたIDのListをセッション等に格納しておいて、ID群をキーに自前Daoで必要な範囲のデータを持ってくるようにする、とかやれば効率はともかくとしてとりあえずはできそうかも。

ステータスを問わずに取得、特定ステータスを指定しての取得のバリエーションがほしい。

ステータスを問わずに取得は即ちDaoの直接呼び出しですね。自由にしてください(笑)
とはいえ、Baoの定義で上手くいけそうなら有りかなぁと思ったことも・・・

個々のデータにステータス情報をくっつけたものが取得できるなら自前のDaoでいいんですが、SQL結合で可能ですかね?いったん取得してからJava上で頑張る?

その中から1つのデータを選んで、そのステータスでそのユーザに許可されているアクティビティ一覧を取得する。((B)と対応)

これはInvokerの機能としてあります。

なんと。試してみます。

いつの間にかステータスが進んでいた場合など、既に指定したアクティビティの実行権限がなければエラー。

これは難しい・・・エラーが起きたからってどうすればいいのか実行時にはだれも判らないし、とはいえ設計時に判る内容でもないし・・・

例えばですね、(1)→(2)→(3)という3つのステータスを進むデータがあったとして、ユーザAさんが(1)→(2)と進めようと思ったら、同じ権限を持っているユーザBさんが裏の方で(1)→(2)にすでに進めていた。というような状況を考えている訳なんです。もう既にデータはステータス(2)にいるので、ユーザAさんの要求はエラーになって欲しいと。
何かRuntimeException系のをthrowしてもらえれば、Baoのクライアント側で「指定されたデータは存在しないか、先のステータスに進んだ可能性があります」みたいな表示ができそうなんですが。

あと、Userに関するテーブルを一つ追加して、StateとUserを繋ぐテーブルを一つ追加します。それとDataに関しては最初に登録した人の情報を追加します

ってことでERDを書けば何をやろうとしてるか多分判ると思いますが、さくっと「ぶり内部用ACLを作るつもりです」

いいですね。(まだ使ってないですが)ハリセンみたいなデシジョンテーブルのイメージですか?
期待しています。

ActivityとデータとUserの関係をプログラマに制御させることはよっぽどメリットがない限りバグの原因になりかねないので多分しないです。

そうですか...。残念。

とりあえず今の仕様をベースに何ができて何ができないのか、自分が何がほしいのかをもうちょっと整理してみますね。