This chapter provides an overview of configuration processes and models and discusses:
Configuration models.
Configuration rules.
Syntax expressions.
Configuration binds.
Language sensitivity in Product Configurator.
Product Configurator is a rules-based system that enables you to order and manufacture complex items and products. You can define custom order-entry pages for entering and validating configuration information. The configuration information that you enter determines the specific options, components, and operations that are used to create the end product.
Configuration rules contain elements such as processing filters and rule actions, which are tied in with conditional expressions, validation methods, and variables to enable complex, yet flexible, product configurations. These rules are organized into configuration models to determine when and how the system processes them.
Configuration rules work in a logical tree structure that determines the order in which the system processes them. While each rule is a grammatical statement that performs an action, the configuration model dictates the context of the statement. You can use a rule more than once within a model, and you can nest submodels with a model in order to streamline the overall configuration solution.
Configuration rules are executed based on the tree hierarchy that you define in the configuration model. If the condition of a rule is met (that is, if the condition syntax for the rule is evaluated as true), then the action of the rule is performed. The system processes all of the rules in the order of their configuration model placement unless a true child or a false child exists that satisfies a condition within the model. In that case, the system branches to the designated child and processes the rules that are in that level. The system follows the configuration model down through the hierarchy, from the parents down through the children, before returning to the top logical level.
See Also
The combination of setID, functional area (distribution or production), and rule number uniquely identify each configuration rule. Some of the rule actions in Product Configurator are specific to distribution functions, such as creating a sales order, calculating prices, assigning costs, or to production functions, such as manufacturing processes. The rules that apply to both distribution and production functions are called common rules.
Because the configuration models for the distribution and production areas are independent of each other, an individual rule works in only one of the two functional areas. In addition, many rule actions, by their nature, apply to only one functional area.
You can use effective dating and rule processing modes to filter rule processing.
In addition to a rule number, each rule must have an effective date and an obsolete date. For each model, the system processes only the rules that are in effect, based on these dates.
Effective dates enable different sets of rules for the same model to be maintained simultaneously. As features and options change, the configuration can also change (without losing the original configuration rules). By changing the effective dates on the rules, you can process different sets of rules. Effective dates are not part of the key, but you can use them as a selection filter for retrieving rules.
For order entry, the default effective date is the order date. For direct production and direct requisition, the default effective date is today’s date. For production rules, the default effective date is the production start date estimate—that is, the scheduled ship date minus the estimated lead time.
For example, if the effective date is August 6, 2000, and the obsolete date is August 10, 2000, based on a sales order date, the following occurs:
Date |
Status |
08/03/00 |
Skipped |
08/06/00 |
Processed |
08/10/00 |
Processed |
08/11/00 |
Skipped |
Rule processing modes are designated as you create rules. They are filters for rule selection during processing. They specify whether a rule processes in order entry, direct production, or requisition generation.
See Also
Creating and Maintaining Basic Rule Characteristics
Product Configurator provides predefined rule actions. Actions are applied to rule definitions to determine the processing that the rule invokes. Each rule has only one rule action, although many different rules within a model might perform the same action.
Product Configurator includes the following rule actions:
These rules are used in both distribution and production models:
Condition.
Secondary Variable.
Global Variable.
Option Variable.
Internal Variable Override.
Create Parameter.
Configuration Detail.
Start Trace.
End Trace.
These rules are used in distribution models:
Page Generation.
Page Validation.
Configured Component.
Purchase Item.
Finalized Price.
Finalized Cost.
Finalized Date.
Finalized Volume.
Finalized Weight.
Availability Date.
Workflow.
Kit Component.
Kit Generation.
Product Selector.
These rules are used in production models:
Component List.
Operation Sequence.
See Also
Setting Up Configuration Model Elements
Using Configuration Rule Actions
A rule condition is a fundamental part of the grammar of every rule. Don't confuse the rule condition with the condition rule, which is used in logical sequence with other complete rules. The rule condition is a syntax expression.
When the rule condition is true, the rule is executed, and control passes to any existing true child.
When the rule condition is false, control passes directly to any existing false child. If a child does not exist for the result of the condition (true or false), there is no further action with the rule after the rule is processed.
See Also
Using Configuration Rule Actions
Each rule that you define features syntactic components that make up a syntax expression. Product Configurator processing interprets these syntax expressions to produce a result. Depending on the expression, this result can be a numeric, or a character value.
Syntax expressions consist of one or more independent, simple expressions that are logically connected. A simple syntax expression consists of two variables and an operand that links them.
The system interprets syntax expressions based on their grouping within parentheses. The parentheses make complicated expressions possible, but even simple expressions require them. You can negate an expression by using a negation character prefacing the expression.
Syntax Expression Format
This is the general syntax expression format:
(optional) Negation character (“N”)
Opening parenthesis
First variable
Operand
Second variable
Closing parenthesis
Note. Variables 1 and 2 are abbreviated as V1 and V2 in the examples that follow.
The syntax for variable names consists of three parts:
A letter to indicate the type of variable. For example, O-FRAME is an option variable, M-COLORS is a multiple option variable, and so forth.
A hyphen as a separator (“-“).
The user-defined name (cannot include a hyphen).
For example, to create an expression that means the Frame option is equal to Y for this field, write:
(O-FRAME,=,"Y")
The expression returns “1” (true) when the option variable FRAME is equal to the literal character “Y” and “0” (false) when the option variable FRAME is not equal to the literal character “Y”. For the opposite—the expression can be negated to validate when O-FRAME is not equal to Y—write:
N(O-FRAME,=,"Y")
You can combine syntax expressions to make a more complex statement by ordering the parts of the expressions within parentheses. Either or both of the variables in a syntax statement can be defined by syntax statements within the larger one. It is valid to construct a statement in this format:
((V1,operand1,V2),operand2,V3)
The system always processes an entire simple expression within parentheses before applying its value to the next level. And it processes expressions in the order that they occur.
For example, the expression:
((V1,operand1,V2), operand3,(V3,operand2,V4))
processes as:
(V1,operand1,V2) = A (V3,operand2,V4) = B (A,operand3,B)
Note. Option, Secondary, and Global variables are populated by the configuration engine during syntax evaluation with default values—a zero value (0) for numerics and a zero-length string value (“”) for characters—if the variable does not contain a value.
Product Configurator delivers predefined operands for use in composing syntax expressions.
The system interprets operands within expressions to produce resulting values—either a numerical value or a character string. Each operand requires a specific type of value in the rule syntax.
The following are value types:
Character (C) |
An alphanumeric string that is enclosed in quotation marks with a maximum length of 18 characters. A Boolean (B) is represented by a “1” (true) or “0” (false) character value. |
Date (D) |
A Date (D) is represented by an internationally date formatted (YYYYMMDD) numeric value. |
Numeric (N) |
A number with a maximum length of 15 digits that is used for mathematical manipulation and calculations. (The maximum number of digits is 11, and the maximum number of decimal places is 7. Therefore, the range for the decimal format is 11,4 to 8,7). |
The following table lists the operand types:
Operand (Default) |
Description |
Operand Code |
Value Type (V1,V2) |
Result Value Type |
Equal |
Tests whether V1 and V2 are the same value. Both variables must be the same value type. |
= |
(N,N) (C,C) |
B |
Not Equal To |
Tests whether V1 and V2 are not the same value. Both variables must be the same value type. |
<> |
(N,N) (C,C) |
B |
Less Than |
Tests whether V1 is less than V2. Use it only for numeric variables. |
< |
(N,N) |
B |
Less than or Equal |
Tests whether V1 is less than or equal to V2. Use it only for numeric variables. |
<= |
(N,N) |
B |
Greater Than |
Tests whether V1 is operands – description, code, and value types for: than V2. Use it only for numeric variables. |
> |
(N,N) |
B |
Greater Than or Equal |
Tests whether V1 is greater than or equal to V2. Use it only for numeric variables. |
>= |
(N,N) |
B |
If |
Specifies V1 as a value when V2 is true. V2 must be an expression that yields a Boolean (true/false) value. The result of the If operation is the same type of value as V1 (either numeric or character). If V2 is true, the result value is V1. If V2 is false, the result is 0 or blank. For example, the expression
yields the result of 100 if COLOR = RED. If COLOR does not = RED, the result is 0. |
IF |
(N,B) (C,B) |
N C |
Or |
Tests whether either V1 or V2 is true. Both V1 and V2 must be expressions that yield Boolean values. |
OR |
(B,B) |
B |
And |
Tests whether both V1 and V2 are true. Both V1 and V2 must be expressions that yield Boolean values. The result is true unless both V1 and V2 are false; likewise, the result is false unless both V1 and V2 are true. |
& |
(B,B) |
B |
Concatenate |
Links two character strings to form one string. When concatenating numeric values, the system treats them as alphanumeric character strings. You can include any combination of characters and numbers in the result (a character value of up to 18 characters). For example:
|
CT |
All combinations |
C |
Substring After |
Selects the last portion of a character string. You determine the initial character value in V1. V2 is the number of the position where the substring starts. Because the total character string is limited to 18 characters, V2 must be a whole number between 1 and 18. For instance, the expression
yields the result
Note. The substring includes the position that it specifies. |
SA |
(C,N) (N,N) |
C C |
Substring Before |
Selects the first portion of a character string. You determine the initial character value in V1. V2 is the number of the position where the substring ends. Because the total character string is limited to 18 characters, V2 must be a whole number between 1 and 18. For example, the expression
yields the result
Note. The substring includes the position that it specifies. |
SB |
(C,N) (N,N) |
C C |
Exist on Multiple Option |
Tests whether V1 is a value for one of the options in a Multiple Option table. V2 specifies which Multiple Options table to check. Depending on what kinds of values the Multiple Option table that is specified by V2 contains, V1 can be either a number or a character value:
This example checks a paint color against the Multiple Options table (“COLORS”) containing options for all of the parts that need painting on the bike that you're configuring:
A user selection on a sales order page or a rule that modifies an option in the configuration process determines the value of each option. If any of these options is associated with the value YELLOW, the result of the Exist on Multiple Option operation is true. If not, the result is false. The operation yields a result only when V1 is the same type of value (character or numeric) as each option that exists on the table that is specified by V2. |
EM |
(C,M) (N,M) |
B |
Exist on Value List |
Tests whether V1 is a value on the Value List table that is specified by V2. |
EU |
(C,U) (N,U) |
B |
Add |
Adds the value of V1 to the value of V2. Both variables must be numbers. |
+ |
(N,N) |
N |
Subtract |
Subtracts the value of V2 from the value of V1. Both variables must be numbers. |
− |
(N,N) |
N |
Multiply |
Multiplies the value of V1 by the value of V2. Both variables must be numbers. |
* |
(N,N) |
N |
Divide |
Divides the value of V1 by the value of V2. Both variables must be numbers. |
/ |
(N,N) |
N |
Round Down |
Divides V1 by V2 and returns the closest integer value that is less than or equal to the result. V2 cannot equal 0. |
RD |
(N,N) |
N |
Round Up |
Divides V1 by V2 and gives the closest integer value that is greater than or equal to the result. V2 cannot equal 0. |
RU |
(N,N) |
N |
Calculate Date |
Uses the calendar to determine a new date. V1 is a date value representing the start date in YYYYMMDD format. V2 is the number of days to add to the date. The result of a calculate-date operation is a date value in a YYYYMMDD format. |
CD |
(D,N) |
D |
Sine, Arc sine |
Returns the sine or arc sine of V1 in radians (assuming V1 is numeric in radians):
|
SN |
(N, C) |
N |
Cosine, Arc cosine |
Returns the cosine or arc cosine of V1 in radians (assumes V1 is numeric in radians):
|
CS |
(N,C) |
N |
Tangent |
Returns the tangent of V1 in radians (assumes V1 is numeric in radians):
|
TN |
(N,C) |
N |
Power |
Returns the result of V1 to the V2 power (assumes V1 and V2 are numeric). |
** |
(N,N) |
N |
Modulus |
Returns the result of V1 to modulo V2 (assumes V1 and V2 are numeric). |
\ |
(N,N) |
N |
Exists as a Component |
Returns the quantity for a component on the Configuration Component array during a configuration:
|
EC |
C, C |
N |
Calculate Price |
Returns the price for V1 (assumes V1 is a product ID).
Note. This operand is intended for use in determining component item prices, not final configured end-item pricing. Use the Finalize Price rule to determine pricing for a configured item. |
CP |
C, C |
N |
Note. You cannot enter true or false as a value for use in syntax expressions when using the following operands: If, Or, And. Instead, use “1” (True) and “0” (False).
Product Configurator is designed to make syntax expressions as uncomplicated as possible by providing a variety of variable types. Configuration variable types can be used to:
Retrieve information about a product that already exists in any PeopleSoft application without any special rule logic by using internal variables.
Validate a value against a value list, or check for the occurrence of a single value in any of a number of option variables.
Use a matrix to predefine result values for up to five variables. Using a matrix saves labor and potential for error in defining combinations through calculating them in each rule model. When you want to change the result values, you just change the matrix—not the many rules that reference it.
Product Configurator delivers the following variable types.
Variable code for syntax = O.
An option variable stores attribute information about a configuration and contains a value that is either:
Entered on a page generation rule.
Created by an option variable rule.
Option variables apply to only one configured level of processing (the same as secondary variables), but they can be referenced across functional areas. Use the Option Variable page to view or create a new option variable.
See Setting Up Configuration Variables.
Variable code for syntax = S.
A temporary working storage variable within a model that applies locally within the model. Create a secondary variable when you want the variable to apply locally—that is, only to the single configured component.
You create secondary variables by using the Secondary Variable page containing a value from secondary variable, internal variable override, or availability date rules.
See Setting Up Configuration Variables.
Variable code for syntax = G.
A temporary working storage field within a model that applies globally within the entire model to all configured levels of processing and can be referenced across functional areas. You can share variable information between:
A parent item and its configured components.
A child item and any other child items that follow it in rule processing.
A distribution model and a production model.
You create global variables by using the Global Variable page containing values from global variable rules.
See Setting Up Configuration Variables.
Variable code for syntax = X.
Invokes result values from a predefined matrix of up to five user-defined variable value keys.
See Using Matrices.
Variable code for syntax = I.
Retrieves static or dynamically derived values from PeopleSoft application tables and views. This enables you to use existing business information, such as customer IDs, order numbers, business unit definitions, or pricing, without defining it within rules or in separate configurator tables.
See Setting Up Internal Variables.
Variable code for syntax = M.
Groups option variables together to examine them as a whole, and determine whether a particular value exists in that grouping.
See Maintaining Multiple Option Variables.
Variable code for syntax = U.
Validates option selection (such as sizes or colors of an item) during configuration.
See Using Value Lists and Constraints.
Variable code for syntax = R.
One or more conditions that limit the valid options within a static value list (dynamically generated value lists cannot use constraints).
Variable code for syntax = P.
Used with the create parameter rule, external program variables enable the system to call a custom-developed PeopleCode program to perform specific user-defined logic and return a value to use in configuration processing. After the external program runs, the parameters that are created by the create parameter rule are cleared.
External program variables are only used in syntax expression. P-EXAMPLE calls an external program called EXAMPLE.
You can create custom PeopleCode programs in the following self-documented PeopleCode Function Library:
FUNCLIB_CPINFR.CP_EXT_PGM.FieldFormula
See Defining Create External Parameter Rules.
Variable code for syntax = L.
Inserts a character string of static information into configuration logic. You can enter literals on internal variables or use them to insert a string of characters into a configuration code template definition. For example, a literal is used when adding a hyphen as a separator between other variables in a configuration code.
Note. Quotation marks are not needed around literals on internal variables.
Variable code for syntax = C.
The constant references static system information during the configuration process. A constant value does not change during processing.
PeopleSoft delivers the following constants for the current configuration unless noted otherwise:
BILL_TO_CUST (bill to customer ID) *
BUSINESS_UNIT_IN (Inventory business unit)
BUSINESS_UNIT_OM (Order Management business unit) *
CAPTURE_ID [Customer Relationship Management (CRM) Order Capture ID] **
CP_MODE (configurator processing mode)
S = order management sales order
M = direct production order
R = direct requisition order
W = CRM external order
A = CRM internal order
CURRENT_DATE (current system date in YYYYMMDD date format)
DYNAMIC_PRICE (value of the dynamic pricing field from the last page generation rule with dynamic pricing syntax)
ITEM_ID (item ID)
LINE_NBR (CRM order capture line number) **
OM_MODE (sales order mode) *
S = configuration within order management sales order / quote
E = configuration within order management express order / self service
“” = configuration within all other components.
ORDER_LINE (sales order line number) *
ORDER_NUMBER (sales order number) *
PRODUCT_ID (product ID)
QTY_ORDERED (quantity ordered) *
SETID (product setID)
SETID_CFG (configurator rule setID)
SHIP_TO_CUST (ship to customer ID) *
SOLD_TO_CUST (sold to customer ID) *
Use the Constant page to view existing constant definitions or add new constants.
* These constants are not used by Customer Relationship Management (CRM) applications.
** These constants are used exclusively by CRM applications.
You can use configuration binds in a configuration model to personalize configuration messages and enable configuration variable substitution in custom value lists and internal variables.
The case-sensitive syntax looks like this:
%BIND({configuration variable}).
For example:
%BIND(O-COLOR)
Product Configurator supports configuration binds in the following areas:
Dynamic internal variables.
Dynamic value lists.
Custom messages.
Custom HTML and option description on page generation rules.
Page titles for page generation and kit generation rules.
You can use nonbase language data on Product Configurator’s order entry pages by using PeopleTools globalization functionality.
To use a nonbase language, set up a language-specific user logon. A user in France might have a logon of FR1 to use the system in French, and a user in Brazil might have a logon of BR1 to use Brazilian Portuguese.
When these users log on, the system uses related language tables to display the configured order entry page’s fields, messages, and value lists in the specified language.
PeopleSoft delivers the following related language tables for this purpose:
CP_MESSAGE_LANG |
Messages |
CP_RULE_D_LANG |
Rule details |
CP_USERCD_LANG |
Value list values |
CP_RULE_HT_LANG |
Custom HTML fields |
See Also
Enterprise PeopleTools 8.46 PeopleBook: Global Technology