|
From: Dalal, M. (ARC-TI)[S. G. T. I. (S. Inc.)] <mic...@na...> - 2014-02-28 21:43:35
|
The most helpful documentation in understanding the details of PLEXIL execution, especially when a plan has many interacting Conditions, is the node state transition diagrams found in the appendix of the user documentation on Sourceforge. Unfortunately, the flexibility of PLEXIL comes at a price in complexity -- there are over a dozen diagrams for describing the execution semantics.
But your suggestion is noted. I'll also look into the history of the RepeatCondition-in-root-node problem.
Cheers,
Mike
> This is an interesting idea. The cycling issue might have been the one causing the problems with the StartCondition approach we had. Thanks for noting the issues about the RepeatCondition, as we were beginning to wonder if there were limits to it.
>
> If I can put a suggestion for the plexil documentation, I would like to see more details added for the Conditions. For example, it looks like a node with a StartCondition will be stuck at WAITING until its StartCondition is met, versus SKIPPED like I thought it might be.
>
> Thanks,
> Catherine
>
> -----Original Message-----
> From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...]
> Sent: Friday, February 28, 2014 2:25 PM
> To: Catherine Szeto
> Cc: ple...@li...
> Subject: Re: [plexil-support] Ideas for running a continuous loop that calls other plans when needed?
>
> I just thought of something else. Perhaps Main is just not cycling to catch UI variable changes. Below is one way to induce the cycling within PLEXIL. Note that Main is a Sequence again, with two actions: first a Concurrence to check all the UI variables, and then a Wait.
>
> Like I suggested for the original plan, you can also experiment with the location of the Repeat Condition here, i.e. move it into the sub-plans. I'm now recalling issues we've had with repeat conditions on root nodes. I'd have to check our bug database history for more information.
>
> Hope this helps,
> Mike
>
>
>
> Main:
> {
> RepeatCondition mainOn; //mainOn is always set to true
>
> TestVariables: Concurrence
> {
> PlanA:
> {
> StartCondition Lookup(PlanAUI) == 1;
> SkipCondition Lookup(PlanAUI) != 1;
>
> LibraryCall PlanA();
> //switch PlanAUI back to 0;
> }
>
> // insert PlanB, etc here, following same pattern
>
> } // end TestVariables
>
> Sleep:
> {
> Wait 1.0; // sleep 1.0 time units -- use whatever value makes sense
> }
> } //end of Main
>
>
>
|