commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rahul Akolkar" <rahul.akol...@gmail.com>
Subject Re: SCXML Templating
Date Thu, 08 Jan 2009 06:37:58 GMT
On Wed, Jan 7, 2009 at 4:45 PM, Lee, Cheryl - ES/RDR -Gil
<Cheryl.Lee@itt.com> wrote:
> Dear All,
>
>
> I have a situation where I need to execute the same set of sequential sub-states from
multiple places, and I would like to reuse an SCXML file multiple times in the same "master"
SCXML file (via the state "src" attribute).  I know there is a problem doing this because
it would result in duplicated state names.  I have studied the tutorial in http://wiki.apache.org/commons/SCXML/Tutorials/Templating,
and the very last paragraph under "A word of caution" I think contains the key to a solution
for me.  It says that the duplicated names "can be avoided by using a param=value after the
URL" as it mangles the URL.  Does anyone have an example usage of this?
>
<snip/>

Not sure what the sentence in question on the wiki means either.

However, lets replay the example, say we have this reusable template
(lets call it template.scxml):

template.scxml:
<scxml ...>

    <state id="foo">
    ...
    </state>

    <state id="bar">
    ...
    </state>

</scxml>

where foo and bar do interesting things that we want to reuse in our
main.scxml. If we reference this static document multiple times like
so:

main.scxml:
<scxml ...>

    <state id="s1" src="template.scxml">
    ...
    </state>

    <state id="s2" src="template.scxml">
    ...
    </state>

</scxml>

we'll get ID clashes (for IDs foo and bar, included twice).

However, if we reference a dynamic resource (such as a JSP, lets call
this template.jsp) which allows us to tweak the IDs like the one
below:

template.jsp:
<%@ page info="SCXML template" %>
<scxml ...>

    <state id="foo${param.suffix}">
    ...
    </state>

    <state id="bar${param.suffix}">
    ...
    </state>

</scxml>

and then we reference the reusable pattern like so in our main.scxml:

main.scxml:
<scxml ...>

    <state id="s1" src="template.jsp?suffix=1">
    ...
    </state>

    <state id="s2" src="template.jsp?suffix=2">
    ...
    </state>

</scxml>

we wouldn't get any ID clashes (since we now have states with ID foo1
and bar1 as children of s1 and foo2 and bar2 as children of s2).

-Rahul

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message