6Product Rules
This chapter contains the following:
Overview of Product Rules
Before you can use product rules in Oracle Fusion Product Hub, you must complete this task in the Setup and Maintenance work area.
Task | Description |
---|---|
Manage Item Rule Sets |
Use this task to create validation, assignment or composite rule sets. In the Setup and Maintenance work area, go to the following:
|
Rules and Rule Sets
Rules define integrity constraints on the attributes of items and structures. You can define integrity constraints on operational as well as on user-defined attributes. Integrity constraints can implement business rules and are created through use of the rules framework. For example, a rule might be that the minimum speed must be less than maximum speed.
Rule sets gather multiple rules together and are associated with a source of attributes, such as attribute groups, item classes, change types, or structure types. The specific source (such as an attribute group name) is defined as part of the rule set. Rule sets also list valid business entities, such as an items, item suppliers, or item revisions. The association of a rule set with a specific source of attributes enables the rule expressions entered in rules in the rule set to be validated by checking for allowable entities.
Each attribute is
referenced by its business entity and attribute group name followed
by the attribute name. For example, [Item].[Physical
Attributes].[Unit Volume]
. In this example, [Item]
indicates that it's an item attribute; [Physical Attributes]
is the display name of
the attribute group, and [Unit Volume]
is the display name of the attribute.
Keep in mind that:
-
If the rule set is associated with an attribute group, then only the attributes in that group can be used in its rules.
-
If the rule set is associated with an item class, then only the attribute groups valid for that item class can be used in its rules.
You can set the status of a rule set draft. You can keep a rule set in draft status until the drafting of its rules is complete. If a rule set is in draft status, the rule set isn't triggered as regular transactions are completed. During this time, you can run rule impact analysis to simulate and study the impact of the rule sets on a selected set of existing items, enabling you to make necessary changes. While performing the simulation, the draft rule sets along with other active rule sets are applied on the selected set of items, and the impact is captured by an asynchronous scheduled process.
The rule sets associated with new item requests and change order types are used to generate identifying numbers for new item requests and change orders.
The types of rule sets and rules are as follows:
-
Assignment
-
Validation
-
Blending
-
Composite
Assignment
An assignment rule set determines the value of an item attribute based on the specified condition.
An example of an assignment rule, expressed in ordinary English, is: Lead Percent is Total Lead Mass divided by Unit Weight.
After you create a rule, you validate and save it. Then, if necessary, enter subsequent rules. Rules are executed in the order of their sequence in the rule set. Therefore, if an attribute's expression depends on a previously calculated value, you must ensure that the previous value appears ahead of the attribute, in the rule, and is therefore computed first. Generally, rule sets for assignments should be executed before rule sets for validations, so that you can write validation conditions against assignment results that you're confident are valid.
Validation
A validation rule set validates conditions based on attribute values defined for items. Validation rule sets are typically used to model predefined business rules on items.
Validation rules restrict items that can be added as related items to an item, and restrict the relationship types that can be allowed for items. This restriction could be based on item or item revision-level attributes which could be operational attributes or extensible flexfields.
Test the validations by going to the Item Update page and editing the appropriate attribute groups. Updated values are validated against the rules, and error messages appear on the screen.
The severity of a validation rule determines what action is taken if the validation fails. The severity levels, and their resulting actions, are as follows:
Severity | |
---|---|
Warning |
The business entity can still be saved. An explanatory message, which you define, is displayed to the end user. The user must acknowledge the warning message to save the item. |
Needs Approval |
The attribute data requires that a change order be created for the business entity. |
Reject |
The business entity can't be saved until the attribute validation passes. |
The following behavior for validation rules occurs during a runtime end user session:
-
Rules are only run for attributes that have changed, except in the following circumstances.
-
The item's item class has been changed
-
The rule is a valid-component-type rule
-
The rule uses Context attributes, such as
Context.ExecutionDateTime
-
The rule uses one of the following functions:
-
exists()
-
loopSum()
-
conditionalLoopSum()
-
assignedToCatalog()
-
assignedToOrg()
-
-
-
If a validation with a severity of Reject fails, then the entire business entity containing the attribute is rejected.
-
If a validation with a severity of Needs Approval fails, then a change order must be submitted and approved.
-
All related attributes also require a change order. In this context, related attributes are those that are used in any validation that uses an attribute that requires a change order. In other words, if any attribute requires a change order, then all the updated attributes in that validation rule (those specified in the IF Expression and Validation Condition fields of the rule) must also be part of the same change order.
-
If the attributes computed in assignment rules are used in subsequent rules, then they can form a chain of dependencies. In order to ensure that the data remains consistent, the change order requirement is propagated along this dependency chain.
-
The change order requirement propagates only along updated attributes. If an attribute isn't updated, then it should not affect other attributes.
-
Blending
When there are multiple spoke systems providing item data, blending rules are applied during import, to control which item attribute values are imported into production from the multiple spoke systems, based on the blending priority for each spoke system that you define in the blending rules.
Composite
Composite rule sets can contain both assignment and validation rule sets. Composite rule sets can be used to aggregate rule sets that operate on different attribute groups and item classes.
You create a composite rule set on the Manage Rule Sets page. To define a composite rule set of mixed type, ensure it contains both assignment and validation rule sets. Set the type to Mixed, enabling the creation of a rule set that contains both assignment and validation rule sets. Then add assignment and validation rule sets to the composite rule set.
Define Rule Sets and Item Rules
You can define item rules to enforce integrity constraints on the attributes of items and structures.
To define item rules, you must :
-
Define rule sets to contain the rules.
Rule sets can be used for assignments, validations, or blending.
-
Define rules in the rule sets.
The procedure for defining rules differs among assignment, validation, or blending rule sets.
-
Enable the rule sets for execution.
The details for these procedures follow.
Defining Rule Sets
The table following these steps provides details about the fields for defining rule sets.
-
In the Product Information Management work area, select the Manage Item Rule Sets task.
-
Select Create from the Manage Rule Sets task bar.
-
In the Create Rule Set dialog box, enter a name and optional description.
-
Select a value for Composite.
-
Select a value for Type, to determine the type of the rule set.
-
In the Association Type field, select the type of association to use for determining valid attribute expressions.
-
In the Association Name field, select a name to qualify the association type.
-
Select Draft, so that the rule set won't be triggered until you're satisfied with its behavior.
-
Click Save and Continue.
-
Create one or more rules within the rule set. Unless you selected Yes for Composite, you can only create rules of the Type that you chose.
Continue to the procedure for creating assignment or validation rules.
Rule Set Field | Purpose |
---|---|
Display Name |
Visible name for the rule set. You can modify this name later. |
Internal name |
Generated automatically when you leave the Display Name field. May contain only letters, digits, underscores, and periods. Can't be changed after the rule set is created. |
Description |
Optional description of the rule set. |
Composite |
Values are Yes or No. Composite rule sets contain other rule sets, either assignment type, validation type, or both. You can also use composite rule sets to aggregate rule sets that operate on different attribute groups and item classes. You don't select associations for a composite rule set. The associations belong to the rule sets contained in the composite set. If you select Yes, then you can select the rule set type as Mixed, so that the composite set can contain a mixture of assignment and validation rule sets. Blending rule sets can't be composite. |
Type |
The type of the rule set, which determines the type of rules that can be created in the set. You can't change the type of a rule set after creating it. The available types are:
|
Association Type |
Associates the rule set with a set of attributes. When combined with an association name, the association type determines the set of attributes that are considered valid in the rule expressions that you enter. The available association types are:
If Type is Blending, then change order type and new item request aren't available. |
Association Name |
The name of the specific associated type that's the source of valid attributes for rule expressions. For example, if you selected an association type of Attribute group, then search for and select the name of an attribute group. |
Draft |
Select to put this rule set into Draft status. Draft status prevents the rule from being triggered during item transactions, and allows rule impact analysis on the rule set. |
Defining Item Assignment Rules
Define assignment rules to set the values of item attributes based on conditions that you specify.
-
Create or open a rule set of type Assignments.
-
In the Rules tab of the Edit Rule Set page for the rule set, select Create from the Actions menu.
-
In the Create Rule dialog box, enter an integer in the Sequence field.
-
Provide a name and description for the rule.
-
Select a Return Type.
-
If you selected Return Type as Generic, Target Business Entity is enabled and required.
-
Select a value for Target Business Entity. Target Attribute Group is then enabled and required
-
Select a value for Target Attribute Group. Target Attribute is then enabled and required.
-
Specify a value for Target Attribute.
-
-
The following table provides details about the fields defining the header level of the rule. You can modify these values after the rule has been created.
Rule Field Purpose Sequence
An integer. This sequence number determines the order in which the rule will be triggered when the rule set is triggered.
Name
Name for the rule. You can modify this name later.
Description
Optional description of the rule.
Return Type
The result of the assignment defined by the rule. The available return types are:
-
Catalog category: Assigns an item to a catalog category.
-
Generic: Assigns a value to an attribute.
-
Item description: Assigns a description to an item.
-
Item number: Assigns an item number to an item.
-
Organization: Assigns an item to an organization.
Target Business Entity
If Return Type is Generic, a business entity must be specified, to provide an attribute association for validating expressions. The entities are:
-
Item
-
Revision
-
Supplier
A rule can assign values to revision attributes or supplier attributes based on conditions on item attributes, but the reverse isn't true. That is, a rule can't include revision attributes or supplier attributes in a condition for a rule whose target attribute is an item attribute.
Target Attribute Group
The attribute group for the target business entity. Only enabled if Return Type is Generic.
Target Attribute
The attribute for the target attribute group. Only enabled if Return Type is Generic.
-
-
Click OK to accept the header fields.
-
In the Details section, enter rule expressions in the Expression fields described in the following table.
To ensure that valid attribute group and name expressions are used in rules, you can right-click in one of the expression fields and select Insert Attribute, then use the Insert Attribute dialog to populate attribute expressions into the rule fields.
Rule Field Purpose Primary If Expression
Optional. An attribute expression that must evaluate to true or false, which determines whether the assignment is to be performed. You can enter
true
orfalse
as a valid expression. This field can be empty if an expression isn't required.THEN Expression
Required. Composed of:
-
Secondary If Expression: A condition that further determines whether the assignment is to be performed. This field can be empty if an expression isn't required.
-
Return Value: The value resulting from the assignment. Agrees with the return type that you specified.
You can mange additional rows of the THEN Expression with the edit controls on the task bar. The rows are evaluated in the sequence of the expression rows. The execution is halted when the first THEN expression evaluates to True.
User Message
Optional. Displayed to the end user when the rule successfully assigns a value to the target attribute. You can select Hide user message to retain the definition of the message while suppressing it from runtime display.
It's not necessary to check whether attribute values are null (which includes division by zero). Null values normally cause the assignment to be ignored, unless you explicitly want to test for a null value with the
isnull()
function. This feature facilitates incremental processing of an item, where the item might not be completely filled in until the end of a process. -
-
Click Validate to validate the expressions in the rule. A message informs you whether there is an error, or confirms that the rule definition is valid.
-
Define more rules in the rule set, as needed. You can modify the execution order of the rules by editing their sequence numbers.
-
Click Save to save the rule set.
-
Add the rule set to the master rule set, to enable its operation during item transactions.
Defining Item Validation Rules
Define validation rules to validate the values of item attributes based on conditions that you specify.
-
Create or open a rule set of type Validations.
-
In the Rules tab of the Edit Rule Set page for the rule set, select Create from the Actions menu.
-
In the Create Rule dialog box, enter an integer in the Sequence field.
-
Provide a name and description for the rule.
-
Select a level of Severity for the action produced by the rule if the validation fails. Severity only applies to validation rules.
Select Valid Component Rules only if your rule is validating component types, using the
component_type()
function. -
The following table provides details about the fields defining the header level of the rule. You can modify these values after the rule has been created.
Rule Field Purpose Sequence
An integer. This sequence number determines the order in which the rule will be triggered when the rule set is triggered.
Name
Name for the rule. You can modify this name later.
Description
Optional description of the rule.
Severity
The severity of the action that's produced if the validation fails.
-
Warning: The explanation message is displayed to the user, but the business entity can still be saved
-
Needs Approval: The data requires that a change order be created.
-
Reject: The business entity can't be saved until the validation passes. You can increase the severity of this validation result by selecting Stop further processing when rejected.
-
-
Click OK to accept the header fields.
-
In the Details section, enter rule expressions in the Expression fields described in the following table.
To ensure that valid attribute group and name expressions are used in rules, you can right-click in one of the expression fields and select Insert Attribute, then use the Insert Attribute dialog to populate attribute expressions into the rule fields.
Rule Field Purpose If Expression
Optional. An attribute expression that must evaluate to true or false, which determines whether the validation is to be performed. The expression must evaluate to true for the validation to occur. You can enter
true
orfalse
as a valid expression. This field can be empty if an expression isn't required.Validation Condition
Required.
This condition is evaluated when the result of the If Expression is
true
. When the validation condition evaluates tofalse
, then the validation fails, and the action for the selected severity is executed. The User Message is also displayed, for failures.User Message
Optional. Displayed to the end user only when the Validation Condition evaluates to
false
.It's not necessary to check whether attribute values are null (which includes division by zero). Null values normally cause the validation to be ignored, unless you explicitly want to test for a null value with the
isnull()
function. This feature facilitates incremental processing of an item, where the item might not be completely filled in until the end of a process. -
Click Validate to validate the expressions in the rule. A message informs you whether there is an error, or confirms that the rule definition is valid.
-
Define more rules in the rule set, as needed. You can modify the execution order of the rules by editing their sequence numbers.
-
Click Save to save the rule set.
-
Add the rule set to the master rule set, to enable its operation during item transactions.
Enabling Rule Sets and Rules
Before a rule can run, you must enable the rule set that contains it. To enable a rule set, you must assign it to the master rule set, either directly, or by adding it to a rule set that's included in the master rule set.
The master rule set (named MASTER_RULE_SET) is a predefined rule set that contains other rule sets, which can in turn include other rule sets. In each composite rule set, a sequence number controls the order in which its included rule sets are to be executed at run time.
-
On the Manage Rule Sets page, search for MASTER_RULE_SET and edit it.
-
On the Edit Rule Set page for MASTER_RULE_SET, on the Included Rule Sets tab, select Add from the Actions menu.
-
In the Select and Add: Rule Sets dialog box, search for your rule set by name, or by one of the other fields that define a rule set.
-
Select your rule set from the search results, and click OK.
-
Your rule set appears in the list of rule sets included in the master rule set, with the next available sequence number, which determines the order of execution of the included rule set. You can select Edit Sequence from the Actions menu to modify the sequence.
-
Click Save to save the master rule set.
-
On the Edit Rule Set page for your own rule set, the Rule Sets Where Included tab shows that your rule set is included in the master rule set.
Example of Creating an Item Rule Set and Rules
In this example, you create rule sets and rules to implement integrity constraints for a computer motherboard.
The following table summarizes the attribute value assignments required for this scenario.
Attribute | Constraint |
---|---|
Lead Percent |
Is Total Lead Mass divided by Unit Weight |
Sellable Date (date when item can be sold) |
Is 10 days after the Availability Date |
The following table summarizes the attribute value validations required for this scenario.
Attribute | Constraint |
---|---|
Minimum CPU Speed (in MHz) |
Must be less than Maximum CPU Speed |
Purchasable |
If set to Yes, then a value for List Price must be set |
Unit Height |
Can't change by more than 3% without requiring approval |
Task Summary
To implement the above constraints, complete the following tasks:
-
Create an assignment rule set.
-
Create assignment rules.
-
Create a validation rule set.
-
Create validation rules.
-
Create a composite rule set.
-
Add the composite rule set to the master rule set.
Create an Assignment Rule Set
In general, rule sets that perform assignments should be executed before validations, so that validation rules can ensure that the results of the assignments are valid.-
In the Product Information Management work area, select the Manage Item Rule Sets task.
-
Select Create from the Manage Rule Sets task bar.
-
In the Create Rule Set dialog box, enter a name and optional description.
The internal name won't be changeable after the rule set is created.
-
For Composite, select No.
-
For Type, select Assignments.
-
For Association Type, select Item Class.
-
For Association Name, select Chemicals.
-
Click Save and Continue.
The Edit Rule Set page shows a rule set with the specified attribute context, but no rules yet. All the attribute groups in the selected item class are available for us in item rules.
Create Assignment Rules
The assignment to be made by the first rule is:
-
Lead Percent is Total Lead Mass divided by Unit Weight
-
In the Rules tab of the Edit Rule Set page, select Create from the Actions menu.
-
In the Create Rule dialog box, enter or select the values shown in the following table.
Field Value Sequence
10
Name
Lead Percent
Description
Lead Percent is Total Lead Mass divided by Unit Weight
Return Type
Generic
Target Business Entity
Item
Target Attribute Group
Hazard (for an example user-defined attribute group (EFF))
Target Attribute
Lead Percent (for an example user-defined attribute group (EFF))
-
Click OK to accept the header fields.
-
In the Details section, enter rule expressions in the expression fields described in the following table.
To ensure that valid attribute group and name expressions are used in rules, you can right-click in one of the expression fields and select Insert Attribute, then use the Insert Attribute dialog to populate attribute expressions into the rule fields.
Field Value Primary If Expression
(You can leave this field empty. The value
true
is inserted when this field is null.)THEN Expression
(Consists of the Secondary If Expression and Return Value shown in the following rows)
Secondary If Expression
(You can leave this field empty. The value
true
is inserted when this field is null.)Return Value
round(([Item].[Hazard].[Lead Mass] / [Item].[Physical Attributes].[Unit Weight]) * 100, 2)
User Message
Percent is Mass ($[Item].[Hazard].[Lead Mass]$) divided by Weight ($[Item].[Physical Attributes].[Unit Weight]$).
Enclosing an attribute expression with dollar sign symbols (
$
) renders the current value of the attribute in the displayed user message. For the example shown here, the message is:Percent is Mass (100) divided by Weight (gms).
-
Click Validate to validate the expressions in the rule.
-
Click Save to save the rule set.
Saving the rule set enters the first assignment rule into set. Since rules are executed in the sequence you specify, you can ensure that values needed by attributes in later expressions are calculated in earlier expressions.
The assignment to be made by the second rule is:
-
Sellable Date Is 10 days after the Availability Date
This assignment is equivalent to the code in the following example, which shows how you can use conditional processing in an item rule:
The following steps show how to express that code block in an item rule definition.if ([Item].[Main].[Sellable Flag] == "Yes") if ([Item].[Item basic].[Item Class] == "Perishables") then [Item].[Marketing].[Sellable Date] = [Item].[Planning].[Availability Date] + 3 else if ([Item].[Item basic].[Item Class]== "Consumables") then [Item].[Marketing].[Sellable Date] = [Item].[Planning].[Availability Date] + 6 else [Item].[Marketing].[Sellable Date] = [Item].[Planning].[Availability Date] + 10
-
-
In the Rules tab of the Edit Rule Set page, select Create from the Actions menu.
-
In the Create Rule dialog box, enter or select the values shown in the following table.
Field Value Sequence
20
Name
Sellable Date Calculation
Description
Calculate Sellable date based on the Availability Date.
Return Type
Generic
Target Business Entity
Item
Target Attribute Group
Marketing
Target Attribute
Sellable Date
-
Click OK to accept the header fields.
-
In the Details section, enter rule expressions in the expression fields described in the following table. You will have to add an additional two rows of Then Expression by selecting the last row in the table and clicking Add Row.
Field Value Primary If Expression
[Item].[Main].[Sellable Flag] == "Yes"
(first) THEN Expression
(Consists of the Secondary If Expression and Return Value shown in the following rows)
Secondary If Expression
[Item].[Item basic].[Item Class] == "Perishables")
Return Value
[Item].[Planning].[Availability Date] + 3
(second) THEN Expression
Secondary If Expression
[Item].[Item basic].[Item Class]== "Consumables"
Return Value
[Item].[Planning].[Availability Date] + 6
(third) THEN Expression
Secondary If Expression
(This field remains empty.)
Return Value
[Item].[Planning].[Availability Date] + 10
User Message
(This field remains empty.)
Leaving the last Secondary If Expression blank means it defaults to
true
and is always selected. No User Message was entered, so nothing is shown to the user. -
Click Validate to validate the expressions in the rule. Click Save to save the rule set.
The assignment rule set is now complete.
Create a Validation Rule Set
Validation rule sets are created in much the same way as assignment rule sets, except that the Type is set to Validation.
-
On the Manage Rule Sets task page, select Create from the task bar.
-
In the Create Rule Set dialog box, enter a name and optional description.
-
For Composite, select No.
-
For Type, select Validations.
-
For Association Type, select Item Class.
-
For Association Name, select Computers or Laptops.
-
Click Save and Continue.
Create Validation Rules
The validation to be made by the first rule is:
-
Minimum CPU Speed (in MHz) Must be less than Maximum CPU Speed
-
In the Rules tab of the Edit Rule Set page, select Create from the Actions menu.
-
In the Create Rule dialog box, enter or select the values shown in the following table.
Field Value Sequence
10
Name
Maximum Minimum CPU Check
Description
Check that Minimum CPU Clock Speed is less than Maximum CPU Clock Speed.
Severity
Reject
-
Click OK to accept the header fields.
-
In the Details section, enter rule expressions in the expression fields described in the following table.
Field Value IF Expression
(This field remains empty.)
Validation Condition
[Item].[Motherboard Spec].[Min CPU Speed] <= [Item].[Motherboard Spec].[Max CPU Speed]
User Message
Minimum CPU Speed has to be less than or equal to Maximum CPU Speed.
-
Click Validate to validate the expressions in the rule. Click Save to save the rule set.
The validation to be made by the second rule is:
-
If Purchasable is set to Yes, then a value for List Price must be set
This validation demonstrates how the value of one field must be value based on the value of another field.
-
-
In the Rules tab of the Edit Rule Set page, select Create from the Actions menu. In the Create Rule dialog box, enter or select the values shown in the following table.
Field Value Sequence
20
Name
Require List Price
Description
List Price must be set if Purchasable is set to Yes
Severity
Reject
-
Click OK to accept the header fields. In the Details section, enter rule expressions in the expression fields described in the following table. The
!
in the function expression!isnull()
negates the logical result of the expression.Field Value IF Expression
[Item].[Purchasing].[Purchasable] == "Yes"
Validation Condition
(!isnull([Item].[Purchasing].[List Price]))
User Message
If Purchasable is set to Yes then List Price can't be null.
-
Click Validate to validate the expressions in the rule. Click Save to save the rule set.
The validation to be made by the third rule is:
-
Unit Height can't change by more than 3% without requiring approval.
This validation demonstrates how to check the new attribute value against the value that's currently in production. If this validation fails, then the user will be required to create a change order for this change.
-
-
In the Rules tab of the Edit Rule Set page, select Create from the Actions menu. In the Create Rule dialog box, enter or select the values shown in the following table.
Field Value Sequence
30
Name
Height Change
Description
Unit Height can't change by more than 3%.
Severity
Needs Approval
-
Click OK to accept the header fields. In the Details section, enter rule expressions in the expression fields described in the following table.
Field Value IF Expression
(This field remains empty.)
Validation Condition
abs(percent([Item].[Physical Attributes].[Height])) > 3.0
User Message
A unit height change of 3% requires a change order.
The
percent()
function returns the percentage change of the new value to the value in production. This change can be positive or negative, hence theabs()
function converts it to an absolute change. -
Click Validate to validate the expressions in the rule. Click Save to save the rule set.
The validation rule set is now complete. Click on the Usage tab to review all the attributes used in this rule set. Click Save and Close to return to the Manage Rule Sets page.
Create a Composite Rule Set
Now create a composite rule set that includes both of the rule sets that you just created. This is the rule set that you will assign to the Item entity in the final step to activate the rules we have created.-
On the Manage Rule Sets task page, select Create from the task bar.
-
In the Create Rule Set dialog box, enter a name and optional description.
-
For Composite, select Yes.
-
For Type, select Mixed.
In more complex scenarios, you might have multiple layers of composite rule sets, some of which you only want to contain validations or assignments rules. But eventually you will want to include both kinds of rules.
-
Click Save and Continue.
-
On the Included Rule Sets tab of the Edit Rule Set page for the new composite rule set, select Add from the Actions menu.
-
In the Select and Add: Rule Sets dialog box, search for and select the assignment rule set that you created, then click the Apply button.
-
Repeat the search and selection step to add the new validation rule set to the composite rule set.
-
The rule sets will be executed in the order that they're listed in the Included Rule Sets list, so it's important to put validations after assignments if you want to validate some of the assignment results that you calculated.
-
Click Save and Close.
Add the Composite Rule Set To the Master Rule Set
The rules you created aren't active until you add them to the Master Rule Set, as described in the following steps. Also, note that the Draft check box should be deselected for a rule set to be executed at runtime. Draft rule sets aren't run during regular transactions.
-
On the Manage Rule Sets page, search for MASTER_RULE_SET and edit it.
-
On the Edit Rule Set page for MASTER_RULE_SET, on the Included Rule Sets tab, select Add from the Actions menu.
-
In the Select and Add: Rule Sets dialog box, search for your composite rule set by name, or by one of the other fields that define a rule set.
-
Select your rule set from the search results, and click OK.
-
Your rule set appears in the list of rule sets included in the master rule set, with the next available sequence number, which determines the order of execution of the included rule set. You can select Edit Sequence from the Actions menu to modify the sequence.
-
Click Save to save the master rule set.
You are now ready to test the validations. When you make the relevant item updates, the updated values should be validated by the rules that are triggered, and the error messages should appear.
You can also examine some of the other tabs on the Edit Rule Set page. In the validation and assignment rule sets the Rule Sets Where Included tab should now show the composite rule set that you added them to. In the composite rule set, the Attributes section on the Usages tab should show the item assignments for the rule sets.
Item Rule Data Types
Attributes in item rules belong to one of a set of data types.
In item rule expressions, all values are of one of the data types listed in the following table.
Data Type | Description |
---|---|
String |
All strings and text characters |
Number |
All decimals and integers |
Date |
Dates only, without times |
Time |
Times only, without dates |
DateTime |
Combination of Date and Time |
Null or Empty Values
Any attribute referenced in an item rule can have
an empty or null value. To test for empty or null values you must
use the function isnull
.
Strings
Strings are delimited by double or single quotation
marks ("
or '
).To escape a character's normal value (for example, in a regular
expression), prefix it with the backslash (\
).
Numbers
Depending on the setting of the regional preference
for number format, the decimal point in decimal numbers can be represented
by either a period character (.
) or
by a comma (,
). If the comma is used
as a decimal point, then arguments to functions must be delimited
by semicolons (;
).
Dates and Times
Dates and times are represented by the types Date, DateTime, and Time.
Dates will be entered in the format that you specify in the setting of the regional preference for date format . Date constants will automatically be reformatted if a you log in with a difference preference.
The following expression using a Date value is valid:
[Item].[Logistics].[StartDate] > "2005-Feb-23"
When writing an expression containing terms representing dates and times, enclose them in double quotation marks. They're internally converted to String values before they're compared. The following expression compares an attribute value to a textual date term.
Days can be added to a Date using Numbers. For example, the following expression computes the sell date as 30 days after the availability date:
[Item].[Logistics].[SellDate] > [Logistics].[AvailableDate] + 30
You can't perform date calculations involving Custom Calendars.
Item Rule Syntax
Item Rules are used in defining and validating integrity constraints on item attributes, and in assigning values to attributes.
Basic Rule Formation
Item rules consist of expressions, operators, and functions. Most expressions reference the value of an item attribute.
Rules can encapsulate a single integrity constraint. The following example checks that a given attribute is less than another:
[Item].[Physical Attributes].[Unit Weight] <= [Item].[Logistics].[Shipping Weight]
In other words, the net weight of an item always has to be less than or equal to the shipping weight.
Rules can define assignment formulas. The following example is used in assigning a value for a "Daily Waste Percent" attribute:
[Item].[Logistics].[Total Waste Percent] / [Item].[Inventory].[Shelf Life Days]
In the preceding example, the daily waste percent is the total waste percent divided by the shelf life in days.
Attribute Expressions
You access the value of an attribute by appending
its name to its entity and attribute group, separated by a delimiter.
The delimiter is the period character (.
). You can use the display name of an attribute naming element, which
can include space characters, but must be enclosed in single brackets.
Following is the syntax of an attribute expression:
[<Entity Name>].[<Attribute Group Name>].[<Attribute Name>]
When referencing descriptive flexfields, use the segment code, as in the following example:
[ChangeHeader].Flexfield[Product__Line]
UOM Expressions
If an attribute definition includes a unit
of measure (UOM), you can access the unit by appending UOM
to the attribute expression.
The following example shows the syntax for an expression that accesses the UOM for an attribute:
[Item].[<Attribute Group Name>].[<Attribute> Unit of Measure]
For example, the following expression might return kg
if the attribute's UOM is kilograms:
[Item].[Physical Attributes].[Weight Unit of Measure]
So for this attribute you can use expressions like:
[Item].[Physical Attributes].[Weight Unit of Measure] == "K"
All comparisons between amounts are automatically adjusted to account for different UOMs. Accessing the UOM of an attribute explicitly should not be necessary for comparison purposes.
Null Values
Rules that reference attributes that have no value (also called a null value) are ignored. Expressions that evaluate to NULL are ignored.
That means that you never need to code Validations like:
if (not isnull(Item.PhysicalAttributes.Weight)) then Item.PhysicalAttributes.Weight <= 10
The "if" part is redundant, since if Weight was NULL
the validation would be ignored. If you do want to check that an attribute
has a non-null value, use the isnull
function, which can be used to check that an attribute has a value
entered.
Boolean Expressions
Boolean expressions are those that return TRUE, FALSE or null. Boolean expressions can be used in If Expression and Validation Condition fields of the Edit Rule Set page. Use logical and comparison operators and functions in Boolean expressions.
Item Rule Multirow Attribute Group Functions
To reference a value in a particular row of a multirow attribute group, use one of the following functions.
To make a rule set specific to an item class, assign it to that item class during rule set creation. That rule set will then be active for each entity that has that item class as a parent or as an ancestor. You can't access any other attributes associated with an item class.
Example: a rule with the following If Expression
that references the multirow attribute groups MR_AG1 and MR_AG2, where
MR_AG1 has m
number of rows and MR_AG2
has n
number of rows:
!changed ([Item].[MR_AG1])
OR
!changed ([Item].[MR_AG2])
This rule is executed m*n
times. You can reduce the number of executions to m+n
by splitting the rule into two rules, to
separate the references to the multirow attribute groups.
loopSum
Syntax:
loopSum([Entity name].[multirow Attribute Group Name].[Attribute Name])
The loopSum function takes one numeric sub-expression as an argument. It runs the sub-expression for each multirow row attribute group and compute the sum of the results.
Example
In this example, the sum of the values in all the rows of Percentage attribute can't be a value other than 100.
Severity: Reject
If Expression: (loopSum([Item].[Composition].[Percentage])) != 100
conditionalLoopSum
Syntax:
conditionalLoopSum(boolean_expression, [Entity name].[multirow AttributeGroupName].[Attribute Name])
The conditionalLoopSum function takes two sub-expression arguments. The first argument must be a boolean expression and the second argument will be a numeric sub-expression. The function runs the boolean sub-expression for each multirow row and, if the boolean evaluates to true, computes the numeric sub-expression for that row. The function returns the sum of the computed numeric expressions.
Example
In this example, assume a multirow attribute group
named Forecast
with the following rows.
Customer | Location | Required Quantity |
---|---|---|
ABC |
Seattle |
20 |
XYZ |
Seattle |
30 |
ABC |
Boston |
25 |
The following example will sum up the values of Required Quantity for which the corresponding Location is Seattle:
conditionalLoopSum([Item].[Forecast].[Location] == "Seattle", [Item].[Forecast].[Required Qty])
Item Rule Numeric Functions and Operators
Use numeric functions and operators to calculate values of numeric expressions.
Numeric Operators
The numeric operators available in item rules are listed below.
-
+ (addition)
-
- (subtraction)
-
* (multiplication)
-
/ (division)
-
sum (aggregation)
- expression1 + expression2
-
Performs regular mathematical addition of
expression1
andexpression2
. Returns null if any argument is null. - expression1 - expression2
-
Performs regular mathematical subtraction of
expression2
fromexpression1
. Returns null if any argument is null. - expression1 * expression2
-
Performs regular mathematical multiplication of
expression1
andexpression2
. Returns null if any argument is null. - expression1 / expression2
-
Performs regular mathematical division of
expression1
byexpression2
. Returns null if any argument is null. Division by 0 returns null. The number of decimal digits returned by division is the maximum number of digits fromexpression1
andexpression2
. - sum(expression1, expression2, expression3, ...)
-
Adds a series of values. Returns null if any argument is null.
Numeric Operator Expressions
Numeric Functions
The numeric functions available in item rules are listed below.
abs
Syntax:
abs (expression)
Returns the absolute value of expression
.
Example:
In this example, the percentage weight change has to be less than 10.
abs(percent([Item].[Physical Attributes].[Unit Weight])) <= 10
ConvertToUOM
Syntax:
ConvertToUOM(expression, "target UOM")
Returns an amount in the specified target UOM
. This conversion ensures that comparisons
or calculations are performed using the appropriate UOM.
Example:
In this example, the unit weight of an item has to be less than or equal to 10 kg.
ConvertToUOM([Item].[Physical Attributes].[Unit Weight], "kg") <= 10
max
Syntax:
max(expression1, expression2, ...)
Returns the maximum value of a series of values. Can also be used for arrays or in query expressions.
Example:
In this example, the result would be 2006-11-30
.
max("2006-10-12", "2006-11-30")
min
Syntax:
min(expression1, expression2, ...)
Returns the minimum value of a series of values. Can also be used for arrays or in query expressions.
Example:
In this example, the result would be 2006-10-12
.
min("2006-10-12", "2006-11-30")
round
Syntax:
round(expression, decimal_places)
Rounds a number to the specified number of decimal
places. round
rounds to the nearest
value.
Example:
In this example, the returned value is 1.58.
round(1.5758, 2)
rounddown
Syntax:
rounddown(expression, decimal_places)
Rounds a number to the specified number of decimal
places. rounddown
rounds toward zero.
Example:
In this example, the returned value is 1.57.
rounddown(1.5758, 2)
roundup
Syntax:
roundup(expression, decimal_places)
Rounds a number to the specified number of decimal
places. roundup
rounds away from zero.
Example:
In this example, the returned value is 1.58.
roundup(1.5758, 2)
Item Rule Production Value Functions
Use item rule production value functions and operators to compare the new value of an attribute to the value that is currently in production. This can be especially useful in tolerance rules.
changed
Syntax:
changed(attribute)
changed(attributeGroup)
Returns TRUE if the current value of attribute
or attributeGroup
differs from the current production value. Returns FALSE otherwise.
Works with null values. If only attributeGroup
is specified, then returns TRUE if any attribute in that attribute
group has changed.
delta
Syntax:
delta(attribute)
Returns the difference between new and current production
values of attribute
. Comparisons of
String values are case-insensitive. In comparisons of Boolean values,
TRUE is considered greater than FALSE.
The following table illustrates the return value of this function when comparing new and current production values of various combinations of Numeric, Date, and DateTime attribute types.
Value comparison | Returned result for Numeric values | Returned result for Date or DateTime values |
---|---|---|
new < current production |
new minus current production |
new minus current production |
new > current production |
new minus current production |
new minus current production |
new == current production |
0 |
0 |
current production does not exist |
null |
null |
both new and current production are null |
0 |
0 |
either new or current production are null, but not both |
null |
null |
percent
Syntax:
percent(attribute)
Returns the difference between new and current production values, expressed as a percentage, according to the following formula:
(delta(attribute) / current_production_value ) * 100
Where attribute
is
the argument passed to percent()
, and current_production_value
is the current production
value of the attribute. Can only be used with Numeric attributes.
previous
Syntax:
previous(attribute)
Returns the previous production value of attribute
.
Item Rule String Functions
All string functions are case-sensitive.
To perform a case-insensitive comparison use the ==
comparison operator.
String Comparison Functions
compare
Syntax:
compare(string1, string2)
Returns 0 when string1
is exactly equal to string2
. Returns
-1 if string1
is lexicographically
less than string2
. Returns +1 if string1
is lexicographically greater than string2
contains
Syntax:
contains(look_for_string, look_in_string)
Returns TRUE when look_for_string
is found in look_in_string
. Returns
FALSE otherwise.
Example:
The following example returns TRUE if the item description is "computer accessory product".
If Expression: contains("accessory", [item].[main].[description])
endsWith
Syntax:
endsWith(look_for_string, look_in_string)
Returns TRUE when look_in_string
ends with look_for_string
. Returns
FALSE otherwise.
match
Syntax:
match(regexp_pattern, look_in_string)
Returns TRUE when regexp_pattern
matches look_in_string
. Returns FALSE
otherwise..
This function uses regular expression pattern matching in its search. For reference on regular expressions, see the Javadoc reference for java.util.regex.Pattern ( http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html).
Example:
The following example returns TRUE if the description includes "electronic" or "electric".
match("ele*c", [item].[main].[description])
startsWith
Syntax:
startsWith(look_for_string, look_in_string)
Returns TRUE when look_in_string
starts with look_for_string
. Returns
FALSE otherwise.
Example:
The following example returns TRUE if the item description is "Notebook".
startsWith("Note", [item].[main].[description])
Other String Functions
+ (plus sign)
Syntax:
expression1 + expression2
Concatenates two expressions and returns the resulting string. Note that this also returns a valid string if the expressions are of other data types.
indexOf
Syntax:
(look_for_string, look_in_string)
Returns position of look_for_string
in look_in_string
. String position
starts at 0. Returns -1 if look_for_string
isn't found. The search is case-sensitive. Returns null if either
expression is null.
length
Syntax:
length(expression)
Returns the length of the string expression
. Returns null if expression
is null.
lowercase
Syntax:
lowercase(expression)
Returns the lowercase equivalent of the string expression
. Returns null if expression
is null.
substring
Syntax:
substring(string, start)
substring(string, start, end)
Returns a substring of the string string
starting at start
and
ending before end
. If end
is omitted, then returns remainder of string
. String position starts at 0. If start
is less than 0 then start at the beginning
of the string. If start
is greater
than length of string
then return up
to the end of the string. Returns null if any of the arguments is
null.
Example:
You can use rules to validate that the Packaging Indicator digit for a GTIN is appropriate for the Pack Type of the item. GTINs can be assigned at multiple levels of a packaging hierarchy. Consider a scenario in which your GTIN numbering rule declares that, if the pack type of the Item is "EA", then the fourth digit of the GTIN should be 8. You can use the following rule expressions in a validation rule to perform this kind of validation.
If Expression: [Item].[Main].[Pack Type] == "EA"
Validation Condition: subString([GTIN].[GTIN Main].[GTIN], 4, 4) == "8"
trim
Syntax:
trim(expression)
Removes all leading and trailing (but not middle)
white space characters from a expression
. Returns null if expression
is null.
uppercase
Syntax:
uppercase(expression)
Returns the uppercase equivalent of the string expression
. Returns null if expression
is null.
Item Rule Logical Functions and Operators
Use item rule logical functions and operators to test the validity of expressions.
Logical Operators
The logical operators available in item rules are listed below.
-
and
(logical AND) -
or
(logical OR) -
not
(logical NOT)
and
Syntax:
expression1 and expression2
You can also use the notation &&
in place of the and
operator.
The logical and
operator
implements the following truth table for expression1
and expression2
.
expression1 | expression2 | expression1 and expression2
|
---|---|---|
F |
F |
F |
F |
T |
F |
T |
F |
F |
T |
T |
T |
F |
null |
F |
null |
*[see note] |
null |
* The processor stops after it finds the first FALSE.
Hence there is an asymmetry between F and null
and null and F
.
or
Syntax:
expression1 or expression2
You can also use the notation ||
in place of the or
operator.
The logical or
operator
implements the following truth table for expression1
and expression2
.
expression1 | expression2 | expression1 or expression2
|
---|---|---|
F |
F |
F |
F |
T |
T |
T |
F |
T |
T |
T |
T |
T |
Null |
T |
null |
*[see note] |
null |
* The processor stops after it finds the first TRUE.
Hence there is an asymmetry between T and null
and null and T
.
not
Syntax:
not expression1
The logical not
operator
implements the following truth table for expression1
and not expression1
.
expression1 | not expression1 |
---|---|
F |
T |
T |
F |
null |
null |
Logical Functions
The logical functions available in item rules are listed below.
assignedToOrg
Syntax:
assignedtoOrg("org_code")
In a validation expression, returns TRUE if the item is assigned to the specified organization.
Example:
In the following example, when the item class of the item is Extra Data Servers, the organization can't be S2.
Severity: Reject
If Expression: [Item].[Item Basic].[Item Class] == "Extra Data Servers"
Validation Expression: !assignedtoOrg("S2")
assignedtoCatalog
Syntax:
assignedToCatalog(Catalog[CatalogCode].Category[CategoryCode])
In a validation expression, returns TRUE if the item is assigned to the specified catalog and category.
Example:
In the following example, if an item is assigned to the catalog Ladies Wear and the category Summer, it can't be assigned to catalog Kids and category Summer.
Severity: Reject
If Expression:
assignedtoCatalog(Catalog[LadiesWear].Category[Summer])
Validation Expression:
!assignedtoCatalog(Catalog[Kids].Category[Summer])
component_type
Syntax:
component_type("typename1", "typename2", ...)
In a validation expression that checks the component types for a structure, returns TRUE if the components associated with the structure are valid. The argument is a list of valid user item types for the components.
When creating a rule that checks the component types for a structure, you must select the Valid Component Rules check box in the Create Rules dialog box.
Unlike other validation rules, rules that validate components don't have a Severity.
Example:
In the following example, when the structure is Primary,
only type1
and type2
can be used as components of the structure.
If Expression: [Structure].[Structure Attributes].[Structure Name] == "Primary"
Validation Condition: component_type("type1","type2")
exists
Syntax:
exists(Boolean_expression)
Loops through the rows of the entities used in Boolean_expression
and returns TRUE if the
expression is satisfied for any of the rows.
You can use exists()
on the following entities:
-
relationships (related item relationships and cross-references)
-
structures
-
multirow attribute groups
Example expressions:
The following expression loops through all the structures on an item and returns TRUE if the any structure has the name "ManufacturingBOM".
exists([Structure].[Structure Attributes].[Structure Name] == "ManufacturingBOM")
The following expression validates whether a particular relationship exists for an item:
exists([Relateditem.[RelateditemMain[.[Type] == "Up-sell")
The following expression verifies whether a row exists in a multirow attribute group:
exists(isNull([Item].[Ingredients].[Ingredient Name]) == false)
Example rules:
The following rule verifies that if the item attribute Pack Type
is specified, then the GTIN attribute GTIN
can't be null
If Expression:
isNull([Item].[Main].[PACK TYPE]) == false
Validation Condition:
exists(isNull([GTIN].[GTIN Main].[GTIN])) == false
The following rule verifies that if the value of
the attribute TM
is US
, then the GTIN relationship must be with a Customer named
USFDA.
If Expression:
[Item].[Group1].[TM] == "US"
Validation Condition:
[GTIN].[GTIN Main].[Party Type] == "Customer" AND
[GTIN].[GTIN Main].[Party Name] == "USFDA"
from_item_class
Syntax
from_item_class ("item class name")
Invoked when the item class of an item is being changed.
In a validation expression, returns TRUE if the name of the original
item class matches "item class name"
, which must be enclosed in quotation marks.
Example:
The following example returns TRUE if the original
item class is TCParent
:
FROM_ITEM_CLASS("TCParent")
Combined example:
The following example prevents changing the item class of an item from Pneumatic_Pumps to Hydraulic_Pumps.
Severity: Reject
If Expression:
FROM_ITEM_CLASS("Pneumatic_Pumps") && TO_ITEM_CLASS("Hydraulic_Pumps")
to_item_class
Syntax
to_item_class("item class name")
Invoked when the item class of an item is being changed.
In a validation expression, returns TRUE if the name of the new item
class matches "item class name"
, which
must be enclosed in quotation marks.
Example:
The following example returns TRUE if the new item
class is TCCHLDVR
TO_ITEM_CLASS("TCCHLDVR")
Descriptive Flexfields
Descriptive flexfields don't belong to any attribute
group, and are accessed using the FlexField
segment code.
[<Entity Name>].Flexfield[<Flexfield segment code>]
Example:
[ChangeHeader].Flexfield[Product__Line]
Comparison Operators
The comparison operators available in item rules are listed below.
-
==
(equals) -
!=
(not equals) -
<
(less than) -
<=
(less than or equal) -
>
(greater than) -
>=
(greater than)
Comparison operators compare two Boolean expressions
and return TRUE or FALSE, depending on the result of the comparison.
If one or both expressions are null, then the comparison returns null.To
check for null values, use the comparison function isnull
.
String comparison is case-insensitive. For case-sensitive
comparison use the string function compare
.
Syntax:
expression1 == expression2 (equals
expression1 != expression2
expression1 < expression2
expression1 <= expression2
expression1 > expression2comp
expression1 >= expression2
isnull
Syntax:
isnull(expression)
Returns TRUE if its argument is null, returns FALSE otherwise. This function lets you explicitly test whether a value is null. Unlike other functions, it's not ignored if the value of the argument is null.
The logical function isnull()
implements the following truth table for expression
.
expression | isnull(expression) |
---|---|
null |
T |
not null |
F |
nvl
Syntax:
nvl(expression,replacement-expression)
If expression
is null
or an empty string, returns replacement-expression
.
Example:
The following example returns an empty string if
the attribute Attr1
is null.
nvl([Item].[AttrGrp1].[Attr1], "")
In a scenario such as generating an item description
based on a large number of extensible flexfield attributes, it can
be inconvenient to use the isnull()
function when you want rules to keep executing even if one or more
of the used attributes is null, because isnull()
returns a Boolean value, which must be handled individually for
each attribute. The following example concatenates a series of attribute
values into a long description, and uses nvl()
to insert an empty string into the description where any of the
referenced attributes is null:
"Pipe Non-Metallic" +
":OUTSIDE DIAMETER:" + nvl([Item].[Pipe:Non-Metallic].[Outside Diameter],"") +
":NOMINAL SIZE:" + nvl([Item].[Pipe:Non-Metallic].[Nominal Size],"") +
":COLOR:" + nvl([Item].[Pipe:Non-Metallic].[Color],"")
Item Rule Expressions with Business Entities
Item rules refer to attributes through references that include the business entity that includes the attribute.
Supported Business Entities
When you reference an attribute in rule expressions, specify the business entity as the first term in the expression, as shown in the following examples:
Syntax:
[entity name].[attribute group name].[attribute]
Example:
[Item].[Main].[Item Status]
The business entities supported for use in item rules are listed in the following table:
Entity | For assignment rules | For validation rules |
---|---|---|
Cross Reference |
No |
Yes |
GTIN |
No |
Yes |
Item |
Yes |
Yes |
Related Item |
No |
Yes |
Revision |
Yes |
Yes |
Structure |
No |
Yes |
Style Item |
No |
Yes |
Supplier |
Yes |
Yes |
Cross-Entity References
You can reference attributes from certain other entities while creating rules for an attribute belonging to an entity.
For instance, you can create a validation constraint for a supplier-level attribute that references an item-level attribute, as summarized in the following example:
Field | Value |
---|---|
Severity |
Reject |
IF Expression |
|
Validation Condition |
|
The following example summarizes another validation rule that references attributes from different entities, namely the item and cross-reference relationship entities:
Field | Value |
---|---|
Severity |
Warning |
IF Expression |
|
Validation Condition |
|
Using GTIN Entities
You can reference GTIN (Global Trade Identification Number) attributes to enforce your own business validations with regard to GTIN association.
Based on the specified criteria involving attributes or organizations, GTIN validation rules can check whether a GTIN is associated to an item, or check whether there was any change in the associated GTIN.
GTIN rules can also validate the digits of an item's GTIN. You can use a rule to validate that the Packaging Indicator digit for a GTIN is appropriate for the Pack Type of the item. GTINs can be assigned at multiple levels of a packaging hierarchy. Consider a scenario in which your GTIN numbering rule declares that, if the pack type of the Item is "Case", then the fourth digit of the GTIN should be 8. The following example summarizes a validation rule that references attributes for Item and GTIN entities.
Field | Value |
---|---|
Severity |
Warning |
IF Expression |
|
Validation Condition |
|
Using Style Item Entities
You can use the Style Item entity to access the attributes of the corresponding style item of SKU items.
If a rule contains a Style Item entity then the rule will only be run if:
-
The user modified a style item.
-
The user created or modified a SKU item.
-
The user created or modified an entity (such as a revision, or supplier association) on a SKU item and the rule also uses that entity.
The following example summarizes an assignment rule that references attributes from the Style Item entity:
Field | Value |
---|---|
Return type |
Item Description |
Primary If Expression |
|
Secondary If Expression |
|
Return Value |
|
Item Rule Utility Functions
Use these functions in building more complex expressions.
auto_sequence
Syntax:
auto_sequence("Sequence Name", starting_num, increment_by)
Searches for Sequence Name
in the database tables. Enclose the sequence name in quotation marks
to preserve space characters in the name. The sequence name is not
case-sensitive. If
the sequence exists, then the function returns the next value from
the sequence. If the sequence does not exist, then the function creates
a sequence with the specified name and returns starting_num
. Further numbers in the sequence are incremented
by increment_by
. This function can
be used in defining the return value of assignment and validation
rules.
Example: The following expression used as the return
value of a rule whose target attribute is [General
attributes].[EDC Number]
produces a sequence of numbers beginning
at 1000 and increasing by 5 for each new item:
auto_sequence("EDC Number", 1000, 5)
between
Syntax:
between(value, minimum, maximum)
Returns TRUE if value
falls between minimum
and maximum
. Returns FALSE otherwise. All arguments
are of type Number, Date, or DateTime.
decode
Syntax:
decode(expression, search1, result1, [search2, result2, ...], [default])
Compares expression
to the specified series of search
arguments, one at a time, and returns the corresponding result
when the first match is found. If no
match is found, returns default
. If default
is omitted, returns null. Requires
specification of at least expression,
search1
, and result1
. You can specify an unlimited number of pairs of search
and result
arguments. The default
argument is
optional.
Example:
The following example returns RED COLOR if the item's body color is RED, BLUE COLOR if it's BLUE, and causes a rejection if none of those colors is matched.
Severity: Reject
If Expression: decode([Item].[BODY ATTR].[COLOR], "RED", "RED COLOR", "BLUE", "BLUE COLOR", "NONE") == "NONE"
getCustomObjectValue
Syntax:
getCustomObjectValue(
custObjName,
custObjReturnAttrName,
custObjQueryAttrName1, Value1,...
custObjQueryAttrNameN, ValueN)
Fetches a value from attributes of a custom object custObjName
that is defined using Application
Composer. The value is fetched from the field named custObjReturnAttrName
of the custom object.
The custom object instance to fetch the value from is identified by
matching Value1
in the field named custObjQueryAttrName1
, using the ==
operator. Value1
can be a literal value, or can refer to an attribute, such as [ITEM].[AG1].[A1]
. You can specify additional
matching criteria by providing matches for custObjQueryAttrNameN
against ValueN
, and so on.
in
Syntax:
in(expression, value1, value2,...)
Returns TRUE if expression
is found in value1
, value2
, or other following value arguments.
Returns FALSE otherwise. Requires specifying at least expression
and value1
. You can specify an unlimited number of value
arguments.
Example:
The following example returns TRUE if "RED" is contained in the value of either of the specified attributes for colors.
If Expression: in("RED",[Item].[BODY ATTR].[COLOR], [Item].[COVER ATTR].[COLOR])
in()
and not_in()
accept arguments of
either String or Number. All arguments must be of the same type. The
type of the first argument determines the type assigned to the subsequent
arguments.
not_in
Syntax:
not_in(expression, value1, value2,...)
Returns TRUE if expression
is not found in value1
, value2
, or other following value arguments.
Returns FALSE otherwise. Requires specifying at least expression
and value1
. You can specify an unlimited number of value
arguments.
Example:
The following example returns TRUE if "RED" is not contained in the value of either of the specified attributes for colors.
If Expression: not_in("RED",[Item].[BODY ATTR].[COLOR], [Item].[COVER ATTR].[COLOR])
to_number
Syntax:
to_number(string)
Returns string
as
a value of type Number.
Example:
The following example returns the count of an item as a string.
to_number([Item].[PHYSICAL PROP].[COUNT])
Custom Function Calls in Web Services
You can use custom functions in rule expressions
by first writing functions and creating a public web service that
includes the custom functions, then using InvokeWebService()
to call the custom functions.
InvokeWebService
Syntax:
InvokeWebService("service_name", "function_name", input_argument1, input_argument2,...)
The names of the web service and its custom function are passed as quoted strings which cannot include space characters.Item rules support only simple type parameters and not complex type parameters being passed to this function.
Returns a value produced by a custom function called through a web service. The web service function must return a single value, since this function does not accept more than one value.
Example:
InvokeWebService("ValidateSLN_Digit", "execute", [Item].[Tag AG].[SL No])
When a rule expression using InvokeWebService()
is executed at runtime, InvokeWebService()
calls the web service service_name
, and passes the input payloads
such as input_argument1
to the function function_name
. The the value returned from function_name
is returned to the rule expression
by InvokeWebService()
.
Before calling the function function_name
in a rule expression, you must register the
web service service_name
, along with
the credentials used to call the service.
Date Operators
The +
(plus) and -
(minus) operators add or subtract the specified
number of days from a date. A single number is interpreted as a number
of days. You can also use dates in the format specified by the standard
ISO 8601.
Syntax:
expression1 + expression2
expression1 - expression2
Example:
The following example expresses a time 3 days after the Item Lead Time
[Item].[Logistics].[LeadTime] + 3
Attributes Supported for Item Rules
All user-defined attributes (extensible flexfields)
can be accessed using the syntax [entity name].[attribute
group name].[attribute name]
. For example: [Item].[Physical Attributes].[Unit Weight]
.
In addition, rules support access to the predefined attributes listed
here, using predefined attribute groups to access the attributes.
Rule Set Context Attributes
This is a special set of attributes that refers to
the context of a rule's execution. Expressions using these attributes
are formed with the prefix Context
in
place of an attribute group name.
Attribute | Description |
---|---|
BatchID |
Set to Batch ID if running Import. |
BatchName |
Set to Batch Name if running Import. |
ExecutionDate |
Date for which rules are invoked. |
ExecutionDateTime |
Date and Time for which rules are invoked. |
RuleSetVersion |
Currently always set to |
User |
The user whose action triggered the rule. |
Examples:
Context.ExecutionDate >= '7/6/2007'
Context.User == 'USER1'
Change Order Attributes
These attributes represent fields in the header of a change order. They can be used in the expressions of validation rules to validate change orders.
Attribute | Description | Example |
---|---|---|
Approval Date |
The approval date of the change order. |
|
Assigned To |
The user the change order is assigned to. |
|
Change ID |
Identifier for the change order. |
|
Change Name |
The editable name of the change order entered when the change order is created. |
|
Change Number |
The fixed identifier of the change order entered when the change order is created. |
|
Created by |
The user who created the change order. |
|
Creation Date |
The date the change order was created. |
|
Description |
The editable description of the change order entered when the change order is created. |
|
Need-by Date |
Need-by Date assigned for the change order. |
|
Organization |
Organization code assigned when the change order was created. |
|
Priority |
The priority assigned to the change order. |
|
Reason |
The reason code assigned to the change order. |
|
Requested By |
The user who requested the change order. |
|
Item Primary Attributes
Attribute group name: Main
For the attributes in this group, see the information about item specifications and attributes in the Using Product Master Data Management guide. This group includes the following attributes:
-
Approval Status
-
Conversions
-
Defaulting Control
-
Formatted Description
-
Item Description
-
Item Status
-
Lifecycle Phase
-
Long Description
-
Negative Deviation Factor
-
Pack Type
-
Positive Deviation Factor
-
Pricing
-
Primary Unit of Measure
-
Secondary Unit of Measure
-
Style Item
-
Tracking Unit of Measure
-
User Item Type
Example:
[Item].[Main].[Primary Unit of Measure] == 'Dozen'
Item Basic Attributes
Attribute group name: Item Basic
For the attributes in this group, see the information about item specifications and attributes in the Using Product Master Data Management guide. This group includes the following attributes:
-
Item
-
Item Class
-
Organization Code
-
Style Item
-
Approval Status
Example:
[Item].[Item Basic].[Approval Status]=='Approved'
Structure Attributes
Attribute group name: Structure Attributes
Structure attributes are accessed only in the context
of the business entity Item, using the StructureAttributes
attribute group name.
For the attributes in this group, see the information about item specifications and attributes in the Using Product Master Data Management guide. This group includes the following attributes:
-
Structure Name
-
Organization Code
-
Common Item Name
-
Common Organization Code
-
Common Structure Name
Example:
[Structure].[Structure Attributes].[Structure Name]=="Primary"
Item Supplier Association Attributes
Attribute group name: Intersection Primary
In the context of the Supplier business entity, you can access item supplier attributes, intersection attributes (Primary indicator and association Status) and other supplier and supplier address related attributes.
The following example checks whether the item supplier association status is Active.
[Supplier].[Intersection Primary].[Status] == 1
Supplier Attributes
Attribute group name: Supplier
This group includes the following attributes:
-
Supplier Name
-
Supplier Number
-
D-U-N-S
-
Taxpayer ID
-
Tax Registration Number
Example:
[Supplier].[Item Supplier Site Organization].[Supplier Name]=='Acme'
Item Relationship Attribute Groups: Cross Reference Attributes
Attribute Group Name: Cross Reference Main
This group includes the following attributes:
-
Type
-
Description
-
Value
-
ApplicableOrganization
Example:
[CrossReference].[Cross Reference Main].[Type]=='Old Item Number'
Item Relationship Attribute Groups: Related Item Attributes
Attribute Group Name: Related Item Main
This group includes the following attributes:
-
Type
-
Description
-
Start Date
-
End Date
-
Reciprocal
-
Planning Enabled
Example:
[RelatedItem].[Related Item Main].[Type]=='Cross-Sell'
WHO Column Attributes
Use these attributes to write rules to govern the updates performed by a specific user, or during a specified time period.
Attribute | Description |
---|---|
CREATED_BY |
The user who created the data |
LAST_UPDATE_DATE |
The last date that the data was updated This attribute supports these operators: |
LAST_UPDATED_BY |
The user who last updated the data. |
At runtime, the rule validates the user and date reflected in these attributes.
You can use these attributes in assignment and validation
rules for the business entities Item, Revision, and Supplier. For
primary data, these attributes are available in the Insert Attribute dialog under the WHO attribute
group for the available business entities. For the WHO attributes
of item primary attributes (Basic and Main groups), and operational
attribute data, use the syntax [Item].[WHO]
. For the WHO attributes of item revision and supplier primary attributes,
use [Revision].[WHO]
and [Supplier].[WHO]
respectively.
Example:
[Item].[WHO].[LAST_UPDATED_BY] == 'PRODUCTUSER1'
For extensible flexfield attribute groups, the WHO attributes are available under their respective attribute groups and flexfield contexts.
Examples for extensible flexfield attribute groups named Marketing, Color Characteristics, and TAX attributes:
[Item].[Marketing].[LAST_UPDATED_BY]
[Revision].[Color Characteristics].[LAST_UPDATED_BY]
[Supplier].[TAX attributes].[LAST_UPDATED_BY]
In assignment rules, these attributes:
-
Are available only for the business entities Item, Revision, and Supplier
-
Are available only for rules of return type Generic.
-
Are not available as target attributes.
In validation rules, these attributes:
-
Are available only for the business entities Item, Revision, and Supplier
In both assignment and validation rules, you can
use the attribute Context.User
to refer
to the user whose action triggered the rule, whether through the user
interface, during import, or through a service. Example:
context.user == 'ProductEngineer'
Analyze Rule Impact
You can use rule impact analysis to assess the effect of item rules on a given set of existing items.
Purpose of Impact Analysis
When you add new item rules, or modify existing rules, it's important to know the impact the rules have on production item data.
By running a scheduled process for rule impact analysis, you can perform a what-if analysis of the effect that draft rule sets would have on existing items. After the process runs, you examine the results of the analysis. If the results are acceptable, you can add the impacted items to a batch, and import the batch to update the items. For convenience, you can select items by defined criteria (rather than individually), schedule the analysis process (rather than running it manually), and automatically run data updates after analysis (rather than submitting them separately).
Defining an Impact Analysis: Procedure
Impact analysis is based on the ability to designate item rule sets as being in Draft status, and on defining the scope of a particular analysis by selecting a set of items on which to analyze results.
To define an impact analysis:
-
In the Product Information Management work area, select the Manage Item Rule Sets task.
-
Create a new rule set, select the Draft check box and save the rule set. This is the rule whose impact you want to analyze before putting it into production. You can also edit an existing rule set to put it in draft status.
-
Repeat this step for other rule sets to analyze.
Note: Draft rule sets don't operate on production data during ordinary transactions. -
To enable the running of your draft rule sets, add them to the master rule set, which is named MASTER_RULE_SET. In the master rule set, specify the sequence number that determines the order of execution of the included rule sets.
-
In the Product Information Management work area, select the Analyze Item Rule Set Impact task.
-
The Analyze Item Rule Set Impact page contains a list of all of the rule impact analyses. For each analysis, key information is displayed:
-
The name of the analysis, as a link. Click the link to access the analysis details.
-
Status: whether the analysis has been Completed, or Not Started.
-
If Completed, the date the analysis was submitted.
-
A graphic link showing the number of items impacted, or not, by the rule sets in the analysis. Click the link to access the analysis details.
-
Autoupdate: Whether rules that aren't in draft status will automatically update items after the analysis runs.
-
Import Status: Whether the import of the impacted items has been Completed, or Not Started.
-
The user who created the analysis.
-
A menu for submitting or scheduling the analysis.
-
-
You can search the list by analysis name in the search field. You can click Show Filters to access other filters, including analysis Status, and Autoupdate setting.
-
Click Create to create a new analysis.
-
On the Scope tab of the new analysis, enter a name and optional description.
-
Leave Autoupdate set to No yet. You can't change it back to No once you have run the analysis.
-
Select Select and Add from the Actions menu, to select the items to be in the scope of the analysis. If you select an item class, then the search fields are adjusted to include fields from associated attribute groups.
-
To specify a scope of manually chosen items, select the items in the search results list and click Add Items. The items are added to the table of criteria in the scope of the analysis.
-
To specify a dynamic scope, add a saved search to the criteria table. In the Search and Select dialog box, select any existing saved search, or create a new saved search, and set it as default saved search. Then click Add Saved Search. When you later run the analysis, the saved search is executed. All the items that meet the search criteria at that point in time are considered as the scope of the impact analysis, and the analysis is run on this set of items.
-
-
When you have completed the scope criteria for the analysis, click Save.
-
Click Submit to run the Analyze Item Rule Set Impact process immediately. You can alternatively click Schedule to open the Schedule dialog and specify a schedule for when the analysis process runs.
When the analysis process runs, the draft rules included in the master rule set are force-applied to the items in the scope of the analysis, along with all the production (non-draft) rules included in the master rule set.
Reviewing Impact Analysis Results
When an analysis process completes successfully, you can open the analysis and review the results, on the Results subtab, which contains the affected items and any changes that would be made by the rules.
On the landing page of the Product Information Management work area, you can review impacts at a high level, using the Rules Impact Analysis infolet:
-
By default, the infolet displays graphics linked to items impacted by runs of analysis processes during the Time Interval displayed at the top of the landing page. In the infolet, you can click the menu link for Items Impacted to select Items Not Impacted.
-
A bar chart indicates the number of items impacted, or not impacted, for each impact analysis. The names of the analyses are keyed to the bars. Hovering your mouse over a bar displays the name of the analysis and the number of items.
-
Clicking on a bar opens the Results tab of the Edit Impact Analysis page for the linked analysis.
On the Edit Impact Analysis page, you can review the details of the selected analysis, and filter the list of items in its scope in different ways, to better understand the impact.
-
The Results tab displays the results of the analysis for all of the items specified in the scope of the analysis on the Scope tab. You can filter the list of items.
-
Selecting one of the following infotiles enables you to work with the different categories of impacts:
-
Impact: Displays the number of items that are impacted or not impacted by the draft rules in the analysis.
Infotile filters: Impacted Items, Nonimpacted Items
Item results filters: Assignment Type (for associated assignment rules), Severity (for validation rules), Rule Name (for an analysis that contains multiple rules)
Item results actions: Export to Excel
-
Rule Type: Displays the number of items associated with either assignment rules or validation rules.
Infotile filters: Assignment, Validation
Item results filters: Assignment Type, Rule Name
Item results actions: Export to Excel
-
Actionable: Displays the number of items that require action. Items can be either ready to add to a batch for import, or need corrections before being imported. If items need corrections, you can edit the items in a spreadsheet or use other means to make the corrections, then reload them for import.
Infotile filters: Ready, Need Corrections
Item results filters: Assignment Type, Severity, Rule Name
Item results actions: Export to Excel, Add Items to Batch, Edit Items in Spreadsheet
-
-
You can filter the list by the Assignment Type (for associated assignment rules), Severity (for validation rules), and Rule Name (for an analysis that contains multiple rules).
-
For each item in the item results list, you can display a variety of fields, including:
-
Attribute values before and after being changed by assignment rules
-
New organizations and catalogs or categories assigned by rules
-
User messages caused by validation rule sets
-
The name of the rule that impacted the item
-
Scenarios for Post-Analysis Update
After you review the results of an impact analysis, you can rectify errors caused by rules, if any, by editing the items in a spreadsheet or using other means to make the corrections, then reload the items for import.
Consider an example scenario in which you have modified an assignment type item rule to reflect a pending change in a local sales tax. The rule will be applied to any new items that are created, but many items already exist that were created under the previous tax. You need to analyze the impact of applying the new tax assignment to those items.
To resolve the effects of the rule analysis:
-
Click the Actionable infotile. You will be determining the action to take before the impacted items are ready for import back into production.
-
Take the rule sets that produced the impact out of draft status. You can click the name of a rule set in the item results list to access the Edit Rule Set page. Deselect the Draft check box to take the rule set out of draft status.
-
The actions you can take are determined by the category of actionable items that you choose: Ready or Need Corrections. Use one of the following scenarios.
-
Ready: These items are likely to be imported with no errors produced by the impact of the rules in the analysis set. Suggested actions include:
-
You can add these items to a new or existing batch so that they can be imported into production.
Action: Select Add Items to Batch from the Actions menu. If you select New Batch, make selections in the Process Details dialog. The resulting rules update impact type of batch is predefined as an import to the Product Information Management Data Hub spoke system, which means that it updates only items that already exist. You can also add items to an existing rules update impact batch that was previously created by this option, . You can examine the results of the batch import on the Manage Item Batches page of the Product Information Management work area. You can examine the record of the import process in the Scheduled Processes work area, using the process ID displayed when you submitted the batch.
-
Optionally, you can add the items to a spreadsheet, to further prepare them for import.
Action: Select Edit Items in Spreadsheet from the Actions menu.
-
-
Need Corrections: These items are likely to have errors when imported that are produced by the impact of the rules in the analysis set. For example, import errors would be caused by the triggering of rules with Reject severity.
Rules that cause errors typically require an you to make a decision on how to correct the data. For example, if there is a rule which says Minimum Temp should be greater than Maximum Temp, the item data could be corrected by correcting either the Minimum Temp or the Maximum Temp attribute values.
Suggested actions include:
-
You can add the items impacted by a rule to a spreadsheet, to edit them to be suitable for import when impacted by a rule.
Action: Select Edit Items in Spreadsheet from the Actions menu. In the Edit Items in Spreadsheet: Select Rule dialog box, select the rule set and rule that impacted the items that need correction, then click Download. The spreadsheet opens on your local computer, containing the selected items. After you edit the item data, you can import it.
-
If you determine that corrections are needed because the impacting rule isn't acting as expected, then you can edit the rule instead of the item data. In a row for a selected item, click the Edit Rule control to edit the rule that produced the impact shown on that item. To see which other items are also impacted by the same rule, use the Rule Name filter on the results list, which filters the list to the items affected by the same rule.
After you make the needed corrections to the item data or to the rules, you can select and add these items to a new or existing batch so that they can be imported into production.
Action: Select Add Items to Batch from the Actions menu.
-
-
How You Use Custom Object Data in Rules
You can use the function getCustomObjectValue()
to access data stored in a custom
object created in the Oracle Fusion Customer Relationship Management
Application Composer.
Consider the following example use case for custom objects. Assume that your company uses a catalog for export-controlled items. You need to assign your inventory items to the catalog based on complex rules that take into account both item attributes and non-item attributes, such as trade agreements. You maintain the item attributes as operational attributes and extensible flexfields in the Product Information Management work area. You maintain the trade agreement attributes in custom business objects designed using Application Composer.
Item rules can refer to both the item attributes
and the non-item attributes, to determine if an item should be assigned
to the export-controlled items catalog. For accessing the attributes
maintained in custom objects, item rules use the function getCustomObjectValue()
.
In Application Composer, you have defined a custom object called Selling Restrictions, containing a matrix of selling restrictions by target market. You want to refer to that data to determine whether or not an item can be sold, based on its target market. Assume that the example custom object Selling Restrictions contains the data in the following table.
Target Market | Restriction |
---|---|
EU |
No |
North America |
Yes |
APAC |
Yes |
Middle East |
No |
The following example fetches the value of Restriction from Selling Restrictions where the Target Market is North America. That fetched value for Restriction is Yes.
getCustomObjectValue(
"Selling Restrictions",
"Restriction",
"Target Market", [ITEM].[Market Attributes].[Target Market])
Your item rules can use complex business rules to determine attributes for assignment or validation purposes. You can shift some of the data-induced complexity for business rules, such as deriving the restriction for a target market, or deriving the color family name for a given color shade, to custom business objects and then refer to those values in your business rules. This practice of decoupling business rules from the underlying data protects your business rules from changes in data sets, such as color shades being added or dropped, and simplifies maintenance of your business rules.
Another use of custom objects with item rules is to use data available in legacy systems that may not have built-in web services. Relevant data from such systems can be extracted and maintained in custom objects and then be referred to in your item rules. This practice greatly enhances the scope of data used in your business rules.
How You Route Item Changes Through Change Order Types Using Rules
You can use validation rules to select change order types, which enables you to design a dynamic workflow routing that's based on criteria defined in a validation rule.
Define Change Order Types
The intention is to match specific types of change orders to specific modifications to items that require creation of change orders. Begin by defining the change order types that you want to match with item changes.
In the Setup and Maintenance work area, use the Manage Change Order Types task:
-
Offering: Product Management
-
Functional Area: Change Orders
-
Task: Manage Change Order Types
Define Validation Rules
Define validation rules that implement the criteria for matching item changes with change order types.
-
Define a rule set for validation rules.
The rule set can have an Association Type of Attribute group or Item class.
-
Define rules in that validation rule set, to define the criteria for matching an item change with a change order type.
-
When creating a rule in the rule set, in the Create Rule dialog box, select the Severity as Needs Approval.
-
The Change Order Type field and the Enforce Change Order Type check box appear. The check box is selected by default.
These options are only available if the Severity of the rule is Needs Approval.
-
Search for and select the change order type that you defined.
-
Define the If Expression and Validation Condition for the rule, with criteria that identify the item change to be matched to the change order type that you associated with the rule.
Example:
Field Value Change Order type
Form-Fit-Function Change Order
Severity
Needs Approval
Validation Condition
!changed([Item].[Physical Attributes])
User Message
Any Physical attributes changes should go through a change order of change order type 'Form-Fit-Function Change Order'
-
Save the rule set, and add it to the master rule set.
Effect on Item Creation
When a user modifies an item that's identified by the validation expression of your rule, the rule controls which change order type is applied.
When a user selects Save > Save to Change Order, the Save to Change Order dialog box reflects the effects of your rule:
-
If Create change order is selected, then the Type field displays the change order type that was determined by your rule. The type can't be changed, if the Enforce Change Order Type check box was selected in the rule.
-
If Add to existing change Order is selected, then the Type field displays only the change orders belonging to the change order type that was determined by your rule.
-
If the user's modifications to the item trigger more than one rule's criteria, the rule with the lowest sequence number in the rule set is applied.
Effect on Import
In import batches, the change order type is governed by the setting of the Change Order option in the Edit Item Batch Options dialog box. If you have selected One per Item then the change order type applied by your rule is used. If no type is set, then the default change order type specified for the item class is used.
Effect on Impact Analysis
To see the change order columns in the impact results table:
-
Select the Analyze Item Rule Set Impact task in the Product Information Management work area.
-
Click the name of an analysis to open it.
-
In the results table for the analysis, select View > Columns, then select Change Order Type and Enforce the change order type.
Examples of Assignment and Validation
Example of Assigning Organizations Using Item Rules
You can define assignment rules that automatically assign items to one or more organizations when a condition is satisfied. The condition can be based on attribute values, another organization assignment, or a catalog assignment.
Scenario
The following table summarizes an example of an item rule that:
-
Is defined in an assignment rule set.
-
Tests whether an item has a product type of
In-house
. If the result of the test is true, then assign the item to the organizationsM2
andM3
. -
Tests whether an item has a product type of
Bought-outside
. If the result of the test is true, then assign the item to the organizationT1
.
Note that this rule has more than one THEN expression. You add THEN expressions by using the Add Row action. The expressions are evaluated in the sequence of the rows, and the execution is halted when the first THEN expression evaluates to True. You can add additional rows of Then Expressions by clicking Add Row.
Field | Value |
---|---|
Name |
Organization assignment |
Description |
Auto assignment of item to organization based on given attributes. |
Return type |
Organization |
Primary If Expression |
true |
Secondary If Expression |
|
Return Value |
Organization codes must be entered in quotation marks, either single, or double. |
Secondary If Expression |
|
Return Value |
|
User Message |
The item was assigned to an organization, based on the product type. |
Example of Validating Organizations Using Item Rules
You can define validation rules that automatically validate the assignment of items to one or more organizations when a condition is satisfied. The condition can be based on attribute values, another organization assignment, or a catalog assignment.
Scenario
The following table summarizes an example of an item rule that:
-
Is defined in a validation rule set that's associated with an item class or with an attribute group.
-
Following the assumption that items of the item class Extra Data Servers must not be assigned to the Seattle Distribution Center (code S2), validates that an item isn't assigned to S2 if its item class is Extra Data Servers. This validation is performed by the following steps:
-
Test whether the item class of an item is
Extra Data Servers
. -
If the result of the test is true, then test whether the item isn't assigned to the organization
S2
, by using the functionassignedtoOrg(orgCode)
, which returnstrue
if the item is assigned to the organization specified byorgCode
.
-
Field | Value |
---|---|
Name |
Organization validation |
Description |
Validate assignment of Extra Data Servers |
Severity |
Reject |
IF Expression |
|
Validation Condition |
|
User Message |
Extra Data servers can't be assigned to the Seattle Distribution Center. |
Example of Defining Change Policies with Validation Rules
You can define validation rules that automatically enforce change policies by testing for prohibited changes and setting the severity of the validation.
Scenario
The following tables summarize an example of an item rule set and two item rules that enforce a pair of change policies on item structures.
Rule Set Field | Value |
---|---|
Business Entity |
Item |
Rule Set Name |
Structure Validation Policy |
Rule Set Type |
Validation |
Association Type |
Item Class |
Association Name |
Root Item Class |
The first rule:
-
Tests whether the structure name for the item is
Manufacturing
. -
If the test for the structure name evaluates to true, performs the validation specified by the Validation Condition, which is the expression
false
. -
If the Validation Condition evaluates to false, then the validation fails, and the action for the Severity is performed, which is Needs Approval
-
Consequently, if a change is being attempted to the Manufacturing structure of the item, then the rule forces you to create a change order and get it approved.
Rule Field | Value |
---|---|
Name |
Structure Policy Rule 1 |
Description |
Ensures that changes to the Manufacturing structure of the item require approval of a change order. |
Valid Component Rules check box |
Check box must be deselected. |
Severity |
Needs Approval |
IF Expression |
|
Validation Condition |
|
User Message |
Changes to this structure require the creation and approval of a change order. |
The second rule:
-
Tests whether the structure name for the item is
Engineering
and the Life Cycle Phase isDesign
. -
If the test for the structure name evaluates to true, performs the validation specified by the Validation Condition, which is the expression
false
. -
If the Validation Condition evaluates to false, then the validation fails, and the action for the Severity is performed, which is Reject
-
Consequently, if a change is being attempted to the Engineering structure of the item while the Life Cycle Phase is Design, then the rule rejects the change and prevents it from occurring.
Rule Field | Value |
---|---|
Name |
Structure Policy Rule 2 |
Description |
Ensures that changes to the Engineering structure can't be made if the life cycle phase is Design. |
Valid Component Rules check box |
Check box must be deselected. |
Severity |
Reject |
IF Expression |
|
Validation Condition |
|
User Message |
Changes to this structure can't be made during the Design life cycle phase. |
Example of Changing Item Supplier Site Organization Associations Using Validation Rules
You can define validation rules that automatically govern the creation and updating of item supplier site organization associations and the updating of association attributes, both Primary attributes and extensible flexfields.
Scenario
The following tables summarize an example of an item rule set and rules that govern an item supplier site organization association.
Rule Set Field | Value |
---|---|
Business Entity |
Item |
Rule Set Name |
Supplier Association Rule Set |
Rule Set Type |
Validation |
Association Type |
Item Class |
Association Name |
Electronics |
The rule:
-
Is applied when an item belongs to the item class Electronics.
-
Because the IF expression is
true
, performs the validation specified by the Validation Condition. -
The Validation Condition tests whether name of the item supplier site is
Acme
. -
If the Validation Condition evaluates to true, then the validation succeeds, and the action for the Severity is performed, which is Needs Approval
-
Consequently, if the user tries to add an item supplier site association for the supplier Acme to an item belonging to the item class Electronic, then the rule forces you to create a change order and get it approved.
Rule Field | Value |
---|---|
Name |
Supplier Association Rule |
Description |
Ensures that a change order is required to add an item supplier site association for the supplier Acme. |
Valid Component Rules check box |
Check box must be deselected. |
Severity |
Needs Approval |
IF Expression |
|
Validation Condition |
|
User Message |
Adding the supplier Acme for Electronics items requires the creation and approval of a change order. |
Example of Validating Component Types Using Rules
You can define validation rules that automatically check whether the components associated with the structure are valid. You can specify the list of valid user item types for components in the rule.
Scenario
The following table summarizes an example of an item rule set and item rule that:
-
Tests whether the structure associated with the item is of type Primary.
-
Validates that only components of item types
type1
andtype2
can be added to a structure of type Primary.
Rule Set Field | Value |
---|---|
Business Entity |
Item |
Rule Set Name |
Validate Component Types |
Rule Set Type |
Validation |
Association Type |
Item Class |
Association Name |
Root Item Class |
Rule Field | Value |
---|---|
Name |
Validate Component Types for Primary Structure |
Description |
Ensures that only components of item type TYPE1 or TYPE2 can be added to a Primary structure. |
Valid Component Rules check box |
Check box must be selected. Unlike other validation rules, rules that validate components don't have a Severity, because the item is being validated for only one aspect, and a degree of severity would be redundant. |
IF Expression |
|
Validation Condition |
|
User Message |
Component type not supported for addition to this structure. |
Example of Validating Item Class Changes with Rules
You can define validation rules that automatically check whether the item class of an item has been changed.
Scenario
End users are able to change the item class for an item. You can use a validation rule to restrict whether such a change is to, or from, a specific item class. Use the Severity value of the rule to warn about the change, reject the change, or require that the change needs an approved change order.
The following tables summarize an example of an item rule set and item rule that:
-
Tests whether the associated item is being changed to the item class TCCHLDVR, and also changed to the item class TCParent.
-
If the test for item class changes evaluates to true, perform the validation specified by the Validation Condition, which is the expression false.
-
If the Validation Condition evaluates to false, then the validation fails, and the action for the Severity is performed, which is Reject
-
Consequently, if the item class is being changed to TCCHLDVR and also changed from TCParent, then the change is rejected by the rule.
Rule Set Field | Value |
---|---|
Business Entity |
Item |
Rule Set Name |
Validate Item Class |
Rule Set Type |
Validation |
Association Type |
Item Class |
Association Name |
TCParent |
Rule Field | Value |
---|---|
Name |
Validate Source and Target IC |
Description |
Ensures that items cant' change item class from TCParent to TCCHLDVR. |
Severity |
Reject |
IF Expression |
|
Validation Condition |
|
User Message |
An item class cant' be changed from TCParent to TCCHLDVR. |
Blending Rules
Overview of Blending Rules
To control which item attribute value is imported into production from multiple suppliers of the item, you can define blending rules, which are applied during import, and which determine which supplier's attribute value to import, based on the blending priority that you define in the blending rules.
To use blending rules:
-
Understand how blending rules affect import
-
Examine an example of how blending rules affect import
-
Define blending rule sets and rules, and enable the blending rule sets
How Blending Rules Affect Import
When you import the same item from multiple spoke systems, specific attributes of the item might have different values, depending on the spoke system. To control which attribute value is imported into production, you can define blending rules, which are applied during import, and which determine which spoke system's attribute value to import, based on the blending priority that you define in the blending rules.
During the import process, blending rules use the spoke system item relationships on a production item to identify the spoke system product records to be blended with imported data. Blending rules are applied at the item level, in a specified order of preference among the spoke systems. When the import is uploaded to production, blended values overwrite the item attribute values in production.
Blending rules aren't applied to product data for new items, since there is no existing data to be blended with new data. The spoke system item relationship used by blending rules to relate a spoke system item to a production item isn't created until an item is imported into production.
Blending rules are applied in the following business events:
-
When an existing spoke system provides updates to product data that was imported earlier.
-
When a new spoke system provides data for an existing item.
Blending rules operate during import if:
-
Existing spoke system cross-references are found in the production database.
-
New spoke system cross-references are established as a result of matching with a production item containing spoke system cross-references with other spoke systems.
You can choose to apply blending rules to attributes in the following ways:
-
All attributes in one or more attribute groups. (This is the most common case.)
-
All attributes associated with one or more item classes.
-
One or more attributes from a single attribute group.
For blending to work, you can upload data to the staging area using these means:
-
Product Hub Portal
-
Product Uploads REST Service (using import maps)
This REST service lets you insert and edit the product data in the staging area.
-
Data uploaded by other means (such as FBDI, ADFdi, Item Batch Maintenance Service) won't be available for blending because this data is uploaded directly to an item batch.
You can create blending rules for these spoke systems, to be applied when data is being imported from the staging area into Product Hub:
-
Supplier
-
Data Pool
-
Internal
After blending is completed, the blended item record overwrites production data for the item.
General Principles of Blending
General principles guiding the application of blending rules include:
-
Blending rules run only if any of the spoke systems mentioned in the blending rule has provided data into the supplier stage. If the higher priority spoke system hasn't provided any data, then whatever is provided by the lower priority or other spoke systems (spoke systems not mentioned in the blending rules) will be imported.
-
If a blending rule is written on an attribute then that rule will run only if that attribute is part of import. The attribute can be part of import because values are provided for that attribute in import.
-
If a blending rule is written on an attribute group then that rule will fire only if any of the attributes of that attribute group are part of import. The attributes can be part of import because values are provided for those attributes.
-
If a blending rule is written on an item class then that rule will run only if items of that item class or its child item classes are being imported.
-
No updates will occur to the items staged in the Staging area of Product Hub Interface. Oracle Fusion Product Hub Portal stores its data in the Staging area of Product Hub Interface. Blending happens only within the import batch. Blended data is then imported to production.
-
If more than one rule exists on the same attribute, then the first rule in the master blending rule set will be run.
-
Products in statuses Rejected or Draft don't get into the batch, so they don't have cross-references, and so they aren't considered for blending.
-
Blending rules defined for an item class which is at a higher level of the item class hierarchy will be inherited to child item classes.
Blending and Synchronization
By selecting or deselecting the Ignore Null check box when you create individual blending rules, you can choose whether to enable the synchronization of null attribute values from the staging area, to the batch interface area, and then to the production area.
-
By default, the Ignore Null check box in a blending rule is selected. If you leave it selected, then null values are ignored during import. Blending is performed, but synchronization of null attribute values isn't. This scenario is called blending-only.
-
If you deselect the Ignore Null check box in a blending rule, then null values being imported replace the corresponding values that exist for the attribute in production. This scenario is called blending-plus-synchronization.
-
The Ignore Null check box can be deselected only if the blending rule is written at attribute group level.
-
If an attribute group is a multi-row extensible flexfield, then synchronization causes the missing rows in the uploaded product data to be removed from the flexfield in production.
-
If an attribute group is used in a single-row extensible flexfield, then the attributes with null values in the uploaded product data are also replaced with nulls in the flexfield in production.
-
Blending-plus-synchronization is only supported for item-level extensible flexfields (single-row, multi-row, and translatable extensible flexfields) for items of all organizations being imported from Data Pool, Supplier and Internal spoke systems.
-
Blending-plus-synchronization is supported for items of master organizations and child organizations.
While data is being imported from item batch to production, synchronization of attribute data is performed, as part of blending rules. The attribute synchronization logic is:
-
Synchronization only occurs if the Ignore Null check box in a blending rule is deselected.
-
Synchronization occurs at two locations:
-
First, while uploading the data to the staging area
-
Second, while importing the data into Product Hub through the item import process
-
-
If synchronization is enabled for an attribute group (the Ignore Null check box is deselected) then:
-
While inserting data into the staging area, values that are missing in the incoming feed delete the corresponding existing values in the staging area.
-
While importing data into production, attribute values that exist in production but not in the batch are deleted from production.
-
-
If an attribute group named in a blending rule is a multi-row extensible flexfield, and Ignore Null is deselected, then, while inserting the data into the staging area, values of the attributes of this attribute group will be deleted in the staging area for which the values are missing in the data file being uploaded. This attribute synchronization in the staging area is only supported through the PROCESS operation of the Product Uploads REST Service. Then, while importing the data from an item batch to Product Hub, the data in the batch is compared with the production data. For all extensible flexfield rows in production that aren't in the data being imported, these rows are deleted in production after import. New rows being imported that don't exist in production will be added to production after import, and rows having updates will be updated in production after import. Note that for updating multi-row extensible flexfield attributes, unique row identifiers should be provided in the incoming feed.
-
If an attribute group named in a blending rule is a single-row extensible flexfield, and Ignore Null is deselected, then all the attributes of that attribute group that have no values in the batch are given null values in production after import.
-
Attribute groups for which Ignore Null is deselected in a blending rule are considered as being owned by the higher priority spoke system. This is termed attribute group ownership. Here's an example of attribute group ownership:
-
In a blending rule, spoke system item relationship SpokeA has priority 1 (higher), and SpokeB has priority 2 (lower). The blending rule is associated with attribute group AG_One.
-
Import case A (attribute group ownership not in effect): For SpokeA, Ignore Null is selected, so attribute synchronization isn't in effect.
-
In the staging area, SpokeA doesn't provide data for some attributes of attribute group AG_One. The data in the staging area is then imported into Product Hub.
-
SpokeB then provides the data for the same item in Staging for which SpokeA had provided the data but SpokeB provides data for all the attributes of attribute group AG_One. While importing this data from SpokeB, only those attribute values are imported which weren't provided by SpokeA because the Ignore Null check box was selected for SpokeA in the blending rule.
-
If SpokeA had provided values for all of the attributes of attribute group AG_One, then data of SpokeB for attribute group AG_One wouldn't have been imported.
-
-
Import case B (attribute group ownership in effect): For SpokeA, Ignore Null is deselected, so attribute synchronization is in effect. Because it has higher priority in the blending rule, and because Ignore Null is deselected, SpokeA is considered the owner of attribute group AG_One.
-
In the staging area, SpokeA doesn't provide data for some attributes of attribute group AG_One. The data in the staging area is then imported into Product Hub. (This is the same as import case A.)
-
Data from SpokeB for attribute group AG_One isn't imported to production, because SpokeB isn't the owner of attribute group AG_One. The null values provided by SpokeA for some of the attributes are retained in production and aren't overwritten by the values from SpokeB.
-
Without attribute group ownership being in effect, the attribute values from SpokeB for which SpokeA had not provided the values would be imported.
-
-
Restrictions and Validations
Restrictions and validations on blending rules include:
-
Synchronization of attribute values isn't performed for seeded operational item attributes.
-
Blending rules apply only for the item entity, not for the item revision or supplier entities.
-
Blending rules may be set up on any attributes of an item.
-
Blending rule sets can't be composite rule sets.
-
Blending rules defined at the higher levels of an item class hierarchy are inherited by child item classes.
-
Spoke systems categorized as internal systems, data pool, or supplier are available as source systems for use in blending rules. The predefined Product Information Management Data Hub spoke system isn't available as a source system for use in blending rules.
-
Data uploaded by means other than those identified here (such as Product Hub Portal and Product Uploads REST Service) isn't available for blending because this data is uploaded directly to an item batch. Examples of other means are: FBDI, ADFdi, and Item Batch Maintenance Service.
-
Rule set impact analysis isn't available for blending rule sets.
Define Blending Rule Sets and Rules
Blending rules must be created as part of a blending rule set, and the blending rule set must be associated with the entity containing the attribute whose value you want to control through blending rules.
Defining Blending Rule Sets and Rules: Procedure
To define a rule set and rules for a blending rule:
-
In the Product Information Management work area, select the Manage Item Rule Sets task.
-
Select Create from the Manage Rule Sets task bar.
-
In the Create Rule Set dialog box, make the following required selections:
-
Set Composite to No.
-
Set Type to Blending.
-
-
When you set the Type to Blending, the available rule association types are restricted to attribute groups or item classes. In the Association Type field, select either Attribute Group or Item Class.
-
For an association type, you can select multiple attribute groups or item classes to associate with the rule set. In the Associations field, click the edit control.
-
In the Select Associations dialog box, click Add, to add an association with the rule set.
In the Association Name list, search for and select the name of the entity that contains the attribute whose value you want to control with blending rules.
-
For an attribute group association, this entity is the attribute group containing the attribute.
-
For an item class association, this entity is the item class associated with the attribute group containing the attribute.
-
-
If you select Draft, then the rule set won't be triggered at all during import.
-
Click Save and Continue.
-
In the Rules tab of the Edit Rule Set page for the new rule set, select Create from the Actions menu.
-
In the Create Rule dialog box, enter an integer in the Sequence field. The sequence number determines the order in which the rule will be triggered when the rule set is triggered.
-
Using the Attribute list, select the attribute whose values you want to blend during import.
If you selected multiple associations, then the rule applies to all attributes in the attribute group or item class, and you can't select an individual attribute. Accordingly the Attribute Group and Attribute lists are restricted to the value All.
Note: The following rule fields aren't used by blending rules:-
Return Type
-
Target Business Entity
-
Target Attribute Group
-
Target Attribute
-
-
In the Details region for the rule, select Create from the Actions menu. Create a blending priority for the rule's associated attribute by selecting a value from the Spoke System list and entering a number in the Priority field.
Lower priority numbers produce a higher blending priority. A spoke system with priority number 10 has a higher blending priority than a spoke system with priority number 20.
If the blending rule is associated with an attribute group, you can deselect the Ignore Null check box to enable synchronization of attributes. By default, the check box is selected. Accordingly, attributes aren't synchronized unless you choose to do so.
-
Repeat the previous step for each spoke system that supplies attribute values that you want to blend.
-
Define more rules in the rule set, as needed.
-
Click Save to save the rule set.
-
Add the rule set to the master blending rule set, to enable its operation during import.
Enabling Blending Rule Sets: Procedure
To enable the triggering of a blending rule, you must add its rule set to the master blending rule set, which is named BLENDING_MASTER_RULE_SET. This composite rule set is predefined. You can't create any other composite blending rule sets. Only rule sets with a Type of Blending can be added to this master set. When a blending rule set is added to the master blending rule set, its blending rules are triggered when you import items into Oracle Fusion Product Hub.
To add a rule set to the master blending rule set:
-
In the Product Information Management work area, select the Manage Item Rule Sets task.
-
On the Manage Rule Sets page, search for and select the rule set named BLENDING_MASTER_RULE_SET.
-
Select Add from the Actions menu.
-
In the Select and Add: Rule Sets window, use the desired criteria to search for the rule sets that you want to add to the master.
Tip: You can find all blending rule sets by specifying Blending in the Type field. You can search for your blending rule sets by specifying the association type or association name that you used in your rule sets. -
Select the rules sets you want to add, then click OK to add them to the master blending rule set.
-
The rules sets you added are place at end of the sequence of blending rule sets in the master blending rule set, and are run in that sequence. If there are multiple blending rules defined for an attribute, only the first rule is run.
-
To change the place of a blending rule set in the sequence, select it and select Edit Sequence from the Actions menu. In the Edit Sequence dialog box, enter the desired sequence number in the Sequence field and click OK. You must first edit the sequence of other rule sets to ensure that the desired sequence number isn't already in use.
Example of Blending Rules
The following example demonstrates the effect of blending rules.
Scenario
For this example, assume that you have defined the blending rules shown in the following list.
-
Blending_Rule_1
-
Item Class: Televisions
-
Attribute Group: Specs
-
Attribute: Frame Description
-
Priority -- Spoke System:
-
1-- Vendor1 Spoke
-
2-- Vendor2 Spoke
-
-
-
Blending_Rule_2
-
Item Class: Televisions
-
Attribute Group: Specs
-
Attribute: Resolution
-
Priority -- Spoke System:
-
1 -- Vendor2 Spoke
-
2 -- Vendor1 Spoke
-
-
-
Blending_Rule_3
-
Item Class: Televisions
-
Attribute Group: Specs
-
Attribute: Weight
-
Priority -- Spoke System:
-
1 -- Vendor3 Spoke
-
2 -- Vendor4 Spoke
-
-
At the beginning of the import process, Vendor1 loads data in Product Hub Portal for the attributes Frame Description and Resolution, as shown in the following list.
-
Vendor1
-
Spoke Item:
-
Vendor1 TV Item
-
-
Attribute: Frame Description
-
Value: Plastic body with back hinge
-
-
Attribute: Resolution
-
Value: 1930x1024
-
-
You import the loaded data. Since Vendor2 hasn't loaded any data in Product Hub Portal, the values loaded by Vendor1 are imported for both of the attributes, Frame Description and Resolution. Consequently, the attribute values in production data are as follows.
-
Production data in Product Hub:
-
Production item in Product Hub:
-
TV_1
-
-
Spoke Item cross-reference
-
Vendor1 TV Item
-
-
Attribute: Frame Description
-
Value: Plastic body with back hinge (initial value, from Vendor1)
-
-
Attribute: Resolution
-
Value: 1930x1024 (initial value, from Vendor1)
-
-
At a later time, Vendor2 loads data in Product Hub Portal for the attributes Frame Description and Resolution, as shown in the following list.
-
Vendor2
-
Spoke Item:
-
Vendor2 Television
-
-
Attribute: Frame Description
-
Value: Plastic with hinge
-
-
Attribute: Resolution
-
Value: 2930x1034
-
-
Then you try to import the data loaded by Vendor2. You determine that there is a match with the existing production item TV_1, so you create a new spoke system cross-reference with TV_1. Since Blending_Rule_1 gives blending priority for the attribute Frame Description to Vendor1, Vendor1's value for that attribute remains as previously imported into production. Since Blending_Rule_2 gives blending priority for the attribute Resolution to Vendor2, Vendor2's value for that attribute is imported into production. The resulting data is imported into production, as shown in the following list.
-
Production data in Product Hub:
-
Production item in Product Hub:
-
TV_1
-
-
Spoke Item cross-references
-
Vendor1 TV Item
-
Vendor2 Television
-
-
Attribute: Frame Description (Vendor1 has blending priority)
-
Value: Plastic body with back hinge (from Vendor1, unchanged)
-
-
Attribute: Resolution (Vendor2 has blending priority)
-
Value: 2930x1034 (from Vendor2)
-
-
At a later time, both Vendor1 and Vendor2 update their data in Product Hub Portal, including changed values for Frame Description and the addition of the new attributes Height and Weight, as shown in the following lists.
-
Vendor1
-
Spoke Item:
-
Vendor1 TV Item
-
-
Attribute: Frame Description
-
Value: Plastic body of PVC make with metallic back hinge (updated)
-
-
Attribute: Resolution
-
Value: 1930x1024
-
-
Attribute: Height (new)
-
Value: 2 Feet (new)
-
-
-
Vendor2
-
Spoke Item:
-
Vendor2 Television
-
-
Attribute: Frame Description
-
Value: PVC body with hinge (updated)
-
-
Attribute: Resolution
-
Value: 2930x1034
-
-
Attribute: Weight (new)
-
Value: 5 kg (new)
-
-
Then you import the updated data from Vendor2 (but not from Vendor1). The resulting data is imported into production, as shown in the following list.
-
Production data in Product Hub:
-
Production item in Product Hub:
-
TV_1
-
-
Spoke Item cross-references:
-
Vendor1 TV Item
-
Vendor2 Television
-
-
Attribute: Frame Description (Vendor1 has blending priority)
-
Value: Plastic body with back hinge (original import, from Vendor1)
-
-
Attribute: Resolution (Vendor2 has blending priority)
-
Value: 2930x1034 (unchanged, from Vendor2)
-
-
Attribute: Weight (new, from Vendor2)
-
Value: 5 kg (new, from Vendor2)
-
-
Note the following about the import into production data:
-
Since Blending_Rule_1 gives blending priority for the attribute Frame Description to Vendor1, Vendor1's value for that attribute is used instead of Vendor2's updated value, which isn't imported.
-
Because Vendor1's updated data wasn't imported, Vendor1's value for the attribute Frame Description remains as originally imported into production.
-
The new attribute Weight is imported from Vendor2. Even though Blending_Rule_3 is defined on that attribute, the rule isn't triggered because neither Vendor3 or Vendor4 uploaded data in Product Hub Portal, and no spoke system cross-references for these vendors exist or are created by matching during import.
FAQs for Product Rules
Why didn't my rule work?
If a rule that you defined doesn't seem to work as you intend, consider some of these reasons:
-
The rule set containing the rule isn't enabled. To enable a rule set, you must assign it to the master rule set.
-
The rule set containing the rule is in Draft status. Draft status prevents the rule from being triggered during item transactions. It's common to put a rule set in Draft status when starting to define it. To take the rule out of draft status, deselect the Draft check box on the Edit Rule Set page.
-
You defined a rule expression or condition incorrectly. Review the requirements for the If and Then expressions of assignment rules, and for the If expression and Validation Condition of validation rules.
What's a user message and when is it displayed?
The optional user message for a rule is displayed to the end user when:
-
An assignment rule successfully assigns a value to the target attribute.
You can suppress the display by selecting Hide user message in the rule definition.
-
A validation rule's validation condition evaluates to false.