You can subscribe to this list here.
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 |
Jan
|
Feb
|
Mar
(2) |
Apr
(6) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
(6) |
Feb
(28) |
Mar
(27) |
Apr
(28) |
May
|
Jun
(6) |
Jul
(3) |
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
| 2015 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
(13) |
Aug
|
Sep
|
Oct
|
Nov
(5) |
Dec
|
| 2016 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(3) |
| 2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(6) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(10) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
| 2021 |
Jan
(9) |
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2023 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2024 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Chris L. <Chr...@md...> - 2014-06-24 12:30:27
|
Dear PLEXIL Support, My simple question for the day is on how to determine that a plan has finished executing. [There is also a hard question, but I'll pose it later in a separate thread.] I am using PLEXIL from within a standalone application (i.e., not using UniversalExec with shared libraries). Currently I start an execution by issuing ExecApplication::addPlan(), and then I check for completion in my external loop by looking for ExecApplication::getApplicationState() != APP_RUNNING. When I test this approach, I can see my final pprint message and with :Node:outcome enabled I can see that the root node in my plan has completed, but getApplicaitonState() continues to return APP_RUNNING into the future. What is the actual check I should use? Or have I perhaps set up the ExecApplication incorrectly, and so it is not behaving as expected? Thanks very much. Chris |
|
From: Dalal, M. (ARC-TI)[S. G. T. I. (S. Inc.)] <mic...@na...> - 2014-04-30 18:15:55
|
You need only ever use "Lookup", which compiles to LookupNow or LookupOnChange depending (completely) on the context. I've added a note on this in the Lookup documentation, which should answer your question.
I'll try to write a small plan that reproduces the behavior you're getting, as I don't have any new ideas at the moment. This could be an opportunity to discover and document an important property (or bug?) of PLEXIL. Any portion of your plan you can send (just to me) will be helpful.
Mike
On Apr 30, 2014, at 10:16 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Mike,
Thanks for the reply. The adapter code is based straight off of the SampleAdapter.cc, so notifyOfExternalEvent should be called when I send a value to SwitchPlanFailed, the command that changes PlanFailed.
I did consider the macro step case, as in the previous issue where I ended up putting a blank 'print' to force the step. I don't think it is the exact same case here. I tried putting the a blank 'print' in, but it didn't work, not to mention that the rest of the code in PlanA has print statements as well. I did check the node diagrams, but I'm not sure if that will help point out the issue. The EXECUTING diagram showed the EndCondition pushing the state back to Executing if it's false, so I tried putting one in for the heck of it to see if it would trigger anything. I also tried using LookupOnChange instead of plain Lookup. No luck. It seems the only thing that gets the state to update is to perform another Lookup on the PlanFailed, whether it is done in Plan A or Plan B.
What does LookupOnChange do versus LookupNow? I assumed the former checks the state if it has changed, but that doesn't seem to be true.
Catherine
From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...<http://nasa.gov>]
Sent: Tuesday, April 29, 2014 2:44 PM
To: Catherine Szeto
Cc: ple...@li...<mailto:ple...@li...>
Subject: Re: [plexil-support] When are Lookups checked for Exit and Invariant Conditions?
Catherine,
Is your interface adapter code for the PlanFailed flag calling ExecInterface's notifyOfExternalEvent when the flag changes? If not, that would contribute to the behavior your describe.
Still, this may be another case of the desired behavior being delayed until the plan completes a quiescence cycle or macro step. Namely, the Exit condition is not checked "immediately" when the flag changes because the plan execution has not yet quiesced, i.e. there are pending node transitions in progress. Your inserting the 'pprint' (or any other command) after that library call effectively creates a macro step boundary.
Another solution, not great but at least clear, is to enclose the code following the library call in "if not plan failed…".
Time lookups can behave differently because the interface adapter (provided by the PLEXIL framework) effectively triggers a new macro step when the time updates. (Though I'm not sure a time lookup in this context would make any difference).
I agree this is an unintuitive and complicated aspect of PLEXIL. The node transition diagrams (an appendix section in the documentation) are helpful (even essential) for understanding PLEXIL behavior at this level, yet they only describe the atomic steps of execution (see the PLEXIL semantics chapter).
I'll try to think of a better way we can explain these kinds of plan behaviors.
Mike
On Apr 29, 2014, at 10:33 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>>
wrote:
Hello,
When I use a Lookup(time,0.1) in a Exit or Invariant Condition, I've found the result to reliably abort the plan when the time between a Lookup(time,0.1) and a start time goes beyond a specified time limit. However, the Exit and Invariant Conditions don't work if I use a Boolean variable that can be switched outside of the plan. For example, I have this case:
PlanA:
{
ExitCondition Lookup(PlanFailed) == true;
LibraryCall PlanB();
//PlanB switches PlanFailed to true
//rest of code
}
When PlanB switches PlanFailed to true, I expect PlanA to stop executing, but it doesn't. To debug, I put a pprint to output Lookup(PlanFailed) after the LibraryCall to Plan B. I suppose the Lookup caused the ExitCondition to update, because PlanA stopped executing when I put that pprint there.
I noticed this part in the reference:
"The second context for lookups is the synchronous context implied by an action's check conditions (Pre, Post, Invariant) and its body. In these contexts, a lookup is processed on demand, that is, its value is fetched at specific points in execution of the action."
I thought ExitCondition and InvariantCondition would constantly check the Lookup(PlanFailed), but that doesn't seem to be the case. Is something like my pprint the only way to get the Exit or Invariant Conditions to recheck a Boolean Lookup like Lookup(PlanFailed)?
Catherine
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos. Get
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
|
|
From: Catherine S. <Cat...@ti...> - 2014-04-30 17:16:55
|
Mike,
Thanks for the reply. The adapter code is based straight off of the SampleAdapter.cc, so notifyOfExternalEvent should be called when I send a value to SwitchPlanFailed, the command that changes PlanFailed.
I did consider the macro step case, as in the previous issue where I ended up putting a blank 'print' to force the step. I don't think it is the exact same case here. I tried putting the a blank 'print' in, but it didn't work, not to mention that the rest of the code in PlanA has print statements as well. I did check the node diagrams, but I'm not sure if that will help point out the issue. The EXECUTING diagram showed the EndCondition pushing the state back to Executing if it's false, so I tried putting one in for the heck of it to see if it would trigger anything. I also tried using LookupOnChange instead of plain Lookup. No luck. It seems the only thing that gets the state to update is to perform another Lookup on the PlanFailed, whether it is done in Plan A or Plan B.
What does LookupOnChange do versus LookupNow? I assumed the former checks the state if it has changed, but that doesn't seem to be true.
Catherine
From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...]
Sent: Tuesday, April 29, 2014 2:44 PM
To: Catherine Szeto
Cc: ple...@li...
Subject: Re: [plexil-support] When are Lookups checked for Exit and Invariant Conditions?
Catherine,
Is your interface adapter code for the PlanFailed flag calling ExecInterface's notifyOfExternalEvent when the flag changes? If not, that would contribute to the behavior your describe.
Still, this may be another case of the desired behavior being delayed until the plan completes a quiescence cycle or macro step. Namely, the Exit condition is not checked "immediately" when the flag changes because the plan execution has not yet quiesced, i.e. there are pending node transitions in progress. Your inserting the 'pprint' (or any other command) after that library call effectively creates a macro step boundary.
Another solution, not great but at least clear, is to enclose the code following the library call in "if not plan failed...".
Time lookups can behave differently because the interface adapter (provided by the PLEXIL framework) effectively triggers a new macro step when the time updates. (Though I'm not sure a time lookup in this context would make any difference).
I agree this is an unintuitive and complicated aspect of PLEXIL. The node transition diagrams (an appendix section in the documentation) are helpful (even essential) for understanding PLEXIL behavior at this level, yet they only describe the atomic steps of execution (see the PLEXIL semantics chapter).
I'll try to think of a better way we can explain these kinds of plan behaviors.
Mike
On Apr 29, 2014, at 10:33 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>>
wrote:
Hello,
When I use a Lookup(time,0.1) in a Exit or Invariant Condition, I've found the result to reliably abort the plan when the time between a Lookup(time,0.1) and a start time goes beyond a specified time limit. However, the Exit and Invariant Conditions don't work if I use a Boolean variable that can be switched outside of the plan. For example, I have this case:
PlanA:
{
ExitCondition Lookup(PlanFailed) == true;
LibraryCall PlanB();
//PlanB switches PlanFailed to true
//rest of code
}
When PlanB switches PlanFailed to true, I expect PlanA to stop executing, but it doesn't. To debug, I put a pprint to output Lookup(PlanFailed) after the LibraryCall to Plan B. I suppose the Lookup caused the ExitCondition to update, because PlanA stopped executing when I put that pprint there.
I noticed this part in the reference:
"The second context for lookups is the synchronous context implied by an action's check conditions (Pre, Post, Invariant) and its body. In these contexts, a lookup is processed on demand, that is, its value is fetched at specific points in execution of the action."
I thought ExitCondition and InvariantCondition would constantly check the Lookup(PlanFailed), but that doesn't seem to be the case. Is something like my pprint the only way to get the Exit or Invariant Conditions to recheck a Boolean Lookup like Lookup(PlanFailed)?
Catherine
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos. Get
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
|
|
From: Dalal, M. (ARC-TI)[S. G. T. I. (S. Inc.)] <mic...@na...> - 2014-04-29 19:43:40
|
Catherine,
Is your interface adapter code for the PlanFailed flag calling ExecInterface's notifyOfExternalEvent when the flag changes? If not, that would contribute to the behavior your describe.
Still, this may be another case of the desired behavior being delayed until the plan completes a quiescence cycle or macro step. Namely, the Exit condition is not checked "immediately" when the flag changes because the plan execution has not yet quiesced, i.e. there are pending node transitions in progress. Your inserting the 'pprint' (or any other command) after that library call effectively creates a macro step boundary.
Another solution, not great but at least clear, is to enclose the code following the library call in "if not plan failed…".
Time lookups can behave differently because the interface adapter (provided by the PLEXIL framework) effectively triggers a new macro step when the time updates. (Though I'm not sure a time lookup in this context would make any difference).
I agree this is an unintuitive and complicated aspect of PLEXIL. The node transition diagrams (an appendix section in the documentation) are helpful (even essential) for understanding PLEXIL behavior at this level, yet they only describe the atomic steps of execution (see the PLEXIL semantics chapter).
I'll try to think of a better way we can explain these kinds of plan behaviors.
Mike
On Apr 29, 2014, at 10:33 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>>
wrote:
Hello,
When I use a Lookup(time,0.1) in a Exit or Invariant Condition, I've found the result to reliably abort the plan when the time between a Lookup(time,0.1) and a start time goes beyond a specified time limit. However, the Exit and Invariant Conditions don't work if I use a Boolean variable that can be switched outside of the plan. For example, I have this case:
PlanA:
{
ExitCondition Lookup(PlanFailed) == true;
LibraryCall PlanB();
//PlanB switches PlanFailed to true
//rest of code
}
When PlanB switches PlanFailed to true, I expect PlanA to stop executing, but it doesn't. To debug, I put a pprint to output Lookup(PlanFailed) after the LibraryCall to Plan B. I suppose the Lookup caused the ExitCondition to update, because PlanA stopped executing when I put that pprint there.
I noticed this part in the reference:
"The second context for lookups is the synchronous context implied by an action's check conditions (Pre, Post, Invariant) and its body. In these contexts, a lookup is processed on demand, that is, its value is fetched at specific points in execution of the action."
I thought ExitCondition and InvariantCondition would constantly check the Lookup(PlanFailed), but that doesn't seem to be the case. Is something like my pprint the only way to get the Exit or Invariant Conditions to recheck a Boolean Lookup like Lookup(PlanFailed)?
Catherine
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos. Get
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
|
|
From: Catherine S. <Cat...@ti...> - 2014-04-29 17:33:35
|
Hello,
When I use a Lookup(time,0.1) in a Exit or Invariant Condition, I've found the result to reliably abort the plan when the time between a Lookup(time,0.1) and a start time goes beyond a specified time limit. However, the Exit and Invariant Conditions don't work if I use a Boolean variable that can be switched outside of the plan. For example, I have this case:
PlanA:
{
ExitCondition Lookup(PlanFailed) == true;
LibraryCall PlanB();
//PlanB switches PlanFailed to true
//rest of code
}
When PlanB switches PlanFailed to true, I expect PlanA to stop executing, but it doesn't. To debug, I put a pprint to output Lookup(PlanFailed) after the LibraryCall to Plan B. I suppose the Lookup caused the ExitCondition to update, because PlanA stopped executing when I put that pprint there.
I noticed this part in the reference:
"The second context for lookups is the synchronous context implied by an action's check conditions (Pre, Post, Invariant) and its body. In these contexts, a lookup is processed on demand, that is, its value is fetched at specific points in execution of the action."
I thought ExitCondition and InvariantCondition would constantly check the Lookup(PlanFailed), but that doesn't seem to be the case. Is something like my pprint the only way to get the Exit or Invariant Conditions to recheck a Boolean Lookup like Lookup(PlanFailed)?
Catherine
|
|
From: Fry, C. R. {C. (ARC-TI)[S. G. T. I. (S. Inc.)] <chu...@na...> - 2014-04-24 18:19:33
|
At present multiple PLEXIL executives in the same process is not a supported configuration. We hope to support it at some future date. I believe you can achieve the same results by running all plans on one executive. If this is not the case, I'd like to know how it falls short. -- Chuck, PLEXIL team On Apr 24, 2014, at 10:35 AM, Chris LANGLEY <Chr...@md...<mailto:Chr...@md...>> wrote: Dear Plexil Support, Is there a (reasonably) straightforward way to have two or more executives safely running within the same application? My experiments say “no”, but I thought I’d check with you just in case. Regards, Chris ------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform_______________________________________________ plexil-support mailing list ple...@li...<mailto:ple...@li...> https://lists.sourceforge.net/lists/listinfo/plexil-support Chuck Fry Senior Software Engineer Dell | Services, Federal Government Office: 650 604 1882 Mobile: 408 230 2715 M/S 269-1, Building N269/260-7 NASA Ames Research Center Moffett Field, CA 94035-1000 I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me. |
|
From: Chris L. <Chr...@md...> - 2014-04-24 17:35:36
|
Dear Plexil Support, Is there a (reasonably) straightforward way to have two or more executives safely running within the same application? My experiments say "no", but I thought I'd check with you just in case. Regards, Chris |
|
From: Dalal, M. (ARC-TI)[S. G. T. I. (S. Inc.)] <mic...@na...> - 2014-04-23 18:19:22
|
Chris, Glad that helped, and thanks for the feedback. I've added your insight to that N.B. sentence on the wiki. I hope that PLEXIL serves your needs. Let us know if you have more questions. Also, we're always interested in hearing about what people are doing with PLEXIL. Anything you care to share about your project will help us with future direction of the system. Best, Mike Mike, Found it. I was trying to do it the hard way instead of the easy and right way. In my original code snippet, replace the lines: SampleAdapter myAdapter(_app.getInterfaceManagerReference(), configElt); _app.getInterfaceManagerReference().addInterfaceAdapter(myAdapter.getId()); with: REGISTER_ADAPTER(SampleAdapter, “SampleAdapter”); and then Bob’s your uncle. I was confused by the first few paragraphs under “Construction” on the wiki page Advanced PLEXIL Interfacing, particularly the N.B. sentence. Now it makes sense. By the way, kudos on the Debug.cfg mechanism for enabling the debug statements. I very much appreciated them this morning. Thanks for pointing me in the right direction. Best regards, Chris From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...<http://nasa.gov>] Sent: Tuesday, April 22, 2014 5:31 PM To: Chris LANGLEY Cc: ple...@li...<mailto:ple...@li...> Subject: Re: [plexil-support] Building an application with both Executive and Interface Adapters Chris, I believe what you're attempting (an "all in one" Plexil app) should work, though I'm not aware of it being tried before, so there might be some catch we are unaware of. Using the dummy-config.xml, your commands and lookup will indeed be ignored, which explains the UNKNOWN values printed. You need to use an interface config that directs commands and lookups to the SampleAdapter, and you could use the one we've provided. I'm not sure why the initialization is failing when you tried it. Could you please try again with a Debug.cfg file in the directory from which you start PLEXIL, and send us the result? Put the following debug flags in the file: :SampleAdapter :InterfaceAdapter :InterfaceManager The resulting output will be more verbose, but should give a better idea of what's happening. The invalidId error may or may not be related, but let's tackle the problem above first. thanks, Mike On Apr 22, 2014, at 8:07 AM, Chris LANGLEY <Chr...@md...<mailto:Chr...@md...>> wrote: Dear Plexil Support, Another rookie question for you. I am trying to figure out how to build and use an interface adapter from within the same application as the executive (as opposed to linking to a shared library). To that end, I have been modifying UniversalExec.cc to try to use the code from example/sample-app (the “SampleAdapter” class). In summary, it seems that I can build the code, explicitly create a SampleAdapter, but when the plan runs, it doesn’t know where to go for the commands and lookups. The modifications to UniversalExec.cc are as follows: <snip> #include "SampleAdapter.hh" <snip> // construct the application PLEXIL::ExecApplication _app; ///////////////////////////////////////////////////////////////////////////////////////////// // CL: Try to manually add a SampleAdapter adapter std::cout << std::endl << "YO! About to add a SampleAdapter!" << std::endl; SampleAdapter myAdapter(_app.getInterfaceManagerReference(), configElt); _app.getInterfaceManagerReference().addInterfaceAdapter(myAdapter.getId()); std::cout << "Hmm... I wonder if that worked?" << std::endl << std::endl; ///////////////////////////////////////////////////////////////////////////////////////////// // initialize it std::cout << "Initializing application" << std::endl; <snip> I have made one modification to example/sample-app/plans/plan1.pli, which is to make the start condition always true, otherwise it doesn’t do anything (more on this below). When I run the application using this plan, I get: Reading interface configuration from plans/dummy-config.xml YO! About to add a SampleAdapter! [SampleAdapter] created. Hmm... I wonder if that worked? Initializing application [SampleAdapter] initialized. Starting interfaces [SampleAdapter] started. Socket.cpp(62) MARK Starting the exec [Node:transition]Transitioning 'Root' from INACTIVE to WAITING [Node:transition]Transitioning 'Root' from WAITING to EXECUTING [Node:transition]Transitioning 'A' from INACTIVE to WAITING [Node:transition]Transitioning 'Commands' from INACTIVE to WAITING [Node:transition]Transitioning 'H' from INACTIVE to WAITING [Node:transition]Transitioning 'A' from WAITING to EXECUTING ---- Beginning commands... [Node:transition]Transitioning 'A' from EXECUTING to FINISHING [Node:transition]Transitioning 'A' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'A' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'A' is SUCCESS [Node:transition]Transitioning 'Commands' from WAITING to EXECUTING [Node:transition]Transitioning 'B' from INACTIVE to WAITING [Node:transition]Transitioning 'C' from INACTIVE to WAITING [Node:transition]Transitioning 'D' from INACTIVE to WAITING [Node:transition]Transitioning 'E' from INACTIVE to WAITING [Node:transition]Transitioning 'F' from INACTIVE to WAITING [Node:transition]Transitioning 'G' from INACTIVE to WAITING [Node:transition]Transitioning 'B' from WAITING to EXECUTING [Node:transition]Transitioning 'C' from WAITING to EXECUTING [Node:transition]Transitioning 'D' from WAITING to EXECUTING [Node:transition]Transitioning 'E' from WAITING to EXECUTING [Node:transition]Transitioning 'F' from WAITING to EXECUTING [Node:transition]Transitioning 'G' from WAITING to EXECUTING [Node:transition]Transitioning 'B' from EXECUTING to FINISHING [Node:transition]Transitioning 'C' from EXECUTING to FINISHING [Node:transition]Transitioning 'D' from EXECUTING to FINISHING [Node:transition]Transitioning 'E' from EXECUTING to FINISHING [Node:transition]Transitioning 'F' from EXECUTING to FINISHING [Node:transition]Transitioning 'G' from EXECUTING to FINISHING [Node:transition]Transitioning 'B' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'C' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'D' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'E' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'F' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'G' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'B' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'B' is SUCCESS [Node:transition]Transitioning 'C' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'C' is SUCCESS [Node:transition]Transitioning 'D' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'D' is SUCCESS [Node:transition]Transitioning 'E' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'E' is SUCCESS [Node:transition]Transitioning 'F' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'F' is SUCCESS [Node:transition]Transitioning 'G' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'G' is SUCCESS [Node:transition]Transitioning 'Commands' from EXECUTING to FINISHING [Node:transition]Transitioning 'Commands' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'Commands' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'Commands' is SUCCESS [Node:transition]Transitioning 'H' from WAITING to EXECUTING Speed and size: UNKNOWN UNKNOWN [Node:transition]Transitioning 'H' from EXECUTING to FINISHING [Node:transition]Transitioning 'H' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'H' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'H' is SUCCESS [Node:transition]Transitioning 'Root' from EXECUTING to FINISHING [Node:transition]Transitioning 'Root' from FINISHING to ITERATION_ENDED [Node:transition]Transitioning 'Root' from ITERATION_ENDED to FINISHED [Node:outcome]Outcome of 'Root' is FAILURE [SampleAdapter] stopped. [SampleAdapter] shut down. Plan complete, Exec exited without errors ERROR: ../utils/Id.hh:493: Cannot remove an invalid Id<N6PLEXIL16InterfaceAdapterE>. AllInOneSandbox: Error.cc:89: void Error::handleAssert(): Assertion `false' failed. The fact that I get “Speed and size: UNKNOWN UNKNOWN”, and the fact that it habitually fails the notional start conditions in the original .pli, leads me to believe that the Commands and Lookups are going nowhere instead of being handled by SampleAdapter. No idea what the invalid ID is all about. The above result is using the configuration example/dummy-config.xml. If I try the same thing with the configuration example/sample-app/interface-config.xml, I get: YO! About to add a SampleAdapter! [SampleAdapter] created. Hmm... I wonder if that worked? Initializing application ERROR: unable to initialize application ERROR: ../utils/Id.hh:493: Cannot remove an invalid Id<N6PLEXIL16InterfaceAdapterE>. AllInOneSandbox: Error.cc:89: void Error::handleAssert(): Assertion `false' failed. I assume it’s unable to initialize because it’s looking for libSampleAdapter.so, which I am explicitly trying not to use. Same invalid ID error as above. I would really appreciate some help on how to create an all-in-one application. Thanks in advance. Chris Chris Langley MDA 9445 Airport Road Brampton, ON L6S 4J3 (905) 790-2800 x4199 ------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform_______________________________________________ plexil-support mailing list ple...@li...<mailto:ple...@li...> https://lists.sourceforge.net/lists/listinfo/plexil-support |
|
From: Chris L. <Chr...@md...> - 2014-04-23 13:50:53
|
Mike,
Found it. I was trying to do it the hard way instead of the easy and right way.
In my original code snippet, replace the lines:
SampleAdapter myAdapter(_app.getInterfaceManagerReference(), configElt);
_app.getInterfaceManagerReference().addInterfaceAdapter(myAdapter.getId());
with:
REGISTER_ADAPTER(SampleAdapter, "SampleAdapter");
and then Bob's your uncle.
I was confused by the first few paragraphs under "Construction" on the wiki page Advanced PLEXIL Interfacing, particularly the N.B. sentence.
Now it makes sense.
By the way, kudos on the Debug.cfg mechanism for enabling the debug statements. I very much appreciated them this morning.
Thanks for pointing me in the right direction. Best regards,
Chris
From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...]
Sent: Tuesday, April 22, 2014 5:31 PM
To: Chris LANGLEY
Cc: ple...@li...
Subject: Re: [plexil-support] Building an application with both Executive and Interface Adapters
Chris,
I believe what you're attempting (an "all in one" Plexil app) should work, though I'm not aware of it being tried before, so there might be some catch we are unaware of.
Using the dummy-config.xml, your commands and lookup will indeed be ignored, which explains the UNKNOWN values printed.
You need to use an interface config that directs commands and lookups to the SampleAdapter, and you could use the one we've provided. I'm not sure why the initialization is failing when you tried it. Could you please try again with a Debug.cfg file in the directory from which you start PLEXIL, and send us the result? Put the following debug flags in the file:
:SampleAdapter
:InterfaceAdapter
:InterfaceManager
The resulting output will be more verbose, but should give a better idea of what's happening.
The invalidId error may or may not be related, but let's tackle the problem above first.
thanks,
Mike
On Apr 22, 2014, at 8:07 AM, Chris LANGLEY <Chr...@md...<mailto:Chr...@md...>>
wrote:
Dear Plexil Support,
Another rookie question for you.
I am trying to figure out how to build and use an interface adapter from within the same application as the executive (as opposed to linking to a shared library). To that end, I have been modifying UniversalExec.cc to try to use the code from example/sample-app (the "SampleAdapter" class). In summary, it seems that I can build the code, explicitly create a SampleAdapter, but when the plan runs, it doesn't know where to go for the commands and lookups.
The modifications to UniversalExec.cc are as follows:
<snip>
#include "SampleAdapter.hh"
<snip>
// construct the application
PLEXIL::ExecApplication _app;
/////////////////////////////////////////////////////////////////////////////////////////////
// CL: Try to manually add a SampleAdapter adapter
std::cout << std::endl << "YO! About to add a SampleAdapter!" << std::endl;
SampleAdapter myAdapter(_app.getInterfaceManagerReference(), configElt);
_app.getInterfaceManagerReference().addInterfaceAdapter(myAdapter.getId());
std::cout << "Hmm... I wonder if that worked?" << std::endl << std::endl;
/////////////////////////////////////////////////////////////////////////////////////////////
// initialize it
std::cout << "Initializing application" << std::endl;
<snip>
I have made one modification to example/sample-app/plans/plan1.pli, which is to make the start condition always true, otherwise it doesn't do anything (more on this below). When I run the application using this plan, I get:
Reading interface configuration from plans/dummy-config.xml
YO! About to add a SampleAdapter!
[SampleAdapter] created.
Hmm... I wonder if that worked?
Initializing application
[SampleAdapter] initialized.
Starting interfaces
[SampleAdapter] started.
Socket.cpp(62) MARK
Starting the exec
[Node:transition]Transitioning 'Root' from INACTIVE to WAITING
[Node:transition]Transitioning 'Root' from WAITING to EXECUTING
[Node:transition]Transitioning 'A' from INACTIVE to WAITING
[Node:transition]Transitioning 'Commands' from INACTIVE to WAITING
[Node:transition]Transitioning 'H' from INACTIVE to WAITING
[Node:transition]Transitioning 'A' from WAITING to EXECUTING
---- Beginning commands...
[Node:transition]Transitioning 'A' from EXECUTING to FINISHING
[Node:transition]Transitioning 'A' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'A' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'A' is SUCCESS
[Node:transition]Transitioning 'Commands' from WAITING to EXECUTING
[Node:transition]Transitioning 'B' from INACTIVE to WAITING
[Node:transition]Transitioning 'C' from INACTIVE to WAITING
[Node:transition]Transitioning 'D' from INACTIVE to WAITING
[Node:transition]Transitioning 'E' from INACTIVE to WAITING
[Node:transition]Transitioning 'F' from INACTIVE to WAITING
[Node:transition]Transitioning 'G' from INACTIVE to WAITING
[Node:transition]Transitioning 'B' from WAITING to EXECUTING
[Node:transition]Transitioning 'C' from WAITING to EXECUTING
[Node:transition]Transitioning 'D' from WAITING to EXECUTING
[Node:transition]Transitioning 'E' from WAITING to EXECUTING
[Node:transition]Transitioning 'F' from WAITING to EXECUTING
[Node:transition]Transitioning 'G' from WAITING to EXECUTING
[Node:transition]Transitioning 'B' from EXECUTING to FINISHING
[Node:transition]Transitioning 'C' from EXECUTING to FINISHING
[Node:transition]Transitioning 'D' from EXECUTING to FINISHING
[Node:transition]Transitioning 'E' from EXECUTING to FINISHING
[Node:transition]Transitioning 'F' from EXECUTING to FINISHING
[Node:transition]Transitioning 'G' from EXECUTING to FINISHING
[Node:transition]Transitioning 'B' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'C' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'D' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'E' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'F' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'G' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'B' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'B' is SUCCESS
[Node:transition]Transitioning 'C' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'C' is SUCCESS
[Node:transition]Transitioning 'D' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'D' is SUCCESS
[Node:transition]Transitioning 'E' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'E' is SUCCESS
[Node:transition]Transitioning 'F' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'F' is SUCCESS
[Node:transition]Transitioning 'G' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'G' is SUCCESS
[Node:transition]Transitioning 'Commands' from EXECUTING to FINISHING
[Node:transition]Transitioning 'Commands' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'Commands' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'Commands' is SUCCESS
[Node:transition]Transitioning 'H' from WAITING to EXECUTING
Speed and size: UNKNOWN UNKNOWN
[Node:transition]Transitioning 'H' from EXECUTING to FINISHING
[Node:transition]Transitioning 'H' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'H' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'H' is SUCCESS
[Node:transition]Transitioning 'Root' from EXECUTING to FINISHING
[Node:transition]Transitioning 'Root' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'Root' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'Root' is FAILURE
[SampleAdapter] stopped.
[SampleAdapter] shut down.
Plan complete, Exec exited without errors
ERROR: ../utils/Id.hh:493: Cannot remove an invalid Id<N6PLEXIL16InterfaceAdapterE>.
AllInOneSandbox: Error.cc:89: void Error::handleAssert(): Assertion `false' failed.
The fact that I get "Speed and size: UNKNOWN UNKNOWN", and the fact that it habitually fails the notional start conditions in the original .pli, leads me to believe that the Commands and Lookups are going nowhere instead of being handled by SampleAdapter. No idea what the invalid ID is all about.
The above result is using the configuration example/dummy-config.xml. If I try the same thing with the configuration example/sample-app/interface-config.xml, I get:
YO! About to add a SampleAdapter!
[SampleAdapter] created.
Hmm... I wonder if that worked?
Initializing application
ERROR: unable to initialize application
ERROR: ../utils/Id.hh:493: Cannot remove an invalid Id<N6PLEXIL16InterfaceAdapterE>.
AllInOneSandbox: Error.cc:89: void Error::handleAssert(): Assertion `false' failed.
I assume it's unable to initialize because it's looking for libSampleAdapter.so, which I am explicitly trying not to use. Same invalid ID error as above.
I would really appreciate some help on how to create an all-in-one application. Thanks in advance.
Chris
Chris Langley
MDA
9445 Airport Road
Brampton, ON
L6S 4J3
(905) 790-2800 x4199
------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
|
|
From: Dalal, M. (ARC-TI)[S. G. T. I. (S. Inc.)] <mic...@na...> - 2014-04-22 21:31:38
|
Chris,
I believe what you're attempting (an "all in one" Plexil app) should work, though I'm not aware of it being tried before, so there might be some catch we are unaware of.
Using the dummy-config.xml, your commands and lookup will indeed be ignored, which explains the UNKNOWN values printed.
You need to use an interface config that directs commands and lookups to the SampleAdapter, and you could use the one we've provided. I'm not sure why the initialization is failing when you tried it. Could you please try again with a Debug.cfg file in the directory from which you start PLEXIL, and send us the result? Put the following debug flags in the file:
:SampleAdapter
:InterfaceAdapter
:InterfaceManager
The resulting output will be more verbose, but should give a better idea of what's happening.
The invalidId error may or may not be related, but let's tackle the problem above first.
thanks,
Mike
On Apr 22, 2014, at 8:07 AM, Chris LANGLEY <Chr...@md...<mailto:Chr...@md...>>
wrote:
Dear Plexil Support,
Another rookie question for you.
I am trying to figure out how to build and use an interface adapter from within the same application as the executive (as opposed to linking to a shared library). To that end, I have been modifying UniversalExec.cc to try to use the code from example/sample-app (the “SampleAdapter” class). In summary, it seems that I can build the code, explicitly create a SampleAdapter, but when the plan runs, it doesn’t know where to go for the commands and lookups.
The modifications to UniversalExec.cc are as follows:
<snip>
#include "SampleAdapter.hh"
<snip>
// construct the application
PLEXIL::ExecApplication _app;
/////////////////////////////////////////////////////////////////////////////////////////////
// CL: Try to manually add a SampleAdapter adapter
std::cout << std::endl << "YO! About to add a SampleAdapter!" << std::endl;
SampleAdapter myAdapter(_app.getInterfaceManagerReference(), configElt);
_app.getInterfaceManagerReference().addInterfaceAdapter(myAdapter.getId());
std::cout << "Hmm... I wonder if that worked?" << std::endl << std::endl;
/////////////////////////////////////////////////////////////////////////////////////////////
// initialize it
std::cout << "Initializing application" << std::endl;
<snip>
I have made one modification to example/sample-app/plans/plan1.pli, which is to make the start condition always true, otherwise it doesn’t do anything (more on this below). When I run the application using this plan, I get:
Reading interface configuration from plans/dummy-config.xml
YO! About to add a SampleAdapter!
[SampleAdapter] created.
Hmm... I wonder if that worked?
Initializing application
[SampleAdapter] initialized.
Starting interfaces
[SampleAdapter] started.
Socket.cpp(62) MARK
Starting the exec
[Node:transition]Transitioning 'Root' from INACTIVE to WAITING
[Node:transition]Transitioning 'Root' from WAITING to EXECUTING
[Node:transition]Transitioning 'A' from INACTIVE to WAITING
[Node:transition]Transitioning 'Commands' from INACTIVE to WAITING
[Node:transition]Transitioning 'H' from INACTIVE to WAITING
[Node:transition]Transitioning 'A' from WAITING to EXECUTING
---- Beginning commands...
[Node:transition]Transitioning 'A' from EXECUTING to FINISHING
[Node:transition]Transitioning 'A' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'A' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'A' is SUCCESS
[Node:transition]Transitioning 'Commands' from WAITING to EXECUTING
[Node:transition]Transitioning 'B' from INACTIVE to WAITING
[Node:transition]Transitioning 'C' from INACTIVE to WAITING
[Node:transition]Transitioning 'D' from INACTIVE to WAITING
[Node:transition]Transitioning 'E' from INACTIVE to WAITING
[Node:transition]Transitioning 'F' from INACTIVE to WAITING
[Node:transition]Transitioning 'G' from INACTIVE to WAITING
[Node:transition]Transitioning 'B' from WAITING to EXECUTING
[Node:transition]Transitioning 'C' from WAITING to EXECUTING
[Node:transition]Transitioning 'D' from WAITING to EXECUTING
[Node:transition]Transitioning 'E' from WAITING to EXECUTING
[Node:transition]Transitioning 'F' from WAITING to EXECUTING
[Node:transition]Transitioning 'G' from WAITING to EXECUTING
[Node:transition]Transitioning 'B' from EXECUTING to FINISHING
[Node:transition]Transitioning 'C' from EXECUTING to FINISHING
[Node:transition]Transitioning 'D' from EXECUTING to FINISHING
[Node:transition]Transitioning 'E' from EXECUTING to FINISHING
[Node:transition]Transitioning 'F' from EXECUTING to FINISHING
[Node:transition]Transitioning 'G' from EXECUTING to FINISHING
[Node:transition]Transitioning 'B' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'C' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'D' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'E' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'F' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'G' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'B' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'B' is SUCCESS
[Node:transition]Transitioning 'C' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'C' is SUCCESS
[Node:transition]Transitioning 'D' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'D' is SUCCESS
[Node:transition]Transitioning 'E' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'E' is SUCCESS
[Node:transition]Transitioning 'F' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'F' is SUCCESS
[Node:transition]Transitioning 'G' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'G' is SUCCESS
[Node:transition]Transitioning 'Commands' from EXECUTING to FINISHING
[Node:transition]Transitioning 'Commands' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'Commands' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'Commands' is SUCCESS
[Node:transition]Transitioning 'H' from WAITING to EXECUTING
Speed and size: UNKNOWN UNKNOWN
[Node:transition]Transitioning 'H' from EXECUTING to FINISHING
[Node:transition]Transitioning 'H' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'H' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'H' is SUCCESS
[Node:transition]Transitioning 'Root' from EXECUTING to FINISHING
[Node:transition]Transitioning 'Root' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'Root' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'Root' is FAILURE
[SampleAdapter] stopped.
[SampleAdapter] shut down.
Plan complete, Exec exited without errors
ERROR: ../utils/Id.hh:493: Cannot remove an invalid Id<N6PLEXIL16InterfaceAdapterE>.
AllInOneSandbox: Error.cc:89: void Error::handleAssert(): Assertion `false' failed.
The fact that I get “Speed and size: UNKNOWN UNKNOWN”, and the fact that it habitually fails the notional start conditions in the original .pli, leads me to believe that the Commands and Lookups are going nowhere instead of being handled by SampleAdapter. No idea what the invalid ID is all about.
The above result is using the configuration example/dummy-config.xml. If I try the same thing with the configuration example/sample-app/interface-config.xml, I get:
YO! About to add a SampleAdapter!
[SampleAdapter] created.
Hmm... I wonder if that worked?
Initializing application
ERROR: unable to initialize application
ERROR: ../utils/Id.hh:493: Cannot remove an invalid Id<N6PLEXIL16InterfaceAdapterE>.
AllInOneSandbox: Error.cc:89: void Error::handleAssert(): Assertion `false' failed.
I assume it’s unable to initialize because it’s looking for libSampleAdapter.so, which I am explicitly trying not to use. Same invalid ID error as above.
I would really appreciate some help on how to create an all-in-one application. Thanks in advance.
Chris
Chris Langley
MDA
9445 Airport Road
Brampton, ON
L6S 4J3
(905) 790-2800 x4199
------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
|
|
From: Chris L. <Chr...@md...> - 2014-04-22 15:07:48
|
Dear Plexil Support,
Another rookie question for you.
I am trying to figure out how to build and use an interface adapter from within the same application as the executive (as opposed to linking to a shared library). To that end, I have been modifying UniversalExec.cc to try to use the code from example/sample-app (the "SampleAdapter" class). In summary, it seems that I can build the code, explicitly create a SampleAdapter, but when the plan runs, it doesn't know where to go for the commands and lookups.
The modifications to UniversalExec.cc are as follows:
<snip>
#include "SampleAdapter.hh"
<snip>
// construct the application
PLEXIL::ExecApplication _app;
/////////////////////////////////////////////////////////////////////////////////////////////
// CL: Try to manually add a SampleAdapter adapter
std::cout << std::endl << "YO! About to add a SampleAdapter!" << std::endl;
SampleAdapter myAdapter(_app.getInterfaceManagerReference(), configElt);
_app.getInterfaceManagerReference().addInterfaceAdapter(myAdapter.getId());
std::cout << "Hmm... I wonder if that worked?" << std::endl << std::endl;
/////////////////////////////////////////////////////////////////////////////////////////////
// initialize it
std::cout << "Initializing application" << std::endl;
<snip>
I have made one modification to example/sample-app/plans/plan1.pli, which is to make the start condition always true, otherwise it doesn't do anything (more on this below). When I run the application using this plan, I get:
Reading interface configuration from plans/dummy-config.xml
YO! About to add a SampleAdapter!
[SampleAdapter] created.
Hmm... I wonder if that worked?
Initializing application
[SampleAdapter] initialized.
Starting interfaces
[SampleAdapter] started.
Socket.cpp(62) MARK
Starting the exec
[Node:transition]Transitioning 'Root' from INACTIVE to WAITING
[Node:transition]Transitioning 'Root' from WAITING to EXECUTING
[Node:transition]Transitioning 'A' from INACTIVE to WAITING
[Node:transition]Transitioning 'Commands' from INACTIVE to WAITING
[Node:transition]Transitioning 'H' from INACTIVE to WAITING
[Node:transition]Transitioning 'A' from WAITING to EXECUTING
---- Beginning commands...
[Node:transition]Transitioning 'A' from EXECUTING to FINISHING
[Node:transition]Transitioning 'A' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'A' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'A' is SUCCESS
[Node:transition]Transitioning 'Commands' from WAITING to EXECUTING
[Node:transition]Transitioning 'B' from INACTIVE to WAITING
[Node:transition]Transitioning 'C' from INACTIVE to WAITING
[Node:transition]Transitioning 'D' from INACTIVE to WAITING
[Node:transition]Transitioning 'E' from INACTIVE to WAITING
[Node:transition]Transitioning 'F' from INACTIVE to WAITING
[Node:transition]Transitioning 'G' from INACTIVE to WAITING
[Node:transition]Transitioning 'B' from WAITING to EXECUTING
[Node:transition]Transitioning 'C' from WAITING to EXECUTING
[Node:transition]Transitioning 'D' from WAITING to EXECUTING
[Node:transition]Transitioning 'E' from WAITING to EXECUTING
[Node:transition]Transitioning 'F' from WAITING to EXECUTING
[Node:transition]Transitioning 'G' from WAITING to EXECUTING
[Node:transition]Transitioning 'B' from EXECUTING to FINISHING
[Node:transition]Transitioning 'C' from EXECUTING to FINISHING
[Node:transition]Transitioning 'D' from EXECUTING to FINISHING
[Node:transition]Transitioning 'E' from EXECUTING to FINISHING
[Node:transition]Transitioning 'F' from EXECUTING to FINISHING
[Node:transition]Transitioning 'G' from EXECUTING to FINISHING
[Node:transition]Transitioning 'B' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'C' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'D' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'E' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'F' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'G' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'B' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'B' is SUCCESS
[Node:transition]Transitioning 'C' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'C' is SUCCESS
[Node:transition]Transitioning 'D' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'D' is SUCCESS
[Node:transition]Transitioning 'E' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'E' is SUCCESS
[Node:transition]Transitioning 'F' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'F' is SUCCESS
[Node:transition]Transitioning 'G' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'G' is SUCCESS
[Node:transition]Transitioning 'Commands' from EXECUTING to FINISHING
[Node:transition]Transitioning 'Commands' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'Commands' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'Commands' is SUCCESS
[Node:transition]Transitioning 'H' from WAITING to EXECUTING
Speed and size: UNKNOWN UNKNOWN
[Node:transition]Transitioning 'H' from EXECUTING to FINISHING
[Node:transition]Transitioning 'H' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'H' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'H' is SUCCESS
[Node:transition]Transitioning 'Root' from EXECUTING to FINISHING
[Node:transition]Transitioning 'Root' from FINISHING to ITERATION_ENDED
[Node:transition]Transitioning 'Root' from ITERATION_ENDED to FINISHED
[Node:outcome]Outcome of 'Root' is FAILURE
[SampleAdapter] stopped.
[SampleAdapter] shut down.
Plan complete, Exec exited without errors
ERROR: ../utils/Id.hh:493: Cannot remove an invalid Id<N6PLEXIL16InterfaceAdapterE>.
AllInOneSandbox: Error.cc:89: void Error::handleAssert(): Assertion `false' failed.
The fact that I get "Speed and size: UNKNOWN UNKNOWN", and the fact that it habitually fails the notional start conditions in the original .pli, leads me to believe that the Commands and Lookups are going nowhere instead of being handled by SampleAdapter. No idea what the invalid ID is all about.
The above result is using the configuration example/dummy-config.xml. If I try the same thing with the configuration example/sample-app/interface-config.xml, I get:
YO! About to add a SampleAdapter!
[SampleAdapter] created.
Hmm... I wonder if that worked?
Initializing application
ERROR: unable to initialize application
ERROR: ../utils/Id.hh:493: Cannot remove an invalid Id<N6PLEXIL16InterfaceAdapterE>.
AllInOneSandbox: Error.cc:89: void Error::handleAssert(): Assertion `false' failed.
I assume it's unable to initialize because it's looking for libSampleAdapter.so, which I am explicitly trying not to use. Same invalid ID error as above.
I would really appreciate some help on how to create an all-in-one application. Thanks in advance.
Chris
Chris Langley
MDA
9445 Airport Road
Brampton, ON
L6S 4J3
(905) 790-2800 x4199
|
|
From: Catherine S. <Cat...@ti...> - 2014-04-10 13:52:51
|
Thank you, this was helpful information. I'll replace the while loops with RepeatConditions in this case. Catherine From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...] Sent: Wednesday, April 09, 2014 1:39 PM To: Catherine Szeto Cc: ple...@li... Subject: Re: [plexil-support] Possible Concurrence bug Catherine, The use of While in your code sample below seems reasonable. While loops can be easier to understand than nodes with explicit Repeat conditions. However, like most of the other non-core PLEXIL constructs (which are purely syntactic sugar), the While loop incurs some overhead in extra nodes and variables. So using Repeat directly will always be more efficient, though you need to consider the tradeoff with coding ease and readability. Mike On Apr 9, 2014, at 7:15 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote: Thanks Mike, that does clear things up. We did have an earlier conversation over Concurrence, though the situation was slightly different. In the previous conversation, you suggested that a StartCondition would be better for a node that is monitoring another node. It worked great for that situation, but the difference is that the Monitor node here must be able to execute multiple times, i.e. not just execute once and be done. That's why we put in the while loops. Would using RepeatConditions instead of while loops make any difference in the back-end of the PLEXIL, even though on the outside it seems to perform exactly the same way as the while loop? Any other ideas to make this situation more "Plexil-efficient" would be welcome as well. Catherine From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...<http://nasa.gov>] Sent: Tuesday, April 08, 2014 3:58 PM To: Catherine Szeto Cc: ple...@li...<mailto:ple...@li...> Subject: Re: [plexil-support] Possible Concurrence bug Catherine, I'm guessing that, without a print statement or any other command, at least one of your While loops was "spinning", and effectively blocking the executive. It's easy to imagine that "concurrence" suggests truly parallel execution, but PLEXIL is single-threaded, and if one node has an indefinite Repeat (which is what While compiles to), that node tree, and only that one, will keep executing until the next Macro step. A Macro step is a synchronous interaction with the external world, such as a command or lookup (see the Semantics chapter, and an article on synchronous languages, for more info). Your empty 'pprint' effectively forces a Macro step. >From a design level, polling loops are inefficient. PLEXIL excels at waiting (monitoring), which is hard to do in many other languages. Hope this helps, Mike On Apr 8, 2014, at 11:00 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote: Hello, I noticed that some unusual behavior with Concurrence which may indicate a bug somewhere. Here is my pseudocode: Concurrence { Monitor: { while( MainKill == false) { //pprint("Monitor Cds Iteration"); MonitorCds: { PreCondition ...; //Calls MonitorCds plan } }//end of while loop }//end of Monitor Operations: { while( MainKill == false) { //pprint("Main Loop Iteration"); }//end of while loop Concurrence {...Can call a variety of plans depending on what is issued from UI..} }//end of Operations }//end of Concurrence Originally we only had Operations which ran fine, but then we needed two while loops running simultaneously and constantly so we used Concurrence. Here is the bizarre behavior I noticed while experimenting with this structure: While loops as originally done -- no response from UI RepeatCondition instead of while loop -- exact same behavior as above I used pprint statements to try to debug the issue. I placed the statements where I have them commented out in my pseudo code. pprint statement at every while loop iteration -- normal, expected behavior, but since the iterations are quick this results in a lot of output print statements. pprint statement at every while loop iteration at time interval of 60 sec -- very slow response from plans called by UI pprint statement at every while loop iteration at time interval of 10 sec -- quicker response than the 60 sec interval test, but still slow. Resolution: I eventually resolved the issue by issuing a blank print statement (print("")) at every loop iteration for both while loops. I now get the normal behavior as I expected. Catherine ------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees_______________________________________________ plexil-support mailing list ple...@li...<mailto:ple...@li...> https://lists.sourceforge.net/lists/listinfo/plexil-support |
|
From: Dalal, M. (ARC-TI)[S. G. T. I. (S. Inc.)] <mic...@na...> - 2014-04-09 18:38:56
|
Catherine, The use of While in your code sample below seems reasonable. While loops can be easier to understand than nodes with explicit Repeat conditions. However, like most of the other non-core PLEXIL constructs (which are purely syntactic sugar), the While loop incurs some overhead in extra nodes and variables. So using Repeat directly will always be more efficient, though you need to consider the tradeoff with coding ease and readability. Mike On Apr 9, 2014, at 7:15 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote: Thanks Mike, that does clear things up. We did have an earlier conversation over Concurrence, though the situation was slightly different. In the previous conversation, you suggested that a StartCondition would be better for a node that is monitoring another node. It worked great for that situation, but the difference is that the Monitor node here must be able to execute multiple times, i.e. not just execute once and be done. That's why we put in the while loops. Would using RepeatConditions instead of while loops make any difference in the back-end of the PLEXIL, even though on the outside it seems to perform exactly the same way as the while loop? Any other ideas to make this situation more "Plexil-efficient" would be welcome as well. Catherine From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...<http://nasa.gov>] Sent: Tuesday, April 08, 2014 3:58 PM To: Catherine Szeto Cc: ple...@li...<mailto:ple...@li...> Subject: Re: [plexil-support] Possible Concurrence bug Catherine, I'm guessing that, without a print statement or any other command, at least one of your While loops was "spinning", and effectively blocking the executive. It's easy to imagine that "concurrence" suggests truly parallel execution, but PLEXIL is single-threaded, and if one node has an indefinite Repeat (which is what While compiles to), that node tree, and only that one, will keep executing until the next Macro step. A Macro step is a synchronous interaction with the external world, such as a command or lookup (see the Semantics chapter, and an article on synchronous languages, for more info). Your empty 'pprint' effectively forces a Macro step. >From a design level, polling loops are inefficient. PLEXIL excels at waiting (monitoring), which is hard to do in many other languages. Hope this helps, Mike On Apr 8, 2014, at 11:00 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote: Hello, I noticed that some unusual behavior with Concurrence which may indicate a bug somewhere. Here is my pseudocode: Concurrence { Monitor: { while( MainKill == false) { //pprint("Monitor Cds Iteration"); MonitorCds: { PreCondition ...; //Calls MonitorCds plan } }//end of while loop }//end of Monitor Operations: { while( MainKill == false) { //pprint("Main Loop Iteration"); }//end of while loop Concurrence {...Can call a variety of plans depending on what is issued from UI..} }//end of Operations }//end of Concurrence Originally we only had Operations which ran fine, but then we needed two while loops running simultaneously and constantly so we used Concurrence. Here is the bizarre behavior I noticed while experimenting with this structure: While loops as originally done -- no response from UI RepeatCondition instead of while loop -- exact same behavior as above I used pprint statements to try to debug the issue. I placed the statements where I have them commented out in my pseudo code. pprint statement at every while loop iteration -- normal, expected behavior, but since the iterations are quick this results in a lot of output print statements. pprint statement at every while loop iteration at time interval of 60 sec -- very slow response from plans called by UI pprint statement at every while loop iteration at time interval of 10 sec -- quicker response than the 60 sec interval test, but still slow. Resolution: I eventually resolved the issue by issuing a blank print statement (print("")) at every loop iteration for both while loops. I now get the normal behavior as I expected. Catherine ------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees_______________________________________________ plexil-support mailing list ple...@li...<mailto:ple...@li...> https://lists.sourceforge.net/lists/listinfo/plexil-support |
|
From: Catherine S. <Cat...@ti...> - 2014-04-09 14:16:07
|
Thanks Mike, that does clear things up. We did have an earlier conversation over Concurrence, though the situation was slightly different. In the previous conversation, you suggested that a StartCondition would be better for a node that is monitoring another node. It worked great for that situation, but the difference is that the Monitor node here must be able to execute multiple times, i.e. not just execute once and be done. That's why we put in the while loops. Would using RepeatConditions instead of while loops make any difference in the back-end of the PLEXIL, even though on the outside it seems to perform exactly the same way as the while loop? Any other ideas to make this situation more "Plexil-efficient" would be welcome as well.
Catherine
From: Dalal, Michael (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:mic...@na...]
Sent: Tuesday, April 08, 2014 3:58 PM
To: Catherine Szeto
Cc: ple...@li...
Subject: Re: [plexil-support] Possible Concurrence bug
Catherine,
I'm guessing that, without a print statement or any other command, at least one of your While loops was "spinning", and effectively blocking the executive. It's easy to imagine that "concurrence" suggests truly parallel execution, but PLEXIL is single-threaded, and if one node has an indefinite Repeat (which is what While compiles to), that node tree, and only that one, will keep executing until the next Macro step. A Macro step is a synchronous interaction with the external world, such as a command or lookup (see the Semantics chapter, and an article on synchronous languages, for more info). Your empty 'pprint' effectively forces a Macro step.
>From a design level, polling loops are inefficient. PLEXIL excels at waiting (monitoring), which is hard to do in many other languages.
Hope this helps,
Mike
On Apr 8, 2014, at 11:00 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>>
wrote:
Hello,
I noticed that some unusual behavior with Concurrence which may indicate a bug somewhere. Here is my pseudocode:
Concurrence
{
Monitor:
{
while( MainKill == false)
{
//pprint("Monitor Cds Iteration");
MonitorCds:
{
PreCondition ...;
//Calls MonitorCds plan
}
}//end of while loop
}//end of Monitor
Operations:
{
while( MainKill == false)
{
//pprint("Main Loop Iteration");
}//end of while loop
Concurrence
{...Can call a variety of plans depending on what is issued from UI..}
}//end of Operations
}//end of Concurrence
Originally we only had Operations which ran fine, but then we needed two while loops running simultaneously and constantly so we used Concurrence.
Here is the bizarre behavior I noticed while experimenting with this structure:
While loops as originally done -- no response from UI
RepeatCondition instead of while loop -- exact same behavior as above
I used pprint statements to try to debug the issue. I placed the statements where I have them commented out in my pseudo code.
pprint statement at every while loop iteration -- normal, expected behavior, but since the iterations are quick this results in a lot of output print statements.
pprint statement at every while loop iteration at time interval of 60 sec -- very slow response from plans called by UI
pprint statement at every while loop iteration at time interval of 10 sec -- quicker response than the 60 sec interval test, but still slow.
Resolution: I eventually resolved the issue by issuing a blank print statement (print("")) at every loop iteration for both while loops. I now get the normal behavior as I expected.
Catherine
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
|
|
From: Dalal, M. (ARC-TI)[S. G. T. I. (S. Inc.)] <mic...@na...> - 2014-04-08 20:57:52
|
Catherine,
I'm guessing that, without a print statement or any other command, at least one of your While loops was "spinning", and effectively blocking the executive. It's easy to imagine that "concurrence" suggests truly parallel execution, but PLEXIL is single-threaded, and if one node has an indefinite Repeat (which is what While compiles to), that node tree, and only that one, will keep executing until the next Macro step. A Macro step is a synchronous interaction with the external world, such as a command or lookup (see the Semantics chapter, and an article on synchronous languages, for more info). Your empty 'pprint' effectively forces a Macro step.
>From a design level, polling loops are inefficient. PLEXIL excels at waiting (monitoring), which is hard to do in many other languages.
Hope this helps,
Mike
On Apr 8, 2014, at 11:00 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>>
wrote:
Hello,
I noticed that some unusual behavior with Concurrence which may indicate a bug somewhere. Here is my pseudocode:
Concurrence
{
Monitor:
{
while( MainKill == false)
{
//pprint("Monitor Cds Iteration");
MonitorCds:
{
PreCondition ...;
//Calls MonitorCds plan
}
}//end of while loop
}//end of Monitor
Operations:
{
while( MainKill == false)
{
//pprint("Main Loop Iteration");
}//end of while loop
Concurrence
{...Can call a variety of plans depending on what is issued from UI..}
}//end of Operations
}//end of Concurrence
Originally we only had Operations which ran fine, but then we needed two while loops running simultaneously and constantly so we used Concurrence.
Here is the bizarre behavior I noticed while experimenting with this structure:
While loops as originally done -- no response from UI
RepeatCondition instead of while loop -- exact same behavior as above
I used pprint statements to try to debug the issue. I placed the statements where I have them commented out in my pseudo code.
pprint statement at every while loop iteration -- normal, expected behavior, but since the iterations are quick this results in a lot of output print statements.
pprint statement at every while loop iteration at time interval of 60 sec -- very slow response from plans called by UI
pprint statement at every while loop iteration at time interval of 10 sec -- quicker response than the 60 sec interval test, but still slow.
Resolution: I eventually resolved the issue by issuing a blank print statement (print("")) at every loop iteration for both while loops. I now get the normal behavior as I expected.
Catherine
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
|
|
From: Catherine S. <Cat...@ti...> - 2014-04-08 18:00:59
|
Hello,
I noticed that some unusual behavior with Concurrence which may indicate a bug somewhere. Here is my pseudocode:
Concurrence
{
Monitor:
{
while( MainKill == false)
{
//pprint("Monitor Cds Iteration");
MonitorCds:
{
PreCondition ...;
//Calls MonitorCds plan
}
}//end of while loop
}//end of Monitor
Operations:
{
while( MainKill == false)
{
//pprint("Main Loop Iteration");
}//end of while loop
Concurrence
{...Can call a variety of plans depending on what is issued from UI..}
}//end of Operations
}//end of Concurrence
Originally we only had Operations which ran fine, but then we needed two while loops running simultaneously and constantly so we used Concurrence.
Here is the bizarre behavior I noticed while experimenting with this structure:
While loops as originally done -- no response from UI
RepeatCondition instead of while loop -- exact same behavior as above
I used pprint statements to try to debug the issue. I placed the statements where I have them commented out in my pseudo code.
pprint statement at every while loop iteration -- normal, expected behavior, but since the iterations are quick this results in a lot of output print statements.
pprint statement at every while loop iteration at time interval of 60 sec -- very slow response from plans called by UI
pprint statement at every while loop iteration at time interval of 10 sec -- quicker response than the 60 sec interval test, but still slow.
Resolution: I eventually resolved the issue by issuing a blank print statement (print("")) at every loop iteration for both while loops. I now get the normal behavior as I expected.
Catherine
|
|
From: Fry, C. R. {C. (ARC-TI)[S. G. T. I. (S. Inc.)] <chu...@na...> - 2014-04-04 19:47:20
|
The load-time bug is not in the Plexil 3 distribution - the fix was back-patched from it.
The compiler in Plexil 3 was reimplemented from scratch. It likely has different bugs. It's possible this one carried over. I'll check today.
-- Chuck
On Apr 4, 2014, at 10:07 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
For the record, at the moment I can only have Integer or Real arrays, but not Boolean or String arrays. I'll ask the person who set up the distribution to see if they have ideas. I am currently running the released version of Plexil, but a coworker has the Plexil 3 development version set up. Are these bugs only in the released version or would they possibly be in the Plexil 3 version as well?
Catherine
From: Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:chu...@na...<http://nasa.gov>]
Sent: Thursday, April 03, 2014 4:30 PM
To: Catherine Szeto
Cc: Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)]; ple...@li...<mailto:ple...@li...>
Subject: Re: [plexil-support] Running plan with array?
Yes, I'd expect that is the case if the plan had a constant array of strings.
-- Chuck
On Apr 3, 2014, at 2:24 PM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Could that be related to the TestArray plan not loading at all if it has a String array?
From: Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:chu...@na...<http://nasa.gov/>]
Sent: Thursday, April 03, 2014 2:46 PM
To: Catherine Szeto
Cc: ple...@li...<mailto:ple...@li...>
Subject: Re: [plexil-support] Running plan with array?
I'm guessing that's strictly a permissions problem in the distribution.
-- Chuck
On Apr 3, 2014, at 10:02 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
|
|
From: Catherine S. <Cat...@ti...> - 2014-04-04 17:07:58
|
For the record, at the moment I can only have Integer or Real arrays, but not Boolean or String arrays. I'll ask the person who set up the distribution to see if they have ideas. I am currently running the released version of Plexil, but a coworker has the Plexil 3 development version set up. Are these bugs only in the released version or would they possibly be in the Plexil 3 version as well?
Catherine
From: Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:chu...@na...]
Sent: Thursday, April 03, 2014 4:30 PM
To: Catherine Szeto
Cc: Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)]; ple...@li...
Subject: Re: [plexil-support] Running plan with array?
Yes, I'd expect that is the case if the plan had a constant array of strings.
-- Chuck
On Apr 3, 2014, at 2:24 PM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Could that be related to the TestArray plan not loading at all if it has a String array?
From: Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:chu...@na...<http://nasa.gov/>]
Sent: Thursday, April 03, 2014 2:46 PM
To: Catherine Szeto
Cc: ple...@li...<mailto:ple...@li...>
Subject: Re: [plexil-support] Running plan with array?
I'm guessing that's strictly a permissions problem in the distribution.
-- Chuck
On Apr 3, 2014, at 10:02 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
|
|
From: Fry, C. R. {C. (ARC-TI)[S. G. T. I. (S. Inc.)] <chu...@na...> - 2014-04-03 21:30:20
|
Yes, I'd expect that is the case if the plan had a constant array of strings.
-- Chuck
On Apr 3, 2014, at 2:24 PM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Could that be related to the TestArray plan not loading at all if it has a String array?
From: Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:chu...@na...<http://nasa.gov/>]
Sent: Thursday, April 03, 2014 2:46 PM
To: Catherine Szeto
Cc: ple...@li...<mailto:ple...@li...>
Subject: Re: [plexil-support] Running plan with array?
I'm guessing that's strictly a permissions problem in the distribution.
-- Chuck
On Apr 3, 2014, at 10:02 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
|
|
From: Catherine S. <Cat...@ti...> - 2014-04-03 21:24:12
|
Could that be related to the TestArray plan not loading at all if it has a String array?
From: Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc. (SGT Inc.)] [mailto:chu...@na...]
Sent: Thursday, April 03, 2014 2:46 PM
To: Catherine Szeto
Cc: ple...@li...
Subject: Re: [plexil-support] Running plan with array?
I'm guessing that's strictly a permissions problem in the distribution.
-- Chuck
On Apr 3, 2014, at 10:02 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
|
|
From: Fry, C. R. {C. (ARC-TI)[S. G. T. I. (S. Inc.)] <chu...@na...> - 2014-04-03 19:46:14
|
I'm guessing that's strictly a permissions problem in the distribution.
-- Chuck
On Apr 3, 2014, at 10:02 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
|
|
From: Fry, C. R. {C. (ARC-TI)[S. G. T. I. (S. Inc.)] <chu...@na...> - 2014-04-03 18:48:18
|
Here's your patch. The affected file is src/compilers/plexil/java/plexil/ArrayLiteralNode.java. Apply the one-line patch and do 'make' in src/compilers/plexil .
razor:plexil cfry$ svn diff -r 3349:3350 !$
svn diff -r 3349:3350 java/plexil/ArrayLiteralNode.java
Index: java/plexil/ArrayLiteralNode.java
===================================================================
--- java/plexil/ArrayLiteralNode.java (revision 3349)
+++ java/plexil/ArrayLiteralNode.java (revision 3350)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2011, Universities Space Research Association (USRA).
+/* Copyright (c) 2006-2014, Universities Space Research Association (USRA).
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -178,7 +178,7 @@
// PlexilTreeNode base method
constructXMLBase();
- m_xml.setAttribute("Type", m_dataType.typeName());
+ m_xml.setAttribute("Type", m_dataType.arrayElementType().typeName());
for (int childIdx = 0; childIdx < this.getChildCount(); childIdx++) {
LiteralNode child = (LiteralNode) this.getChild(childIdx);
m_xml.addChild(child.getXML());
razor:plexil cfry$
-- Chuck
On Apr 3, 2014, at 11:24 AM, "Fry, Charles R. {Chuck} (ARC-TI)[Stinger Ghaffarian Technologies Inc.
(SGT Inc.)]" <chu...@na...<mailto:chu...@na...>>
wrote:
As I suspected… this is really a compiler bug. The translation to XML is wrong.
Again, I hope to have a fix later today.
-- Chuck
On Apr 3, 2014, at 10:02 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
|
|
From: Fry, C. R. {C. (ARC-TI)[S. G. T. I. (S. Inc.)] <chu...@na...> - 2014-04-03 18:25:04
|
As I suspected… this is really a compiler bug. The translation to XML is wrong.
Again, I hope to have a fix later today.
-- Chuck
On Apr 3, 2014, at 10:02 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
|
|
From: Fry, C. R. {C. (ARC-TI)[S. G. T. I. (S. Inc.)] <chu...@na...> - 2014-04-03 17:20:46
|
I presume this is in the released PLEXIL 2?
Thanks for catching this bug. This is fixed in the development version, but was not backpatched to the release. We have a simple patch:
razor:plexil cfry$ svn diff src/exec/PlexilXmlParser.cc
Index: src/exec/PlexilXmlParser.cc
===================================================================
--- src/exec/PlexilXmlParser.cc (revision 3160)
+++ src/exec/PlexilXmlParser.cc (working copy)
@@ -824,6 +824,10 @@
s_exprParsers->insert(std::make_pair(string(NODE_FAILURE_TAG) + VAL_TAG, val));
s_exprParsers->insert(std::make_pair(string(NODE_STATE_TAG) + VAL_TAG, val));
s_exprParsers->insert(std::make_pair(string(NODE_COMMAND_HANDLE_TAG) + VAL_TAG, val));
+
+ s_exprParsers->insert(std::make_pair(string(ARRAY_VAL_TAG),
+ new PlexilArrayValueParser()));
+
s_exprParsers->insert(std::make_pair(LOOKUPNOW_TAG,
new PlexilLookupNowParser()));
s_exprParsers->insert(std::make_pair(LOOKUPCHANGE_TAG,
razor:plexil cfry$
Please let us know if you find any additional issues.
-- Chuck
On Apr 3, 2014, at 10:02 AM, Catherine Szeto <Cat...@ti...<mailto:Cat...@ti...>> wrote:
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
------------------------------------------------------------------------------
_______________________________________________
plexil-support mailing list
ple...@li...<mailto:ple...@li...>
https://lists.sourceforge.net/lists/listinfo/plexil-support
Chuck Fry
Senior Software Engineer
Dell | Services, Federal Government
Office: 650 604 1882 Mobile: 408 230 2715
M/S 269-1, Building N269/260-7
NASA Ames Research Center
Moffett Field, CA 94035-1000
I do not speak for Dell, SGT, Code TI, or NASA, nor do they speak for me.
|
|
From: Catherine S. <Cat...@ti...> - 2014-04-03 17:03:08
|
Hello,
I get the following error when I try to execute a plan with an array:
ERROR: :994: XML parsing error: No parser for expression 'ArrayValue'
Error parsing plan from XML:
XML parsing error: No parser for expression 'ArrayValue'
Unable to load plan 'TestArray.plx', exiting
The plan only has these two lines straight from the example:
Real foo[4] = #(0.0 0.0 0.0 0.0);
Real temp = 0.0;
I can run the example AddArray.ple without a problem. Is the error due to something missing from the configuration xml file?
Catherine
|