Hi

I am making a change to an existing ActiveRecord-based winforms
application. This involves allowing the user to have several screens
open at once, each of which manages a separate "business
conversation". Each screen instance needs its own SessionScope.

On a different NHibernate project, I've implemented something similar
to Conversation Per Business Transaction (http://
fabiomaulo.blogspot.com/2008/12/conversation-per-business-
transaction.html). In this case we have several long running sessions
that are created, paused, resumed, committed and disposed during a
conversation.

This doesn't seem to be supported by AR SessionScopes. Example
scenario:

1. User views a summary of customers
2. User selects customer Dave to edit, which opens a new customer
details screen (screen 1. A new SessionScope is created for this
conversation
3. User selects customer Mike to edit, which opens a second customer
details screen (screen 2). A separate SessionScope is created for this
conversation
4. User activates details screen 1 and closes it. This disposes the
SessionScope, resulting in a "Tried to unregister a scope that is not
the active one" exception.

As each screen were activated (focussed), the SessionScope it was
using would need to be "promoted" back to being the current scope
(e.g. accessible via SessionScope.Current). The stack-based
SessionScope management in ActiveRecord doesn't currently allow this.

Have people come up against this problem before?

Would it be suitable to change ActiveRecord to permit this scenario?

I'm thinking that a new method SessionScope.Activate could be used to
promote an earlier SessionScope back to "current" position. A
corresponding ActivateRegisteredScope method in
AbstractThreadScopeInfo would clear and recreate the items in the
stack with the newly active SessionScope at the top. I haven't spent a
great deal of time in the AR code, so let me know if I'm missing some
important considerations here.

Cheers.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to