Replies: 8 comments
-
For a more differentiated and transparent implementation I also would extend the flag to be a dictionary tolerate_invalid with respective flags for any type of state element that is tolerated to be invalid. This is something to be discussed. This also become a topic because @doem-an would like to generate state machines more liberal as a expert user by for example tolerate invalid data flows by default to generate more generic library states. In this case the new widget would still collect invalid element and provide an interface to search those but the procedure to solve those would not be forced as described above. Originally created by @Rbelder at 2017-09-19 13:54:48+00:00 (moved from RMC internal repository) |
Beta Was this translation helpful? Give feedback.
-
Can we discuss this in the next RAFCON meeting? Actually I do not like the concept that much. I will talk to Andreas and check his motivation again. Originally created by @sebastian-brunner (Sebastian.Brunner@dlr.de) at 2017-09-25 06:10:16+00:00 (moved from RMC internal repository) |
Beta Was this translation helpful? Give feedback.
-
I looked into the topic a bit deeper and as mentioned in the description the wrong data type is only one of the most common things. Here some more options to create inconsistencies while developing libraries that cause smaller or more complex situations which are not very easily handled if you have close to no GUI-Support for those:
The argument of Andreas is only the sub-sub-optional thing somebody could do with it. Major aspect is to give the user an option/support to solve issues of existing state machines (libraries) and there interface conflicts in a transparent way. It can not be the solution to tell the user to solve his issue with cryptic error messages with which even I need 5-10 minutes to find the origin and to access it to finally solve it in the way I wanna have it after maybe 30min (which is very hard if you don't have a mind map like the GUI is supporting it). Only as some starting point before having the meeting. Originally created by @Rbelder at 2017-09-25 09:19:49+00:00 (moved from RMC internal repository) |
Beta Was this translation helpful? Give feedback.
-
Yeah let's discuss this in the meeting. I just saw that the LIBRARY_RECOVERY_MODE is not documented. Actually this is what I use to tackle these kind of problems. Originally created by @sebastian-brunner (Sebastian.Brunner@dlr.de) at 2017-09-25 09:33:50+00:00 (moved from RMC internal repository) |
Beta Was this translation helpful? Give feedback.
-
So checked the LIBRARY_RECOVERY_MODE flag and I have seen it while checking for this issue already and I could have investigate it more. 😄 The flag in its current implementation would allow invalid data type constellations but remove all data flows that miss any target or origin element (state or port). The user would not have any direct hint (library name is a bit less then a direct hint) or an option to directly open the state machine with the defect linkage inside. So the user has to be expert user of RAFCON and of the project he is working with (library-tree structure and so on). Transitions would not be handled. @sebastian-brunner If you have time come by today. I think it could be good to document this flag and integrate it into this issue (by e.g. generating only the GUI and enabling this kind of options only with this major expert flag). Originally created by @Rbelder at 2017-09-25 12:37:41+00:00 (moved from RMC internal repository) |
Beta Was this translation helpful? Give feedback.
-
I have given it a shoot, see branch allow_and_handle_invalid_elements_explicit.
Future adaptation in mind:
Originally created by @Rbelder at 2017-09-27 13:26:11+00:00 (moved from RMC internal repository) |
Beta Was this translation helpful? Give feedback.
-
For data flows it works fine. Also the feature is nice, that the user can select the invalid data flow in the invalid elements list and the data flow becomes selected in gaphas. The grammer is wrong in the following logging output:
Furthermore invalid transitions are not supported: Originally created by @sebastian-brunner (Sebastian.Brunner@dlr.de) at 2017-09-28 07:25:52+00:00 (moved from RMC internal repository) |
Beta Was this translation helpful? Give feedback.
-
You are right have not tested it fully:
@sebastian-brunner But generally I think your Originally created by @Rbelder at 2017-09-28 08:04:12+00:00 (moved from RMC internal repository) |
Beta Was this translation helpful? Give feedback.
-
Generally, close to every change in RAFCON is checked for invalid constellation by there properties. All state elements are checked and maybe only the states and those constellations are not fully checked.
But invalidities can be introduced by developers who create complex state machines with multiple library hierarchies. The most often invalidity that occurs is that a type of a data port of an used library state has changed and is connected by a data flow to another state's data port that still has the old data type.
If this problem occurs the first time an advanced user still don't know what to do. At the moment a user has to decode the error/traceback message, find the state machine (the right path) or respective state by searching the state machine file system folder and retry till the problem is maybe solved. In case of a invalid data flow there are three options, change the origin port (can be a library state), remove or change the data flow, or change the target data port (can be a Library State, too).
The issue propose a solution to solve those problems and similar possible things by the following concept:
The issue is considered to start as a discussion. Please at you opinion, concerns or possible improvements. This is the first raw shot on the topic. :)
Originally created by @Rbelder at 2017-09-18 12:34:34+00:00 (moved from RMC internal repository)
Beta Was this translation helpful? Give feedback.
All reactions