Skip to main content

Network Visualizer

The 3.50 Helium form engine includes Network Visualizer, which provides a visual representation of the Dependency Network. The Dependency Network is comprised of the elements that make up the pages and related logic of an eForm and the relationships between those elements. The objective of this document is to help functional and technical form builders use the Dependency Network Visualizer to quickly review and understand the logic and relationships with a form type. This document starts with an example of using this to map out how the value for a NAME field is set. It also provides a description of nodes and connections that may appear in the visualizer.

Navigation: Manage GT eForms 3.X > GT Utilities > Network Visualizer

This tool could also help form builders answer other questions such as the following:

  • What logic is triggered when I change a specific field?
  • Can I delete a form element (e.g. field, data pool record, search field) without breaking anything on the form?
  • Where is a specific Data Pool Record used?
  • Where is a specific Visual If used?
  • Where is a specific SmartSource used?
  • Which form elements (e.g. fields, segments, pages) have PeopleCode hooks tied to them?
    • This can be helpful when you see things occurring on your form that can’t be explained by what is configured.
    • What is the ID for a Visual If used in the Form Type Setup (e.g. to show/hide a field or segment)?

Note: The Network Visualizer is technical in nature and fully comprehending what is displayed may require additional assistance. Please contact support@gideontaylor.com if needed.

Example Walkthrough – How a Name Field is Set

An end user asks how the NAME field is pre-populated on a form. The form has fields for EMPLID and NAME. To answer that question, we follow the steps below:

  1. Navigate to Manage GT eForms 3.X > GT Utilities > Network Visualizer
  2. Network Id = select your form type
  3. View Type = Specific Node (defaults to this value)
  4. Node Type = FieldTag
  5. Node = FieldTag$PAGEREC.NAME

A screenshot of the changeable parameters that appear at the top of the Network Visualizer page

When the “FieldTag$PAGEREC.NAME” value is selected for “Node,” the visualizer appears with “FieldTag PAGEREC.NAME” as the primary element and all the direct connections flowing into or out of that node are branched around it. Nodes are representations of form type elements. The connections/lines between the nodes represent the relationship/connection types between those elements. (See Node Type and Connection Type tables below.)

An example of the connections that a user might find in the Network Visualizer

The visualizer indicates that the “FieldTag PAGEREC.NAME” node has a Lifecycle connection coming from “SmartSource [ENAME_EX:NAME]”. Lifecycle is a technical term for the “Update when this Source Changes” configuration option to set field values. The direction of the connection coming into the element shows that the “FieldTag PAGEREC.NAME” node depends on the “SmartSource [ENAME_EX:NAME]” for its value.

You might ask where the “SmartSource [ENAME_EX:NAME]” node get its value from. To answer that, we double-click on the node. Double-clicking any node will expand the visualizer to show connected nodes. In our example, follow the steps below to expand the visualizer as shown on the following page.

  1. Double click on “SmartSource [ENAME_EX:NAME]” which makes a node for “DataPoolRowsetField ENAME_EX.NAME” appear
  2. Double click on “DataPoolRowsetField ENAME_EX.NAME” which makes a node for “DataPoolRowset ENAME_EX” appear
  3. Double click on “DataPoolRowset ENAME_EX” which makes a node for “DataPoolRowsetKey ENAME_EX.EMPLID” appear
  4. Double click on “DataPoolRowsetKey ENAME_EX.EMPLID” which makes a node for “FieldTag PAGEREC.EMPLD” appear.

Another example of the connections a user might find in the Network Visualizer

From the visualizer we can walk down the logic chain as following to understand what is expected by seeing that NAME is set from the smartsource EXNAME_EX:NAME.

  1. The ENAME_EX:NAME smartsource is a field inside a data pool smartsource
  2. The data pool smartsource from the data pool record tag called ENAME_EX
  3. The ENAME_EX data pool has a key for EMPLID
  4. The EMPLID key is satisfied from the EMPLID field on this form

We have now successfully followed the path in the visualizer to show that the NAME field is updated when the EMPLID field on the form is changed.

NOTE: We could continue our analysis beyond the initial question to understand what else is updated when the EMPLID field is changed by clicking on the “FieldTag PAGEREC.EMPLID” node and following the path. However, to keep the visualizer manageable, we recommend resetting the visualizer by selecting “FieldTag$PAGEREC.EMPLID” as the Node field at the top and walk down the paths from that node as the primary node.

Network Visualizer Options

Below is a description of the different options in the Network Visualizer header and an explanation of their functionality.

A screenshot of the changeable options and parameters that appear at the top of the Network Visualizer page

