On 12/12/05, Mike Sparr - www.goomzee.com <[EMAIL PROTECTED]> wrote: > Rahul, > > Your code worked (from your personal snapshot) fine - thanks. <snip/>
OK, thanks for the update :-) > One issue > we're now facing is handling concurrent users from multiple clients. My > goal is to use one scxml doc to manage app flow for all users. <snap/> Indeed, there will usually be only one SCXML document for a particular application task (or flow, or dialog) -- which could be of arbitrary granularity -- yet the per user (or per session) "instances" of the state machine must be able to execute independently. > It looks > like there is one context and it's shared, so if we trigger an event, it > will affect any user. <snip/> Each user should have a separate Commons SCXML engine (or more precisely, an instance of the org.apache.commons.scxml.SCXMLExecutor class) assigned, and the events must be channeled to the appropriate engine for the same user/session. > We have created a HashMap (in memory) to store > key/handle to client for sending response, but are having troubles > dealing with concurrent users and their state. > > For example: > > Web request (state 1, event 3) > IM request (state 2, event 1) > > Can the engine handle that or do you know how best to implement? My > thought was to store state and last event per user, then navigate to > that somehow for their requests. I assume there must be a better way? > <snap/> We have a couple of published Commons SCXML usecases here: http://jakarta.apache.org/commons/sandbox/scxml/usecases.html Both the usecases are examples within a servlet container environment (so similar to what you're attempting), and the SCXMLExecutor instance gets created when needed, then cached and retrieved from the user's session. To summarize: * A SCXML document describes the state machine for a task/flow/dialog in an application. * The org.apache.commons.scxml.model.SCXML class is the representation of the document using the Commons SCXML Java object model. * An appropriately configured SCXMLExecutor instance creates a "live" state machine (or engine) upon which external events may be fired. * SCXMLExecutor instances must be created per user/session and cached throughout the life of the task/flow/dialog. -Rahul > Thanks, > > > Mike > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
