What is the use of "Variable is hidden from parent processes and reports"
Discussion posts and replies are publicly visible
My understanding (and I'm prepared to be educated by those who may have a deeper insight here) is that if you were to consider a true Object Oriented language your Objects would have 'Getters' and 'Setters' through which the internal state of an Object can be determined, but that the internal state of an object should reside in 'private variables'. So you can consider setting the 'hidden' attribute of a process variable to the equivalent of a 'private variable' of an Object.
By default this attribute is NOT set, and so a new pv! is thus by default a candidate 'Getter' and/or 'Setter'.
Having said that, I've never (in my 7 years at Appian) seen this actively used.
Thank you Stewart Burchell,
I believe that hidden PVs are also not stored in process history, which can save some memory usage. The main downside to hiding process variables is that it's harder to troubleshoot, and I believe it also isn't possible to query their values using a process report.
There are some features like this that were more important 10-15 years ago - most machines had much less memory then, and many processes were created to run for very long time periods. However, now that servers have much more memory and we have best practices for creating short-lived processes, this is really not important any more. Like Stewart said, I have never used this myself beyond basic testing to understand what it did
Yep, that was my understanding as well. It's improved memory performance at the cost of being able to investigate incidents.
Granted, if you ARE somehow pegging your available memory, you may want to consider hiding some of your largest PVs. Using DB to do transforms, breaking up processes, using plugins and other services to do memory intensive work, breaking up your PVs into smaller chunks, making more short-lived processes, using a!startProcess instead of subprocess where possible, all work much better to retrieve RAM.
Hiding is really a last resort when you've got to the point that you're OK with your bugs never being solved. Might want to mention it as an option for our team.
thanks you peter
Thanks you David
I've used the feature a very few times, mainly to hide temporary and/or troubleshooting PVs that would never be relevant to a parent process; the problem then becomes, you can't even pull up the PV on a process instance report, which can be an important use case for troubleshooting PVs. So instead I usually name them with an obnoxious pre-tag like "TEMP_" or "TROUBLESHOOTING_", to signal that they shouldn't be referenced by a parent process in any way, and subject to being deleted prior to a production push.
As per Appian play book for memory effective process model design, If operating on large data sets frequently or for an extended period of time and through many steps, configure the process variable as Hidden. This way, frequent changes to these variables are not going to be reflected in process history, which will have a smaller impact on the process instance memory footprint.
© 2021 Appian. All rights reserved.