Skip to main content

This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.

Support Article

Rows in decision table greater than 1000 are not evaluated

SA-57996

Summary



When rows in a decision table are greater than 1000, the rows are not evaluated and the 'otherwise' value displays. The actual value does not display.


Error Messages



Not Applicable


Steps to Reproduce

  1. Create a decision table with more than 10 columns and more than 1000 rows. 
  2. Evaluate lines 1020 to 1029. Though these lines match, the actual row value does not display.


Root Cause



A defect in Pegasystems’ code or rules: Buggy Lower Limit calculation

The Lower Limit calculation is based on the decision table assembler code (fuA : decisionTableMethodBody) as below.


int nCondRowLimit = 100;
if (numColumns > 50) { nCondRowLimit = 1; }
else if (numColumns > 30) { nCondRowLimit = 5; }
else if (numColumns > 25) { nCondRowLimit = 10; }
else if (numColumns > 20) { nCondRowLimit = 15; }
else if (numColumns > 15) { nCondRowLimit = 20; }
else if (numColumns > 10) { nCondRowLimit = 30; }
else if (numColumns > 5) {nCondRowLimit = 60; }


In this scenario, columns are > 10 , hence {nCondRowLimit = 30; }.

Consider RowBlock1 which handles 1000 to 1999 rows.
The evaluation is done in sets of 30:

1000 > 1000-1029,
1030 > 1030-1059, 
1060 > 1060-1089... 

The Switch case is written on the lower limit as,
 
Switch(lowerLimit){ 
case 1000 : .... 
case 1030 : .... 
case 1060 :... 


Hence, if the lower limit is not calculated correctly, there is high chance of missing the rows. 

For example,

For row 1019: 
Lower Limit = 1019 - 1019%30 + 1000%30 = 1000  = Switch of 1000 (finds 1019 as switch 1000 and evaluates all rows from 1000 to 1029). 

However, issue occurs when the row is 1020: 1020 - 1020%30 +1000%30 = 1020 - 0 + 10 = 1030. 

Lower limit is calculated as 1030, set 1030-1059 rows are evaluated. This results in a miss and hence default is used, even when the actual row is available in the set 1000-1029.



Resolution



Apply HFix-44289.


 

Published July 27, 2018 - Updated October 8, 2020

Was this useful?

0% found this useful

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega Community has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice
Contact us