Product Administration Guide > Build Customizable Products >
You add items to a customizable product by defining relationships. A relationship can be defined for a single product, a group of products, or the products in a class.
The relationships you define for a customizable product are component type relationships. This means the items in the relationship are components of the customizable product. For example, you define a relationship called Hard Drives for the customizable product Desktop Computer. You specify that it contains all the products assigned to the Disk Drive class. This makes the disk drives in this class components of the customizable product Desktop Computer.
Relationships are analogous to the branches of a tree. The main trunk is the root of the customizable product. Each branch is a relationship. The leaves at the end of each branch are the components you add to the relationship.
Relationships form the framework of a customizable product. They are also the framework underlying the user interface you design for the product. For example, you sell configurable computers. The buyer can choose among several monitors, several keyboards, and several CD-ROMs when configuring a computer. You could create a relationship called Monitors, another called Keyboards, and one called CD-ROMS. You would then specify the products to include in each relationship. You could then design the user interface to present monitors, keyboards, and CD-ROMs each on a separate selection page.
When you design a customizable product, begin by defining a framework of relationships. Keep in mind that each relationship represents a distinct, configurable part of the product.
Figure 4 shows a relationship framework in a customizable product.
- Relationship 1 contains a single product, Product 1
- Relationship 2 contains all the products in product class, Class 1
- Relationship 3 contains Product 2, Product 3, and Product 4, each from a different product class
Figure 4. Customizable Product Relationships
Customizable products and the product class system both include hierarchies. However, these hierarchies differ in important ways. In the product class system, inheritance is used to propagate attribute definitions downward through the class system. By contrast, inheritance plays no role in the hierarchy of components in a customizable product. Attributes inherited by a customizable product because of its membership in a product class do not propagate to the component products in the customizable product.
For example, a customizable product belongs to a product class that has the attribute Color (red, green, blue). The customizable product as a whole inherits this attribute but its components do not. For example, if the customizable product is a laptop computer, this means the laptop comes in three colors, red, green, or blue.
However, these colors are not inherited by any of the components of the laptop. For example, if the laptop has a CD-ROM, it does not inherit these colors. The color attribute of the CD-ROM (if it has one) is defined in the product class from which it comes, not in the customizable product in which it resides.
When you create a relationship for a customizable product, you create a record in the Product Designer that contains the following fields:
- Relationship Name. The name of the relationship. This name displays in the selection pages in a configuration session. In the Product Designer, the Relationship name displays as a file folder. When you expand this folder, the products in the relationship display beneath it.
- Class Name. Click in this field to display a dialog box that lists all product classes. Select the desired product class. If no class name is specified, you can add products from anywhere in the class system.
- Define Domain. Click in this field to display a dialog box that lists the products in the class you selected. Select the products you want to add from this class.
- Default Product. Specifies the default product presented to the user in selection pages during a configuration session. You select a default product from the dialog box that displays when click in the Define Domain field.
- Min Cardinality. Enter the minimum quantity of items that must be selected from this relationship. The quantity can be zero.
- Max Cardinality. Enter the maximum quantity of items that the user can select from this relationship. The quantity can be zero.
- Default Cardinality. Enter the quantity of the default product you want display in selection pages at the beginning of a configuration session. The quantity can be zero.
- Domain Type. The domain type specifies the domain of the items you add to the relationship:
- Product. The relationship contains a single product. The product can be a customizable product.
- Class. You can define the relationship domain to be all or part of a product class and its subclasses. You must manually select which products to include in the relationship. If you add or remove products from the product class or its subclasses, these changes are not propagated to the relationship. You must manually edit the relationship domain to update it with changes to the product class.
- Dynamic Class. The relationship contains all of the products in a product class and its subclasses. If you add or remove products from the product class or its subclasses, the changes are propagated to the relationship when you refresh the customizable product work space. This domain type provides the best performance and is the recommended one to use.
When you expand the Relationship Name folder, each product in the relationship displays as a separate record with the following fields.