Difference between revisions of "Script Example: Recursively Collect Values from Custom Attributes"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
{| style="border-spacing: 20px; border: 20px solid red;" | {| style="border-spacing: 20px; border: 20px solid red;" | ||
| | | | ||
'''WARNING''': This page is no longer updated. Please visit '''[https://www.netxms.org/documentation/nxsl-latest/ NetXMS | '''WARNING''': This page is no longer updated. Please visit '''[https://www.netxms.org/documentation/nxsl-latest/#_examples_2 NetXMS Script examples]''' for current version of the documentation. | ||
|} | |} | ||
Revision as of 14:19, 5 October 2020
WARNING: This page is no longer updated. Please visit NetXMS Script examples for current version of the documentation. |
This script recursively collects values of custom attribute contacts from all node parents. Collected values concatenated into single string and separated by semicolons. Duplicate values added only once.
global contacts = ""; // concatenated values will be stored here
global presence = %{ }; // value presence indicator (hash map)
// walk through each parent object for current node
foreach(o : GetObjectParents($node))
{
add_contacts(o);
}
// Concatenated result is in "contacts" global variable
println "Contacts: " . contacts;
/**
* Recursively add contacts from object and it's parents
*/
sub add_contacts(curr)
{
c = GetCustomAttribute(curr, "contacts");
if ((c != null) && (presence[c] == null))
{
if (length(contacts) > 0)
contacts = contacts . ";" . c;
else
contacts = c;
presence[c] = true;
}
foreach(o : GetObjectParents(curr))
{
add_contacts(o);
}
}