I just posted in another thread [1] my use case. Basically I will add point 4 to your list:
4. A jexl method invocation will need to have in the context an object instance to be used. Just to be clear with my usecase: The http-call comes, then I instantiate a Service instance that holds an Executor per session. This Service Instance class is supposed to insert itself in the exec context because the class has (for example in my case) a boolean method that will execute all specific tasks and return true upon success and the method will be used by jexl parser to evaluate a post-condition. Thanks, Nestor [1] [SCXML] patterns for bridging --- Fasih <[EMAIL PROTECTED]> wrote: > I see, in my use-case there are multiple SCXML docs > and multiple Executors, > that's why the confusion. Anyways, so, you have one > SCXML doc which is > traversed/executed by multiple execs. These execs > try to insert some data in > the scInstance's or their own rootContext so that it > can be evaluated by > SCXML. > > I know of two points where a user code is called. > 1. Initialisation: Here you have a handle to > rootContext as well as Exec. I > mean this is the point you do exec.setRootContext() > so, you wouldnt need the > scIntance to get the root context > 2. As a state-transition in a custom action: Here > you get scInstance as an > argument. > 3. As a state-event notified through SCXML Listener. > > What is your use-case, where does your code come in? > I am not sure if I will > be able to help. But it would be helpful to others > to know the various > use-cases it can be used in. > > +Fasih > > ----- Original Message ----- > From: "Nestor Urquiza" <[EMAIL PROTECTED]> > To: "Jakarta Commons Users List" > <[email protected]> > Sent: Wednesday, April 19, 2006 8:08 PM > Subject: Re: [scxml] SCXMLExecutor#getSCInstance ... > any chance to make it > public? > > > >I am afraid it does not do what I want. > > I have only one SCXML object (doc) for my whole > > application but several Executors (exec). > > The code below is adding data to the doc instead > of > > adding data to the root context (rootCtx) that is > > unique per Executor. > > Take a look at [1] below and you will see what I > mean > > ... I am just trying to make my code able to set > > variables that can be tested in conditions > (guards) > > within the sxcml file for example: > > > > Context context = new ELContext(); > > // Say we have an instance 'foo' of type Foo > which > > // has a property 'bar' of type String > > context.set("foo", foo); > > > > for the statement --> Evaluator evaluator = new > > ELEvaluator(); in the scxml we could have: > > <if cond="${foo.bar eq barString}"); > > > > for the statement --> Evaluator evaluator = new > > JexlEvaluator(); in the scxml we could have: > > <if cond="foo.bar eq barString"); > > > > and in both cases the condition will be true only > if > > (foo.bar=="barString") > > > > Hope now in clearer ... or still I am missing > > something??? > > > > Thanks a lot! > > > > --- Fasih <[EMAIL PROTECTED]> > wrote: > > > >> Sorry, > >> I removed a few lines from the code. > >> Let me re-paste the snippet, as is in my code: > >> > >> exec = new SCXMLExecutor(evaluator, ed, trc); > >> exec.addListener(doc, trc); > >> exec.setSuperStep(true); > >> exec.setRootContext(rootCtx); > >> exec.setStateMachine(doc); > >> Data scenarioData = new Data(); > >> scenarioData.setName(SCENARIO_ID_PARAM); > >> scenarioData.setExpr("'"+id+"'"); > >> doc.getDatamodel().addData(scenarioData); > >> > >> If I understand you correctly, the line > >> exec.setStateMachine(doc); does the > >> trick you are looking for! > >> > >> By the way, you can look at the code from SVN. I > >> couldn't find much > >> documentation, the code itself is the best guide. > >> > >> +Fasih > >> > >> ----- Original Message ----- > >> From: "Nestor Urquiza" <[EMAIL PROTECTED]> > >> To: "Jakarta Commons Users List" > >> <[email protected]> > >> Sent: Wednesday, April 19, 2006 5:41 PM > >> Subject: Re: [scxml] SCXMLExecutor#getSCInstance > ... > >> any chance to make it > >> public? > >> > >> > >> > Hey thanks for replying, > >> > I see your code is adding data to data model > which > >> is > >> > related to the SCXML object. However I think I > do > >> not > >> > understand how this map to the specific > Executor. > >> In > >> > other words I am trying to set within my > specific > >> code > >> > variables that are in the root context which in > >> turns > >> > is defined in a per Executor basis and not in a > >> per > >> > SCXML instance. > >> > Could you please be more explicit or point me > to a > >> > place in the documentation where this is > >> explained? > >> > From [1] I see that variables to be used within > >> the > >> > scxml file are supposed to be handled thru a > >> Context > >> > instance. > >> > Thanks a lot, > >> > Nestor > >> > > >> > > > [1]http://jakarta.apache.org/commons/sandbox/scxml/api-notes/side-effect-el.html > >> > > >> > --- Fasih <[EMAIL PROTECTED]> > >> wrote: > >> > > >> >> Yup, > >> >> I have done exactly the same thing > >> >> > >> >> exec = new SCXMLExecutor(evaluator, ed, trc); > >> >> Data scenarioData = new Data(); > >> >> scenarioData.setName(SCENARIO_ID_PARAM); > >> >> scenarioData.setExpr("'"+id+"'"); > >> >> doc.getDatamodel().addData(scenarioData); > >> >> > >> >> I guess that should answer your question. > >> >> > >> >> +Fasih > >> >> > >> >> ----- Original Message ----- > >> >> From: "Nestor Urquiza" <[EMAIL PROTECTED]> > >> >> To: "Jakarta Commons Users List" > >> >> <[email protected]> > >> >> Sent: Wednesday, April 19, 2006 5:03 PM > >> >> Subject: [scxml] SCXMLExecutor#getSCInstance > ... > >> any > >> >> chance to make it > >> >> public? > >> >> > >> >> > >> >> > Hello, > >> >> > I am planning to store just the > SCXMLExecutor > >> in a > >> >> per > >> >> > session basis. Then of course I need to have > >> >> access > >> >> > from my "bridge" to > SCInstance#getRootContext > >> to > >> >> > obtain the context needed to set variables > from > >> my > >> >> > specific-code. > >> >> > The problem is right now the > >> >> > SCXMLExecutor#getSCInstance has package > access > >> >> > Can we make it public? Or there is a better > way > >> to > >> >> > accomplish what I am trying to do??? > >> >> > Thanks a lot! > >> >> > > >> >> > > >> > __________________________________________________ > >> >> > Do You Yahoo!? > >> >> > Tired of spam? Yahoo! Mail has the best > spam > >> >> protection around > >> >> > http://mail.yahoo.com > >> >> > > >> >> > > >> >> > >> > > >> > > > --------------------------------------------------------------------- > >> >> > To unsubscribe, e-mail: > >> >> [EMAIL PROTECTED] > >> >> > For additional commands, e-mail: > >> >> [EMAIL PROTECTED] > >> >> > > >> >> > > >> >> > >> >> > >> >> > >> >> > >> > > >> > > > --------------------------------------------------------------------- > >> >> To unsubscribe, e-mail: > >> >> [EMAIL PROTECTED] > >> >> For additional commands, e-mail: > >> >> [EMAIL PROTECTED] > >> >> > >> >> > >> > > >> > > >> > > __________________________________________________ > >> > Do You Yahoo!? > >> > Tired of spam? Yahoo! Mail has the best spam > >> protection around > >> > http://mail.yahoo.com > >> > > >> > > >> > > > --------------------------------------------------------------------- > >> > To unsubscribe, e-mail: > >> [EMAIL PROTECTED] > >> > For additional commands, e-mail: > >> [EMAIL PROTECTED] > >> > > >> > > >> > >> > >> > >> > >> > > > --------------------------------------------------------------------- > >> To unsubscribe, e-mail: > >> [EMAIL PROTECTED] > >> For additional commands, e-mail: > >> [EMAIL PROTECTED] > >> > >> > > > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > protection around > > http://mail.yahoo.com > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: > [EMAIL PROTECTED] > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
