Drools 5.3、5.5掉坑总结

👽个人博客:https://everspring.github.io/
👽公众号:爱历史的IT男

        Drools的规则在测试的时候一定要多线程去压一次。以下问题都是在一条请求下正常,多线程或者连续请求几十次以上才出现的问题。

  1. Exception in thread "Thread-52" java.lang.RuntimeException: Null accessor on node 原因未知,不用管,不会影响规则的触发。 这个问题一般是在第20次运行的时候出来
  2. 出现以下异常
异常一、java.lang.RuntimeException: Exception jitting: 
​
异常二、java.lang.VerifyError   method: evaluate signature: (Ljava/lang/Object;Lorg/drools/common/InternalWorkingMemory;Lorg/drools/reteoo/LeftTuple;)Z) Expecting to find object/array on stack
​
异常三、NullPointerException

出现此类异常是因为有 整数数组 contains ...,比如以下

rule "UW7133"
salience 44
activation-group "UW"
agenda-group "UW"
    when
        $uw:UWCalculateBase();
        $pol:LCPolSchema();
        $cont:LCContSchema(SaleChnl=="03"&&(BankCode=="0128" && $pol.PayIntv == 12 &&[3,5] contains $pol.PayEndYear && $pol.PayEndYearFlag=="Y";
    then
        System.out.println("trigger: " + kcontext.getRule().getName());
        drlResult.setResultMessage(kcontext.getRule().getName());
end

PayEndYear是int类型,[3,5] contains $pol.PayEndYear 就会导致以上问题。改成字符串正常,比如:

["3", "5"] contains String.valueOf($pol.PayEndYear)

3、java.lang.ClassCastException: java.lang.String cannot be cast to [I

是因为比较的时候是字符串==数字,比如 PayEndYear是字符串,PayEndYear == 1这种情况下就会出现以上异常。没有并发情况下是正常的,但有并发就会出现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值