Visualizer OptionFunctionality
Network IdSelect form the list of all form types in the environment
View Type – Specific NodeDisplays the Node Type field to choose an individual node as a primary starting point to view information about the network
View Type – Full NetworkDisplays the Node field with an unfiltered list of all nodes to select a primary starting point to view information about the network
Node TypeSelect the node category to make the Node field appear with a list of all the individual nodes within the selected type
NodeSelect the individual node to be the primary node as the starting point of the visualizer. Field appears when View Type is Specific Node or All Nodes.

Note: Select “All nodes in this type” to view all nodes within the selected Node Type or “All Nodes” to display the full network or as a means to get a sense of the complexity of a form type (and to be in awe of the complexity GT eForms hides).
Edge Types (checkboxes)Check to show or hide connections for the node types in the visualizer. Note: a checkbox for each node type will appear based on what nodes currently show in the visualizer.
Organize Nodes (Button)Once a node has been doubled clicked, button appears and can be used rearrange the newly visible nodes and connections to improve readability
Undo Expansion (Button)Once a node has been double clicked, button appears and can be used to undo an expansion and revert the visualizer back to the previous view

Additional Visualizer Usability

  • To move individual nodes around inside the visualized, you can click and drag any node. You can also click in the white space of the visualizer to adjust the display of the window to the right, left, up or down.
  • To resize the nodes in the visualized window, place your cursor inside the window and scroll to zoom in or out.
  • The Dependency Network only includes nodes for elements that are actually used in the form configuration in Form Setup and code. For example, every data pool record field becomes a SmartSource, but the Network will only include data pool field SmartSources that are selected within the configuration itself.
  • To see changes in a Visualizer in one tab after running a Form Build in another tab, refresh the Visualizer page (browser refresh) and re-select the network/form type to see the updated network.
  • Workflow routing and notifications are not dependency managed. Workflow visual ifs and SmartSources may show in the visualizer under the “Workflow” node. Rosters are not currently nodes in the visualizer.

Node Types

There are many nodes in the network. To help organize the nodes in this reference, they are grouped by categories.

Node Type Categories

  1. Data – stores data
  2. Part – reusable parts
  3. Display – what the user sees on a form page
  4. Lookup – used to populate prompts or dropdowns
  5. Code Hooks – PeopleCode hooks that are triggered by form use
    1. Note: The network and table below only include nodes for hooks that are dependency managed
  6. Composite – represents the union of two different nodes
  7. Containers – groups child nodes together

Node Type Options

CategoryNode TypeFUNCTIONALITY
DataConstantThis has the responsibility to display the field to the user.
DataCustomSegmentDataData for a non-configurable segment (E.g. Action Items, Attachments, and Comments segment data)
DataDataPoolRowsetData Pool Record (a database table/view)
DataDataPoolRowsetFieldData Pool Record Field (a database table/view field)
DataDataPoolRowsetKeyData Pool Record Key Field (a database table/view key field)
DataFieldTagData for a column segment field
DataRowsetFieldTagData for a grid segment field
DataSearchFieldAdd search record field
PartDataPoolCustomLoadPeopleCode part used to prepopulate a grid
PartSmartSourceA specific piece of data (E.g. a SmartSource from a form field, a data pool field, or PeopleCode)
PartVisualIfVisual If group
PartVisualIfPartRemembered or PeopleCode Visual If parts used in a Visual If group
DisplayColumnSegmentA column segment a user sees on a form page
DisplayColumnSegmentFieldA column segment field a user sees on a form page. This includes the field label, the field, and the related display for the field.
DisplayCustomSegmentDisplayThis display for a non-configurable segment (E.g. Navigation buttons)
DisplayGridSegmentA grid segment a user sees on a form page
DisplayGridSegmentFieldA grid segment field a user sees on a form page. This includes the field label and field.
DisplayPageThe form page a user sees
LookupDataPoolDropDownA data pool record that populates a dropdown
LookupDataPoolPromptA data pool record that populates a prompt
LookupXlatDropDownField translate values for a dropdown
Code HookDeleteRowPeopleCode hook that fires when a row is deleted on a grid
Code HookFieldChangePeopleCode hook that fires when a user changes a field
Code HookFieldEditPeopleCode hook that fires when a user changes a field (validation)
Code HookInsertRowPeopleCode hook that fires when a row is inserted on a grid
Code HookPaintPagePeopleCode hook that fires when a page is painted
Code HookPaintSegmentPeopleCode hook that fires when a segment is painted
Code HookPaintSegmentFieldPeopleCode hook that fires when a segment field is painted
Code HookPostNavPagePeopleCode hook that fires the first time you get to a page
Code HookPostNavSegmentPeopleCode hook that fires the first time you get to a segment
Code HookPreNavPagePeopleCode hook that fires when navigating away from a page (validation)
Code HookPreNavSegmentPeopleCode hook that fires when navigating away from a page with a specific segment on it (validation)
Code HookSavePreChangePeopleCode hook that fires when the form is saved (action is taken on a form)
Code HookSetSortDropDownListPeopleCode hook that fires to populate and/or sort the dropdown.
CompositePageConfigSegmentA specific column or grid segment on a specific page
CompositePageCustomSegmentA specific non-configurable segment on a specific page
ContainerFormConditionForm Condition (E.g. Default)
ContainerFormTaskForm Task (ADD, UPD, EVL, VWS)
ContainerFormTypeForm Type
ContainerRecordTagRecord Tag for column segments
ContainerRowsetTagRecord Tag for a grid segment
ContainerWorkflowParent of Visual Ifs and SmartSources that are used for workflow

