# Characteristic based product configurator

A characteristic-based product configurator is a product configurator extension which uses a set of discrete variables, called characteristics (or features), to define all possible product variations.

## Characteristics

There are two characteristic types:
* binary variables, which describe the presence or not of a specific feature,
* n-values variables, which describe a selection between n possible value for a specific product feature.

### Constraints

The range of characteristic-value combinations is reduced by a variety of constraints that define which combinations can, cannot, and must occur alongside each other. These constraints can be reflective of technological or commercial constraints in the real world. The constraints can represent:
* incompatibility: they indicate the mutual exclusivity between some product feature-values;
* implication: they indicate the presence of a specific feature-value is constrained to the presence of another feature-value.

### Characteristic filters

The use of characteristics permits the user to abstract the finished product by describing filter conditions, which describe subsets of product variations using boolean functions on the characteristics:
* The AND, NOR, OR logical operators use and simplify the boolean function definitions, because they permit the user to regroup together the characteristic-values which may be present (AND), absent (NOR), or not all absent (OR);
* Thanks to the decoupling introduced by the use of characteristics, it is not necessary to redefine the boolean functions when new commercial codes are introduced which can be mapped to some product-variation already covered by some characteristics combination.

## Closed or open configuration

Using a characteristic-based configurator, it is possible to define a product variation in two ways:
* Open configuration: the user will simply valuate all the characteristics complying with the technological and commercial constraints, without having a set of base values to work from;
* Closed configuration: it starts from a pre-selected base-preparation (representing a sub-class of product variations) which fixates a subset of characteristics, to which the user will optionally add other information valuating the (still not fixed) characteristic-values, complying with the technological and commercial constraints. It can be useful to specify that a requested characteristic-value can replace another characteristic-value that is incompatible with the requested one present in the base-preparation

## Applications

Some examples of applications where using a characteristics-based product configurator may be advantageous are:
* Bill of materials applications: to every part-number is associated a characteristics-filter, which selects the subset of product-variations in which the part-number will be used
* Manufacturing process management systems: a characteristics-filter is associated to each operation that will select the subset of product variants where that operation is done
* Commercial applications: the ordinality and mandatory requirements of a market are related to characteristic-filters that identify the product variations subset to which they apply

## Examples

pCon.planner from EasternGraphics is an OFML-based complex product configurator used for interior design.