On Tue, 7 Nov 2000, jarl van katwijk wrote: > The 2nd is about errors. I think Piper needs some basic form of exception > handling, > this can be just a simple retry of node execution. Maybe the PL already has > something > like this build in. (JeanMarc?). The 3th is event handling. Many applications > only make > sense to execute when there an special situation. > > Anybody has thoughts about these three points I feel missing? For the last two points, here's what we have in Narval: * error handling: an action can output an error element, even if it is not in its prototype. In that case, Narval checks for a special transition in the step's outgoing transitions, with the onError attribute set to 'yes'. If the conditions of this transition can be matched immediately, it is fired and the execution of the plan resumes from that point. Otherwise (or if no onError transitions are found), the plan fails. This error handling behaviour can only occur if the action returned an <error> element, and not if the action raised an exception or if its outputs did not match the prototype: these cases cause the plan to fail. * events: Well, the whole point of having transitions is handling events. Many recipes in Narval will begin with a Basic.NOP action (which does nothing), followed by a transition that will wait for an element to be present in memory, or for a time condition to be matched. This makes it easy to have specialized recipes work in team. For instance, if you consider the Gazo recipe that's described in the Linux Gazette, you'll notice that it doesn't actually read the mail: another recipe does that, and produces <email> elements, which in turn are captured by Gazo. We could have many other recipes working simultaneously on these <email> elements. This feature enables us to use Narval as if we had a rule-based language. Cheers, Alexandre Fayolle -- http://www.logilab.org Narval is the first software agent available as free software (GPL). LOGILAB, Paris (France).