From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
National Instruments will not be implementing this idea. There is no further feature development planned for modifying the existing VI Server scripting hierarchy.
The FlatSequence structure was not classified as a MultiFrameStructure but was put in a class of its own. This causes the creation of "exception code" that would not be necessary if the FlatSequence was a MultiFrameStructure and could be processed with generic code. Issue was discussed here, it was decided that the investment to fix this was to high. I believe that the longer NI waits to fix it the higher the cost will be and the higher the cost associated with treating the exceptions cases will have become. I also believe that someday this will actually prevent NI to create more efficient code, i know it has prevented me to do so.
This request is a perfect example of invalid inheritance under the "identity, state, behavior" rubric.
The flat sequence structure CANNOT be a multiframe structure because it doesn't maintain the same state as the ancestor class. Namely, it does not define a "currently visible frame", nor is its bounds computed the same way. As far as behavior, its execution behavior is not the same (outputs from the first frame allow downstream nodes to fire before outputs from the last frame are even computed, meaning the Flat Sequence as a whole isn't even a coherent node!). Only "identity" passes, and all three have to pass for there to be inheritance.
I agree it would be lovely if there could be a unified hiearchy for the flat sequence with everything else, but it fails every software engineering test you can throw at it for acceptable forms of inheritance. We might be able to create some sort of side-band interface for both types to inherit, but even that would be hard to define.
This is not broken so it cannot be fixed. The flaw is in the logical nature of inheritance, not in the nature of NI's implementation thereof.
Could "currently visible frame" become "currently visible frameS" and could outputs from all frames be synchronized except internal ones that could be treated like "Sequence locals" in stacked sequences?
Jacemdom: There are lots of things that could be done to design a completely different feature and a completely different class hierarchy. 🙂 Your particular change would break binary compatibility with all the existing scripting code. Not generally an option we like to exercise.
There are other issues that would still remain even if we made your change. Fundamentally, the flat sequence is not a node... it is a layout manager for nodes.
We could have done something like remove the flat sequence from the ownership hierarchy entirely, and done something where a sequence structure has a reference to its "flat manager" or something like that, and then scripting would refer to the sequence structures directly, and operations on the sequence structure would sometimes fail when its "flat manager" didn't allow them. In some ways that would be a better design, in some ways a worse design.
But the point is, given the current embodiment of what the flat sequence is, we're stuck with the inheritance hieararcy that implies.
I understand all of AristosQueue's points above, but as a hardcore scripting developer for the past 15 years, the FlatSequence anomaly in the VI Server class hierarchy has caused me endless trouble. Maybe inheriting from MultiFrameStructure isn't the answer, but the current implementation is extremely difficult to work with, and I'd like to see NI address it in some way in a future implementation of the VI Server class hierarchy. Kudos.
but as a hardcore scripting developer for the past 15 years, the FlatSequence anomaly in the VI Server class hierarchy has caused me endless trouble
Makes me think of the first time i tried to map wire paths through a flatSequence
I believed the important word here is "caused" past tense! Would be nice though if others wouldn't have to go through this but then again this could be viewed as a rite of passage!
National Instruments will not be implementing this idea. There is no further feature development planned for modifying the existing VI Server scripting hierarchy.
That's not what I'm seeing. In LabVIEW 2019, if I traverse a block diagram (with Traverse for GObjects.vi) for the 'Node' class, Flat Sequence Structures are not returned. Similarly, if I read the 'Nodes[]' property of the Block Diagram class, Flat Sequence Structures are not returned there either.
National Instruments will not be implementing this idea. There is no further feature development planned for modifying the existing VI Server scripting hierarchy.