Table of Contents

Article

Optimizing strategies with whitelist functions

When a globally optimized strategy cannot be optimized because its component or components contain expressions with unsupported functions, you can add the functions to the pyWhitelistfunction data transform or change the strategy logic to contain only supported functions.

In Dev Studio, you can verify which components are optimized to decide which functions you want to define as whitelist functions on the strategy canvas or on the Global Optimization tab, as shown in the following figures:

Thumbnail

Unsupported functions in strategy components

Thumbnail

Unsupported function in a strategy component

Cause

A strategy component cannot be optimized when it contains functions that are not whitelist functions. The following functions and the functions that are listed in the pxWhitelistFunction data transform are whitelist functions.

FunctionRulesetLibraryParameters
dividePega-RULESMath(BigDecimal::dividend, BigDecimal::divisor)
todayPega-RULESDateTimeN/A
normalPega-DecisionEngineRandomN/A
normalPega-DecisionEngineRandom(double::mean, double::sd)
randomPega-DecisionEngineRandomN/A
randomPega-DecisionEngineRandom(double::min, double::max)
andN/AN/A(boolean::param...)
orN/AN/A(boolean::param...)
getDatePega-RULESDateTime(String::strStamp)
DateTimeDifferencePega-RULESDateTime(String::beginTime, String::endTime, String::strPrecision)
ifN/AN/A(boolean::condition, then, otherwise)
Thumbnail

Example of a function that can be optimized in globally optimized strategies

Solution

Investigate the strategy that you want to optimize and consider changing the strategy's logic. You might need to use different strategy components or reconfigure the existing ones to remove references to the functions that cannot be optimized. Alternatively, it might be possible to add these functions to the pyWhitelistFunction data transform that is applied in the pxWhitelistFunction data transform and enable optimization for the component that uses the functions.

Adding a new whitelist function

When you add a function to the pyWhitelistFunction data transform, ensure that you comply with the following requirements:

  • Use only the following supported parameters and return types for the new function:
    • String
    • BigDecimal
    • java.util.Date
    • double
    • Double
    • int
    • Integer
    • Boolean
    • boolean
  • Do not embed any public APIs in the function body.
  • Do not modify the StepPage in the function body.
  • Ensure that the function does not have any side effects.
  1. In the navigation panel of Dev Studio, click Records.
  2. Expand the Data Model section and click Data Transform.
  3. In the list of data transform rules, click pyWhitelistFunction.
  4. On the Definition tab, place the cursor in one of the first-level rows and click the Add a row button.
  5. Define the new function:
    1. From the list in the Action column, select Update Page.
    2. In the Target column, enter: .pyWhiteListFunction
    3. To propagate values from another page, from the list in the Relation column, select with values from and enter the page name in the Source column.
    4. Add and fill in the second-level rows with the following properties:
  6. Confirm the changes by clicking Save.
  7. Rerun the globally optimized strategy.
  8. On the Test tab of the optimized strategy, do a side-by-side comparison to see differences between non-optimized and optimized results.

The following figure shows a sample configuration of a new whitelist function:

Thumbnail

Adding a function to the pyWhitelistFunction data transform

For more information, see Activities, libraries and functions.

 

 

Published September 3, 2018 — Updated September 24, 2018


100% found this useful

Related Content

Have a question? Get answers now.

Visit the Pega Support Community to ask questions, engage in discussions, and help others.