Compound assignment operation BigDecimal_type_property += Numeric_value causes compilation errors in executable model.

Solution Unverified - Updated -

Issue

Building a rule which is written in MVEL dialect and contains a compound assignment operation BigDecimal_type_property += Numeric_value in executable model, compilation errors occur. Where Numeric_value is a numeric variable or a numeric literal.

For example, when I build a rule which uses a statement like (*1) with executable rule models enabled,

package com.example.reproducer

import com.example.reproducer.Bus

dialect "mvel"

rule "bus6a"
    when
        $bus : Bus()
    then
        $bus.weight += 1000;    ..... (*1)
        System.out.println("***** " + $bus + ", weight = " + $bus.weight);
        update($bus);
end

// $bus.weight is a BigDecimal-type property.

compilation errors like below occur.

$ mvn clean compile exec:exec -DgenerateModel=YES
...
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile-1) @ reproducer_model_compiler_6a_6b ---
...
[ERROR] /work2/testdir/reproducer_model_compiler_6a_6b/target/generated-sources/drools-model-compiler/main/java/com/example/reproducer/P86/LambdaConsequence86B94E0EB0387F8D724213EF209CA726.java:[19,13] weight has private access in com.example.reproducer.Bus
[ERROR] /work2/testdir/reproducer_model_compiler_6a_6b/target/generated-sources/drools-model-compiler/main/java/com/example/reproducer/P86/LambdaConsequence86B94E0EB0387F8D724213EF209CA726.java:[19,21] bad operand types for binary operator '+'
  first type:  java.math.BigDecimal
  second type: int
...

This issue occurs in the case of using the other basic operations -=, *=, /= as well as +=.

Environment

  • Red Hat Decision Manager (RHDM)
    • 7.5.0 - 7.9.1

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content