Configuration Array Best Practices
Overview
- Configurable array sets must be created the proper way for the +/- add/remove buttons to appear or work.
- Create the array set before visiting the Set tab of the array attribute
- Ensure that the array control attribute is in the same group as the array set, and is not hidden.
- This order will always work:
- Create the array control attribute
- Create the array set
- Create the array attributes and add to the set
- If you created an array set in the wrong way, you do not need to delete your attribute and recreate it. Here are the steps to fix an Array Set that is not showing the increment / decrement buttons:
- Do the following for each array in the array set:
- Go to the Array Attribute on the admin side.
- Go to the Set Properties tab.
- Change the Array Set from the real one to the default one.
- Change the Array Control Attribute to the blank entry.
- Click Apply. *important step*
- Change the Array Set back to the real one.
- Click Update.
- Once you have done that for all arrays, the little icons should return.
- Do the following for each array in the array set:
- It is possible to have one Size attribute control multiple arrays, but it is not recommended.
When the same size control attribute is assigned to multiple array sets, the size of the arrays can only be controlled by directly modifying the size attribute. The add and delete (+/-) buttons will be disabled on the Configuration UI for array sets with a size control attribute that is assigned to multiple array sets.
- It will lead to confusion in maintenance.
Recommendation Rules and Arrays
-
Set Type Recommendations will work for an array attribute only if none of the values of those attribute elements is changed by the user.
Once changed, the system treats it as an overwrite of the attribute and will not perform a Set recommendation on any elements that get added afterward.
- If you recommend a value for a string array of
””
(blank) or$BM_UNCHANGED_STR$
(leave value unchanged), even if the value is blank, you will still get the recommendation message (“Don't select any value…”).
- There is quite a bit of BM behind-the-scenes JavaScript associated with array sets. The presence of many array sets will affect performance, especially in IE.
-
When you add a new element to an array using the +/- buttons, the value it takes is the value of the previous last element (the now penultimate element).
-
Defaults are not respected in arrays.
- The recommendation text for an array attribute always shows the variable name of the attribute, rather than the display name, as for non-array attributes.
- Maximum number of rows in an array is 200.
- Multi-select menus are not possible in arrays.
- Simple Table-based Rules operate per index; they will not operate across indexes.
- Attribute type limitations are consistent with existing simple Table-based Rules.
- If the Table column is numeric, then the Array Attributes must be numeric
Reference Unique Rows in an Array
With Oracle CPQ Release 18D, the rows or indices of Configuration arrays are consistently referenced using unique array keys regardless of deletions, additions, or updating of rows impacting array row numbering.
On upgrade to Release 18D, a read-only array key attribute is automatically created for each array controller. The array key attribute "_array_key_[array controller variable name]" uniquely identifies each index associated with an array controller.
Array key attributes are available as rule inputs for Simple and Advanced Conditions listed under the Configurable Attributes drop-down for the associated array controller. Array key attributes are executed after the array control attribute to which they are attached. As a result, the array key values persist across rule execution on the array control attribute during an Update.
Array key attributes are accessed primarily for backend processing and are not typically visible to sales users in the UI. As a result, they are not available for placement on Oracle CPQ UI Layouts.
Configured models are flagged as modified when an array has additional indices added or removed via the (+) or (-) buttons when the array controller is hidden. In the past, adding indices to an array element whose default data added recommendation items or BOM items would not add their parts when administrators invoked without an update.