Connection Types

A connection between two nodes represents what one node depends on another node for. A node may depend on another node for data, to know whether to show/hide, or a variety of other logic.

The explanations in the table assume B depends on A (A à B).

Connection ValueFunctionalityA Node Types (Parent)B Node Types (Child)
ContainerA is part of BVariousVarious
DataB needs data from AVariousVarious
Data_ExistsThe A has a child B that is dependent on its DataVariousVarious
DefaultVisibleB depends on the default visibility of the ACustomSegmentPageCustomSegment
DeleteRowB is the DeleteRow hook for the ARowsetDeleteRow
DisplayB is the display of AColumnSegmentField GridSegmentFieldFieldTag RowsetFieldTag
Display_ExistsThe A has a display child, BColumnSegmentField GridSegmentFieldFieldTag RowsetFieldTag
FieldChangeB is the FieldChange hook for the AFieldTag RowsetFieldTagFieldChange
FieldEditB is the FieldEdit hook for the AFieldTag RowsetFieldTagFieldEdit
FieldEdit_ExistsThe A has a Field Edit Hook child BFieldTag RowsetFieldTagFieldEdit
InsertRowB is the InsertRow hook for the ARowsetInsertRow
LifecycleB is lifecycled (Update when this Source Changes) from the value of ASmartSourceFieldTag
LookupA is the source of lookup data for the BDataPoolDropDown DataPoolPrompt XlatDropDown SetSortDropDownListColumnSegmentField GridSegmentField
MainKeyDataA is the main key for BDataPoolRowsetKeyDataPoolRowset
OutputRowB depends on A to know what row it should be painted on the page. (You may want to uncheck these to make the visualizer easier to read)PageConfigSegmentColumnSegment ColumnSegmentField GridSegment GridSegmentField
PageDefaultVisibleInformational only – shows that a Page Visual If affects the visibility for custom segments that by default only show on the last page of the formVisual IfPageCustomSegment
PaintB is a Paint hook for APage ColumnSegment ColumnSegmentField GridSegment GridSegmentField CustomSegmentPaintPage PaintSegment PaintSegmentField
PostNavB is a PostNav hook for APage ColumnSegment GridSegmentPostNavPage PostNavSegment
PreNavB is a PreNav hook for APage ColumnSegment GridSegmentPreNavPage PreNavSegment
PrepopB is prepopulated with the value of ASmartSource ConstantFieldTag
RelatedDisplayB gets its related display value from ADataPoolRowsetFieldColumnSegmentField
RowCountDataB depends on the number of rows in ARowsetSmartSource VisualIf
SavePreChangeB is a SavePreChange hook for AForm TypeSavePreChange
ValidateB validates its value against what A returns. This could cause a field to be red or blank out because it is invalid.DataPoolDropDown DataPoolPrompt XlatDropDown SetSortDropDownListFieldTag RowsetFieldTag
VisualIfActionItemRequiredDataB asks A if one of its action items should be requiredVisualIfCustomSegment (Action Items)
VisualIfActionItemRequiredDispB asks A if one of its action items should show as requiredVisualIfCustomSegment (Action Items)
VisualIfAttachDisabledDisplayB asks A if one of its attachments should show as disabled / read-onlyVisualIfCustomSegment (Attachments)
VisualIfAttachRequiredDataB asks A if one of its attachments should be requiredVisualIfCustomSegment (Attachments)
VisualIfAttachRequiredDisplayB asks A if one of its attachments should show as requiredVisualIfCustomSegment (Attachments)
VisualIfEditableB asks A if it should be editableVisualIfColumnSegmentField GridSegmentField
VisualIfReadOnlyB asks A if it should be read-onlyVisualIfColumnSegmentField GridSegmentField
VisualIfRequiredB asks A if it should be requiredVisualIfColumnSegmentField GridSegmentField
VisualIfShowB asks A if it should be visibleVisualIfColumnSegmentField GridSegmentField
VisualIfShowPageInformational Only – shows pages that show/hide based on a Visual IfVisualIfPage
WorkflowB is used for WorkflowWorkflowSmartSource Visual If