Understanding Nested Configurators


Nested Configurators allow you to factor a complex configurator into a hierarchy of simpler configurators.  For example, you may have a complex "building" configurator, which is easy to implement as a simple container for one "floor" configurator used multiple times:

This modular architecture allows for rapid development as each component's configurator may be developed in parallel.   

When to use nested configurators

Common reasons you would use this technique in your configurator design include:

Adding a referenced configurator

  • An unknown number of sub-components.
    If your configured product can have a variable number of common components. For instance, a sectional sofa may have referenced configurators for each section which can be added one-by-one by the end-user. A building configurator may have a referenced floor configurator used over and over, to build a 3-story brownstone or a 20-story apartment building.
  • A sub-component used across multiple configurators.
    If you have configurators which are included in more than one configurator. For instance, if you are a car manufacturer, you may want a configurator for the radio, which can be built once, then referenced many times in each individual car configurator. In addition, this car radio could itself be an independent spare part configurator added to a quote.

Rules

Related topics

When a referenced configurator is added to a configured product, it is termed a nested configurator. It can also be thought of as a parent-child relationship where the nested configurator is a "child" of the "parent" configurator it is nested into. One or more instances (children) of a referenced configurator are allowed at run-time. Rules determine how nested configurators are to be managed, including how many can be added or whether each can be added by the user directly, or only through rules. Generally,

  • if the number of children is known at design time and does not vary at run-time, they are best added through the Loaded or Value rules.
  • If the number is unknown and will change at run-time, children will usually be added through user interaction.

In most cases, information will be passed from parent to child during run-time via Snap rules. In the sectional sofa example above, the user may pick the color of the sofa in the parent. That color would be passed to each child so the user does not have to repeatedly pick the color for each section of the sofa.  


To add a nested or "referenced" configurator:

  1. Open the configurator that will become the parent.
  2. In the design tree, highlight "Referenced Configurators" and click the "+" button that appears.
  3. A new referenced configurator entry appears. Enter the properties shown below for this new relationship.
  4. Repeat the process as necessary for each child configurator that could be used.
  5. Save this configurator. It is now a parent configurator with one or more child configurators.


Referenced configurator properties

Configurator Type Specifies the configurator being referenced.  This drop-down list shows all configurators in your environment.
User can add this configurator to the following

Nested configurators can be added manually by your user, or automatically through Snap rules. 

  • If a user should be allowed to directly add a nested configurator, specify where in this parent configurator that child can be added to. You can specify the root of the configurator itself, or a page within the configurator, or multiple locations.
  • If a user should not add the nested configurator manually (if it's added only through Snap rules or a nested set), then leave this field blank.
Element for Nested Sets

The UI of this nested configurator can appear in its entirety, or only a small portion of it can appear.

  • Select nothing (blank) to have the entire child configurator appear as one or more pages within the parent, or
  • Select the specific element from the nested configurator that will be used to represent it in the UI of the parent configurator. 

(See the nested sets documentation for more information.)

Nest Scenes

If the referenced configurator uses a scene in its viewer preferences, set to true to include that child's scene within the parent's scene.

Nest Hotspots

If "Nest Scenes" is true, you can also nest hotspots from the child scene, so they appear in the parent scene and are visible to parent Snap rules.

Nest Price Object If the referenced configurator has its own pricing rules, whether those price items should be included within this configurator's price items.


Rules within a nested configurator run normally, just as they would if the nested configurator were run independently.  However, the nesting relationship between parent and child offers 3 new rule types.  These nested configurator rules are defined in the parent configurator. They can be added in the configurator tree by highlighting the nested configurator and clicking the "+" button:

The 3 rules are:

Added: Rules to be run each time the referenced configurator is instantiated at run time. This rule is used mostly to set initial field values of the child.

Copied: Rules to be run each time an instantiated configurator is copied at run time. As the process of copying instantiates a new configurator, the Added rule is also run.

Removed: Rules to be run when an instantiated configurator is deleted at run time.


  • This walkthrough can guide you through creating your first nested configurator and parent configurator, step by step.
  • The nested set UI component gives you flexibility in how you want your child configurators to appear, and has examples for your inspiration.
  • If your nested configurator contains any output documents, read more here to ensure they are visible and are generated as expected. 
  • Using nested configurators adds some steps onto the rule cycle.  You can review all the rule types, and the order in which they are executed (in a stand-alone configurator as well as in a configurator containing nested configurators).
  • The relationship between parent and child configurator can be defined more tightly by specifying a "parent-aware configurator". This can help optimize the performance of configurators which are only used as children.


Was this article helpful?