We recently ran into an issue where a complex Visio was crashing our DMA. We're currently transitioning the functionality into a Low Code App, but for the future we're hoping to determine if there are certain features that should not be combined or are taxing on the system and should not be performed many times within a page.
Here is a list of all shape data fields we used. The specific Visio has already been checked and no apparent syntax errors or misuses were found:
- Multiple Pages
- InitVar
- Element
- Parameter
- Variable
- Tooltip
- Page
- Options: NoAlarmColorFill, HighlightStyle, AllowCustomIndex
- Children(ROW)/ChildrenSource/ChildrenSort/ChildrenPanel
- ChildType/ChildMargin
- SetVar/SetVarOptions
- SubscriptionFilter(VALUE) - using placeholders and *
- ParameterSubscriptionFilter(VALUE) - using placeholders and *
- Execute(SCRIPT/SET)
- Basic and Extended Conditionals (Show/Hide/Highlight/FillColor)
- Placeholders: [var:]/[param:]/[RegexReplace:]
Here is a description of how the fields were used:
- 2x Children=ROW for the same table w/ different VALUE Subscription filters w/ * wildcards and ChildrenSorted Display Key TableColumn
- A link to another Page of the same Visio that also performs a SetVar, nested w/in the outer Children=ROW
- Nested Children=ROW w/ a Subscription filter using the parent Children’s [tableIndex]
- Multiple parameter shapes w/in the inner Children=ROW group
- Nested RegexReplace statements using [parentTableIndex] w/in the inner Children=ROW group
- A parameter shape using a ParameterSubscriptionFilter (w/ a [param:] placeholder and AllowCustomIndex option) w/in the inner Children=ROW group
- A FilterComboBox SetVar using custom DisplayColumn/SetColumn and SubscriptionFilter w/ * wildcard (And a [sep::;] due to : in the values).
- An array session var using RegexReplace in SetVar to create a kind of ‘map’ separating entries w/ & and keys/values w/ < (SelectedStreams:[RegexReplace:[parentTableIndex]<[^&]+&|(?<![parentTableIndex].*)$,[var:SelectedStreams],[parentTableIndex]<[tableIndex]&])
- A shape w/in a nested Children=ROW object that contains a Shape SetVar (See prior bullet), Tooltip, Parameter Basic Condition (FillColor) and Highlight extended condition (Changing Line color/width to match a single Options=HighlightStyle shape).
- Buttons w/in a Children=ROW that have a Tooltip, NoAlarmColorFill option and triggers a script with Execute, using [tableIndex] as an input parameter, that updates a session variable. Uses NoCofirmation option.
- A Button that triggers a script with Execute, using a session variable as input, that makes an API call and updates element parameters as well as session variables. Uses NoCofirmation and NoSetCheck options.
- Shapes w/in Children=ROW inner groups that show/hide based on Session Variable (Basic Condition) and table parameter (Extended condition)
- NOTE: Most Children=ROW groups are referencing Partial Tables that contain 100s+ of entries, filtered down to ~10 rows using a SubscriptionFilter typically with a param/var placeholder and * wildcard matcher.
Some examples of what I'm interested in learning would be “Visios are inefficient when performing many Regex operations on a single page” or “You should not nest ROW Children beyond 1 level”, etc. but any advice of how to optimize or prevent slow load times in the future would be greatly appreciated.
Thanks!
This sounds like something for the Visual Overview Solution Analysis series. The latest entry was actually just released! This series aims to help out everyone to improve their Visual Overviews through analyzing actual use cases and improving them. Take a look at the 2 videos we already have in the series (and of course, if you haven't yet, the Visual Overview course) and hopefully that will already help. And if you still have trouble with your performance after that, maybe you can reach out to be the next entry in our series 😉
The only advice I can give to actually answer this question at this point is: the more you visualize on your Visual Overview, the slower it will be :D.
Great, thank you! So what it seems like is this feature needs to be built into the driver? Currently I don’t see any connectivity features mentioned on the MWCore element, so it seems like this driver just doesn’t have the DCF framework setup, which would explain why I’ve found none of the guides very helpful.
Yes, the interfaces need to be built into the driver. This can be done statically, or the driver can be configured to have its interfaces defined from a table.
Oh great, I did find the table on the MWCore protocol for this under General Parameters, is there instructions on how to add these? Or would that be more driver specific, and if so I don’t see instructions on the MWCore protocol help page, so what would be the best way of tracking that down?
Great, thank you! This is exactly what I was looking for. Do you happen to know if there’s training on how to enable devices for the DCF? I’ve found plenty of training on how to add it to a Visio, but how are the actual connections defined? I can pursue training on my own, just not sure if it is through the Element Connections menu, or the Connectivity Editor, or something else.