Hi, I am sorry I could not reply before. Then, Using templating thru //state/@src is useful for including reusable FSM as mean of whole states.
XInclude/XML Entities are useful for including chunks of SCXML logic. I am not sure how the first works but seems like commons-scxml would parse just once those states defined within the reusable FSM. For the second one I think it complies with DRY principles, however since including nodes means more processing for either SAX or DOM parser I would predict some performance degradation (the same in comparison to just copying and pasting the bits within the main SCXML file though). The question of course is if SCXML provides a way/tag for real code reuse either templating or functions that can be used "for any arbitrary bits or pieces". I can read from [1] "Note that the <invoke> element may be used to invoke an external SCXML interpreter to execute a different state machine. In this case, the external state machine acts as a set of substates of the invoking state. The behavior is thus similar to a complex state defined with <state> child elements. The most important difference is that in the <invoke> case, the external state machine does not share context with the invoking machine. In particular, the invoked machine cannot access any variables declared in the invoking machine and data can be shared only by being explicitly passed via the <param> element. Furthermore, IDs need not be distinct across the two machines (though they must, of course, be distinct within each machine.) The <invoke> tag thus provides a means of well-encapsulated code reuse." Can anyone offer some snippet of code to solve let us say the following simple example of code reuse? usecase: Build a template/function that returns the name of the pet knowing that: if animal type="dog" then name="Fido" if animal type="cat" then name="Kitty" if animal type="bird" then name="Tweety" if animal type="horse" then name="Trigger" if animal type="cat" then name="Tom" if animal type="pig" then name="Porky" if animal type="fish" then name="Charlie" if animal type="pig" then name="Babe" if animal type="cow" then name="Elsie" if animal type="cat" then name="Puss" Of course using <invoke> and <finalize> it seems to be possible to accomplish this but I am wondering if someone already used them or simply someone can write down the snippet of code that actually works while using of course commons-scxml. Thanks, -Nestor [1] http://www.w3.org/TR/scxml/ --- Rahul Akolkar <[EMAIL PROTECTED]> wrote: > On 11/1/06, Craig McClanahan <[EMAIL PROTECTED]> > wrote: > > On 11/1/06, Nestor Urquiza <[EMAIL PROTECTED]> > wrote: > > > > > > Hello guys, > > > > > > I need to apply DRY ;-) so I do not want to be > > > duplicating SCXML code that is to be included in > many > > > different states. > > > > > > Just wondering about the options we have here: > > > > > > 1)XInclude > > > 2)A special tag from scxml??? > > > 3) Any other idea? > > > > > > XML entities? > > > <snip/> > > This will work well for any abitrary bits and > pieces, the earlier > solution is just for <state>s. But if you choose > this, you'll have to > worry about duplicating state IDs, if the bits and > pieces contain > those. > > -Rahul > > > > Thanks, > > > > > > -Nestor > > > > > > Craig > > > > > > --------------------------------------------------------------------- > 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]
