SCOPE A LA CARTE
conversation scopeというのがコンテキストの生存期間としてあると便利かな? と思った昨日ですが、これを、より長い期間の方へ延長するとどうなるだろうと考えた場合、workflow scopeみたいなのもありかなと…*1
つまり長期間→短期間の順でいくと…
- Environment Scope (依存する外部システムなどの存続期間*2 )
- Enterprise Scope (会社が存続する期間/データベースが存在する期間)
- Workflow Scope (数時間〜数ヶ月程度以上のGOALを持つ業務タスクの遂行期間)
- Application Scope (サービス提供期間/アプリケーションが稼動している期間)
- Session Scope (利用者の作業期間/ログイン〜ログアウトの期間)
- Conversation Scope (数分〜数十分程度のGOALを持つ短い業務タスクの遂行期間)
- Request Scope (利用者の指示を遂行する期間*3 )
- Action Scope (指示を細分化した粒度の細かい処理/ActionChain*4の1Action?)
ApplicatoinとSessionは、微妙に毛色が違うような気のせいもしますが…
…それで? と言われるとそれまでです…^^;;;
最近*5、自分の中でContextという言葉が1つのキーワードになっています。Context-Drivenあるいは、Context-Centricな開発やフレームワークってできないかなぁと*6…
Contextという言葉は、まさに文脈によっていろいろなイメージがあると思いますが*7、自分としては Chain of Responsibility パターンにおける主体となるもの*8という捉え方が1つ。これをActive-Contextと呼ぶとします。一方、
先ほど出た7つのScopeに対応するContextがもう1つの捉え方です。これをPassive-Contextと呼ぶとします。
そうすると、Active-Contextがシステム利用者とシステムの間、あるいはシステム間をぐるぐる回りながら、Active-ContextとPassive−Contextの間でデータをやり取りするというイメージが湧いてきたわけです。
これを踏まえ(?) … もう少し具体的に、現在のWebシステムに当てはめて考えると、
- Active-Contextが、ユーザの入力データを受け取ります。(これもResponsibility Chainで)
- Responsibility Chain のトンネルの中に放り込みます。
- 各Chainは以下のような処理を行います
- Passive-Contextに特定スコープのPassive-Contextのデータをコピーしたり
- Active-Contextのデータを処理してActive-Contextに書き戻したり
- Active-Contextから、特定スコープのPassive Contextにデータを書き戻したり
- …などなど
- Active-Contextからユーザ用のビューを作ります。
- 繰り返し
配管作業の要領でビジュアル・コンポーネント指向でアプリケーションが作れたらいいなぁ〜なんて…
DOAのフレーバーが若干…? 現在のWEBシステムをContextで言い換えただけ…? でも、名前重要! イメージ重要! (個人的な)しっくり感重要! なので… なんとなく書いてしまいました…
こんなの100年前からあるよ! とか、このパターンはこんな問題を含みます、みたいな情報があれば、"優しく"コメントしてください ^^;;;
っていうか、文章まとまってなさ杉… 頭の中も整理されていなさ杉…orz