Review usage of Decimal types

The semantics of Decimal type declarations on PBL changed on version 10g of BPM. You might need to adjust existing BPM 6.0 project code to avoid potential runtime errors.
Starting with Oracle BPM version 10.3, PBL changes the way it verifies precision and scale of Decimal types. The semantics of Decimal type declarations changed as follows:
  • AquaLogic BPM 6.0 and older versions: A Decimal(M,N) declaration means "M places reserved for integer part, N places for decimal part". Example for Decimal(5,3): 12345.123.
  • Oracle BPM 10.3: A Decimal(M,N) declaration means "A total of M places, from which a maximum of N are used for the decimal part". Example for Decimal(5,3): 12.345.

This new interpretation of Decimal declarations is equivalent to that of SQL.

Existing code may raise IllegalConversionException at runtime, given that a value that was valid on version 6.0 may be too big for the same Decimal declaration on version 10.3.

Follow these steps to fix your code and prevent potential incompatibilities:
  1. Identify all cases of Decimal(M,N) type declarations in your project.

    This includes all variable type declarations, including project variables, process instance variables, local variables, argument variables and BPM Object attributes.

  2. In each case, evaluate whether the current type declaration is still valid given the new semantics.

    In general, you should be safe changing all Decimal(M,N) declarations with Decimal(M+N, N). For example, replace Decimal(5,2) with Decimal(7,2).

  3. Re-deploy your project and test.