Note: This was originally posted by an inactive account. Content was preserved by moving under an admin account.
Originally posted by: Tim MeagherIn general, I like the idea too.
I was actually going to suggest it myself after reading the initial post.
However, after initial thought I realized that this approach has a number of problems that would need to be thought through to prevent confusion and a bad user interface.
Since the BRG stores the graph itself (including these node parameters), and the BRS stores the run state, what happens if you import a BRS?
Or if you open a BRG and the associated BRS is autoloaded?
There isn't any information available to determine whether the execution resulting in the state in the BRS was performed using all of the parameters stored in the BRG.
Should all nodes with status in this case have indicators to say that they
may not be up to date
- or should it only be if the status was changed
after BRE was loaded?
What do you do about nodes downstream from nodes that have been modified - should these all have indicators too, or only nodes that have directly been modified?
The other major complication would be with textual substitution.
Say I do the following:
- Declare a graph level parameter "Filename"
- Set this graph level parameter to "C:\tmp\myFile.brd"
- Create a BRD File node
- Set the "File" parameter to : {{^Filename^}}
- Run the node
- Change the Graph Level parameter Filename to "C:\tmp\myOtherFile.brd"
What should happen in this case?
Technically, the node configuration hasn't changed, since it is still declared the same.
However, what that
evaluates to has changed.
A similar situation would exist if you had - for example - parameters using {{^CurrentDate^}}, (or anywhere where you use the rand function).
Doing all of this evaluation to determine if the nodes should have their up-to-date status indicator modified would be quite computationally expensive, and could lead to a much less responsive interface.
Obviously, there are other issues whereby it would be close to impossible for an indicator to be accurate with regard to whether or not the actual status is accurate.
For instance, consider a graph with a whole bunch of nodes, with an acquisition node as the first node.
If you run the graph, then change the file on the operating system where the acquisition node points to, then even though nothing in the graph has changed, the status is no longer technically "current".
If you reran the graph, it would lead to different results.
I think this last case is really less of a concern, and like I said, I like the idea, however the other cases would probably require more thought before such an indicator could be implemented in any sensible manner.
Tim.