Drools,更新错误:找不到对象的句柄

时间:2015-08-21 21:12:59

标签: drools

这是我的规则

rule "ICodes in HISTORY" 
@filename("ORDERING.drl")
ruleflow-group "ORDERING_MAIN" 
lock-on-active true
salience 5000
when
    icodeColl:  ArrayList (size > 0) from collect ( CodeFact( traceSegments contains RuleConstant.Seg.H, position == null, type == RuleConstant.CodeSource.I) )

    ccodeColl:  ArrayList (size >= 0) from collect ( CodeFact( type == RuleConstant.CodeSource.C) )

    orderHier:  OrderHierarchy( identifier == 
            RuleConstant.ReferenceTables.IHIER)
    theCase:    CaseFact()
then
    ArrayList hOrderedIcodes= orderHier.order(icodeColl, ccodeColl);

    for (int i=0; i<hOrderedIcodes.size(); i++) {
        CodeFact icode = (CodeFact)hOrderedIcodes.get(i);
        int positionCount = theCase.getPositionCount();

        icode.setPosition( BigInteger.valueOf( positionCount ) );
        theCase.incrementPosition();

        update( icode);
    }
end

这是我得到的错误。我知道CodeFact正在被另一个规则收回,但我很疯狂,我会在when子句中吞并它,但是在then子句中它不能用于更新。

  

org.drools.FactException:更新错误:找不到对象的句柄:   CodeFact @ 2a501b38 {xxx.xxx,1,1.0}。   它在工作记忆中吗?

1 个答案:

答案 0 :(得分:0)

对于遇到这个问题的人来说,11个月后仍然像我一样: 我一直在使用drools开发一个稍微更老的项目,我们总是使用Java 7运行它。在尝试使用Java 8运行我的项目后出现此错误。希望这对某人有帮助,因为我找不到直接的答案谷歌搜索。这只是我对这个错误的体验,希望这是你的原因!