Drools Exception执行规则" XXX"访问被拒绝

时间:2016-12-02 23:59:40

标签: java drools

我在drools中执行某些规则时遇到了一些问题。通过intelijj执行javafx应用程序时代码运行正常但在通过java webStart(jnlp)运行时失败。 错误如下:

规则" Person DOB或TIN FATCA"的异常执行结果在defaultpkg中:java.security.AccessControlException:拒绝访问(" java.lang.RuntimePermission"" accessClassInPackage.sun.reflect.generics.reflectiveObjects")     at org.drools.core.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)     在org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1083)

.....

错误的规则是随机的,并不总是失败的规则。 这种情况下的规则是:

rule "Person DOB or TIN FATCA"
when
    tr : TaxReturn( taxAuthority != Country.ZA)
    fi : FinancialInstitution ( ) from tr.financialInstitution
    ar : AccountReport ( accountHolderType == AccountHolderType.Individual ) from fi.accountReport
    ah : AccountHolder ( ) from ar.accountHolder
    pe : Person ( (birthDate == null || birthDate.toString().isEmpty()) && taxIdentification.isEmpty() ) from ah.individual
then
    Message msg = new Message (ar.getAccountHolderType().toString(),"E","EIAR001",pe.getIndex(),"birthDate", pe.getIndex());
    trData.addMessage(msg.getIndex() +"_"+ msg.getField(), msg);
    msg = new Message (ar.getAccountHolderType().toString(),"E","EIAR012",pe.getIndex(),"idNumber", pe.getIndex());
    trData.addMessage(msg.getIndex() +"_"+ msg.getField(), msg);
    msg = new Message (ar.getAccountHolderType().toString(),"E","EIAR012",pe.getIndex(),"idType", pe.getIndex());
    trData.addMessage(msg.getIndex() +"_"+ msg.getField(), msg);
    msg = new Message (ar.getAccountHolderType().toString(),"E","EIAR012",pe.getIndex(),"idCountry", pe.getIndex());
    trData.addMessage(msg.getIndex() +"_"+ msg.getField(), msg);
end

此外,错误仅在某些条件下发生,并且填充了不同的对象。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我发现了问题所在:

在我们的Message类中,我们有两个抛出新NotImplementedException的方法。 这不受支持,所以我们不得不将抛出的异常更改为UnsupportedOperationException。 希望这可以帮助任何有类似问题的人。