Siebel Order Management Infrastructure Guide > PSP Engine >
About the Product Selection and Pricing (PSP) Engine
The Product Selection and Pricing (PSP) engine is a generalized procedural logic engine for transforming an input row set into an output row set. PSP is an extension of Siebel Workflow. A PSP procedure is a workflow process that includes a Business Service step employing methods of the Row Set Transformation Toolkit business service.
A PSP procedure transforms a set of input rows into a set of output rows by executing matrix lookups, conditional logic, and external function calls. In this release, the functions of pricing, eligibility (product, attribute, and promotion), and product recommendation use the PSP engine.
For example, Siebel Pricer uses PSP procedures to apply all of the different types of discounts that are available with a particular product. Because these discounts are based on a PSP procedure rather than on C++ code, you can:
- Change the order in which discounts are applied.
- Customize the calculations used by discounts.
- Extend the preconfigured pricing PSP procedure to calculate additional costs or prices and margin.
Advantages of PSP Usage
The following are some of the benefits of using PSP procedures as a basis for Siebel order management tasks:
- Highly configurable procedural logic eliminates or reduces the need for custom script.
- PSP methods and infrastructure are optimized for performance (for example, with set-based processing, caching, and SQL query consolidation).
- The PSP framework can be extended for use with external services and functions.
- Integrators can learn this one framework and use it for pricing, eligibility, and so on.
A PSP procedure is the sequence of steps involved in transforming an input row set into an output row set. Examples of steps include a call to a business service, an instance of a transform, a conditional branch, a subprocedure call, or a terminator (an end step). A PSP procedure is any workflow that uses methods from the Row Set Transformation Toolkit business service.
A controller workflow is the invocation mechanism for the PSP engine. A PSP procedure is always called by a controller workflow. A controller workflow retrieves contextual information, invokes a generic PSP procedure, and then processes the results. It insulates the underlying PSP logic (such as a pricing procedure) from the calling context (such as repricing a quote or pricing an XML order passed in through a Web service). For more details on controller workflows, see Controller Workflow.
A row set is a property set that conforms to the structure defined in About Row Sets. It is used to represent the set of data upon which the PSP engine operates (such as data for quote line items).
The Row Set Transformation Toolkit is a business service that exposes a set of methods called transforms. Transform methods are called by steps within a PSP procedure. A transform accepts one or more input row sets, performs a series of operations (such as database queries), and then returns an updated version of the row sets as output. Special step input arguments called actions define the processing performed by a particular step. An action can perform a wide variety of updates to the input row set (such as setting the Net Price field value). Most transforms have a defined set of transform conditions that occur while the transform is executing (for example, the Simple Look-Up transform queries the database and then raises one or more of the following conditions: On First Match, On Match, On Last Match, On No Match). The condition raised depends on the result of the SQL query. Actions are attached to these conditions.
How PSP Procedures Are Built
PSP procedures are created in the same way that standard workflows are created, in the Business Process Designer. The Process Designer is a drag-and-drop interface that you access from the Workflow Process object in Siebel Tools. For more information on building workflows, see Siebel Business Process Framework: Workflow Guide.
Like a standard workflow, a PSP procedure has a start step and an end step. A PSP procedure differs from a standard workflow in that the steps of a standard workflow perform actions, while the steps of a PSP procedure transform row sets in some way, as shown in Figure 12. In Figure 12, a set of product information that includes data on product IDs, names, and quantities is transformed into a new set of information that includes an additional product as well as pricing information for each product.
Figure 12. Transformation of a Row Set by a PSP Procedure
The PSP engine transforms row sets using the methods in the Row Set Transformation Toolkit business service. For more information about these methods, see Row Set Transformation Toolkit Methods.
About Row Sets
A type of property set, a row set is a memory structure used to pass data between business services. A row set is a group of rows where each row contains multiple name/value pairs (paired values). A row within a row set can have multiple child property sets with name/value pairs; the hierarchy goes no deeper than these child property sets.
Figure 13 provides a graphical example of a row set. In this figure, the second layer of boxes labeled "Row 1," "Row 2," and "Row 3" are the rows within this example row set. Each of these rows 1 through 3 have name/value pairs for data labeled "ID," "Price List ID," "Product ID," "NRC Price," and "MRC Price." Additionally, each of these rows 1 through 3 contains child property sets, called "NRC Price Waterfall Row Set" and "MRC Price Waterfall Row Set." The child property sets contain their own rows with name/value pairs, for a deeper level of pricing data.
Figure 13. Example Row Set
For more information about Siebel property sets, see Integration Platform Technologies: Siebel Enterprise Application Integration.