The use of the four basic binary operators taking BigDecimal operand(s) causes a compilation error in executable model.

Solution Unverified - Updated -


Building a rule which is described in MVEL dialect and uses one of the four basic binary operators (+, -, *, /) taking one or two BigDecimal type value(s) as operand(s) with executable rule models enabled causes a compilation error.

For example, in the following rule,

package com.example.reproducer

import com.example.reproducer.Bus
import java.math.BigDecimal

dialect "mvel"

rule "bus3b"
        $bus : Bus()
        BigDecimal grossWeight = $bus.weight + $bus.capacity * 55 + $bus.maxLoadingWeight;    // ..... (*1)
        System.out.println("***** " + $bus + ", gross weight = " + grossWeight);

// $bus.weight and $bus.maxLoadingWeight are BigDecimal type properties, and $bus.capacity is an int type property of Bus class.

the expression $bus.weight + $bus.capacity * 55 in the statement (*1) performs an addition of BigDecimal type value ($bus.weight) and numeric value (the result of $bus.capacity * 55).

When I build a maven project which contains this rule with executable model enabled, a compilation error occurs with the message like below.

$ mvn clean compile -DgenerateModel=YES
[ERROR] /work2/testdir/reproducer_model_compiler_3b/target/generated-sources/drools-model-compiler/main/java/com/example/reproducer/P3B/[18,61] bad operand types for binary operator '+'
  first type:  java.math.BigDecimal
  second type: int

This issue occurs for the following operations:

  • BigDecimal_type_value op Numeric_value
  • Numeric_value op BigDecimal_type_value
  • BigDecimal_type_value op BigDecimal_type_value

where op is one of the binary operators +, -, *, /.


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

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In