Decision Management (ODM,ADS)

 View Only
Expand all | Collapse all

IlrExceptionHandler to CustomExceptionHandler -- An error occurred during the export of the ruleset archive. java.lang.NullPointerException

  • 1.  IlrExceptionHandler to CustomExceptionHandler -- An error occurred during the export of the ruleset archive. java.lang.NullPointerException

    Posted Thu January 21, 2021 08:21 AM

    Migrated the rules from classic to Decision Service/Engine.

    Fixed all errors that showed after the migration.

    I have replaced the deprecated IlrExceptionHandler  to CustomExceptionHandler Getting the below null pointer exception when trying to generate the ruleset archive in the rule designer or while deploying the RuleApp in rule designer.

    If I keep the IlrExceptionHandler  I can able to generate/deploy.

    Am i missing anything ? Please suggest.

    !ENTRY ilog.rules.studio.shared 4 0 2021-01-20 11:46:15.289
    !MESSAGE An error occurred during the export of the ruleset archive.
    !STACK 0
    java.lang.NullPointerException
    at com.ibm.rules.engine.lang.semantics.util.SemModelUtil.getTypes(SemModelUtil.java:38)
    at com.ibm.rules.engine.lang.semantics.SemAbstractCheckedLanguageFactory.methodInvocation(SemAbstractCheckedLanguageFactory.java:830)
    at com.ibm.rules.engine.lang.semantics.SemAbstractCheckedLanguageFactory.methodInvocation(SemAbstractCheckedLanguageFactory.java:766)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorMethodGenerator.declareVariableInMap(RuleVariableEvaluatorMethodGenerator.java:271)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorMethodGenerator.initialiseProtectedVariable(RuleVariableEvaluatorMethodGenerator.java:210)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorMethodGenerator.generateMethod(RuleVariableEvaluatorMethodGenerator.java:110)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorClassGenerator$RuleActionVarEvaluatorsGenerator.visit(RuleVariableEvaluatorClassGenerator.java:282)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorClassGenerator$RuleActionVarEvaluatorsGenerator.visit(RuleVariableEvaluatorClassGenerator.java:251)
    at com.ibm.rules.engine.ruledef.semantics.SemActionContent.accept(SemActionContent.java:108)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorClassGenerator$RuleActionVarEvaluatorsGenerator.visitContent(RuleVariableEvaluatorClassGenerator.java:266)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorClassGenerator$RuleActionVarEvaluatorsGenerator.generateRuleMethods(RuleVariableEvaluatorClassGenerator.java:260)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorClassGenerator.visit(RuleVariableEvaluatorClassGenerator.java:184)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorClassGenerator.visit(RuleVariableEvaluatorClassGenerator.java:54)
    at com.ibm.rules.engine.ruledef.semantics.SemProductionRule.accept(SemProductionRule.java:115)
    at com.ibm.rules.engine.algo.compilation.RuleVariableEvaluatorClassGenerator.generateClass(RuleVariableEvaluatorClassGenerator.java:94)
    at com.ibm.rules.engine.rete.compilation.builder.lang.EngineObjectModelBuilder.generateRuleVariableEvaluatorClass(EngineObjectModelBuilder.java:105)
    at com.ibm.rules.engine.rete.compilation.builder.lang.EngineObjectModelBuilder.generateEngineModel(EngineObjectModelBuilder.java:54)
    at com.ibm.rules.engine.rete.compilation.ReteCompiler.compileRulesetAsModel(ReteCompiler.java:98)
    at com.ibm.rules.engine.ruledef.compilation.AbstractRuleEngineCompiler.compile(AbstractRuleEngineCompiler.java:167)
    at com.ibm.rules.engine.rete.compilation.ReteCompiler.compile(ReteCompiler.java:75)
    at com.ibm.rules.engine.ruleflow.compilation.TaskInstanceFactory.addRuleEngine(TaskInstanceFactory.java:296)
    at com.ibm.rules.engine.ruleflow.compilation.TaskInstanceFactory.addConstrutor(TaskInstanceFactory.java:229)
    at com.ibm.rules.engine.ruleflow.compilation.TaskInstanceFactory.createTaskInstance(TaskInstanceFactory.java:138)
    at com.ibm.rules.engine.ruleflow.compilation.TaskInstanceFactory.createRuleTaskInstance(TaskInstanceFactory.java:158)
    at com.ibm.rules.engine.ruleflow.compilation.SemNewTaskFactory.getNewReteTask(SemNewTaskFactory.java:84)
    at com.ibm.rules.engine.ruleflow.semantics.SemReteTask.getNewTask(SemReteTask.java:82)
    at com.ibm.rules.engine.ruleflow.compilation.SemRuleflowCompilerImpl$TaskSubMethodGenerator.generateSubMethod(SemRuleflowCompilerImpl.java:331)
    at com.ibm.rules.engine.ruleflow.compilation.SemRuleflowCompilerImpl.compileFirstPass(SemRuleflowCompilerImpl.java:267)
    at com.ibm.rules.engine.ruleflow.compilation.SemRuleflowCompilerImpl.compile(SemRuleflowCompilerImpl.java:145)
    at com.ibm.rules.engine.ruleflow.migration.compilation.SemMigrationRuleflowCompilerImpl.compile(SemMigrationRuleflowCompilerImpl.java:45)
    at com.ibm.rules.brl.code.compiler.rve.EngineOutlineBuilder.buildEngineOutline(EngineOutlineBuilder.java:78)
    at com.ibm.rules.studio.rve.builder.RVERulesetArchiveExporter.export(RVERulesetArchiveExporter.java:350)
    at com.ibm.rules.studio.decisionservice.SDsRVERulesetArchiveExporter.export(SDsRVERulesetArchiveExporter.java:134)
    at ilog.rules.studio.model.archive.internal.RulesetArchiveExportJob.run(RulesetArchiveExportJob.java:65)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)



    ------------------------------
    Satish Kumar
    ------------------------------


  • 2.  RE: IlrExceptionHandler to CustomExceptionHandler -- An error occurred during the export of the ruleset archive. java.lang.NullPointerException

    Posted Thu January 21, 2021 06:21 PM
    Hi,

    This is likely due to reference in the BOM to engine classes (package ilog.rules.engine), most likely imported by the previous exception handler, and that do not have all attributes defined. It has been reported in particular for the method handleActionException that uses RuleInstance.
    If you remove the exception handler class from the BOM (it should not be used after the migration) the problem should disappear.




    ------------------------------
    Alain Robert
    ------------------------------



  • 3.  RE: IlrExceptionHandler to CustomExceptionHandler -- An error occurred during the export of the ruleset archive. java.lang.NullPointerException

    Posted Tue January 26, 2021 08:35 PM
    Hi Alian,

    I have removed completely in BOM model reference of IlrExceptionHandler (package ilog.rules.engine) before the migration and Used the same MyExceptionHandler class to implement CustomExceptionHandler (Package com.ibm.rules.engine.ruledef.runtime) and referenced CustomExceptionHandler and RuleInstance in data model. then migrated from classic to Decision Service/Engine. I still get the null pointer exception while export jar/deploy. If we remove the CustomExceptionHandler from the MyExceptionHandler class we can able to export the export jar/deploy. But how can we implement the CustomExceptionHandler. Please suggest or a code snippet would help me to move forward. 

    Thanks in Advance!!

    ------------------------------
    Satish Kumar
    ------------------------------



  • 4.  RE: IlrExceptionHandler to CustomExceptionHandler -- An error occurred during the export of the ruleset archive. java.lang.NullPointerException

    Posted Fri January 29, 2021 12:05 AM

    You do not want any of the engine classes in the BOM neither from ilog.rules.engine nor com.ibm.rules.engine.

    You might have imported the customExceptionHandler itself and dependent classes in your BOM since the class is defined in the XOM. You need to make sure you delete it from the BOM along with any classes referenced.( RuleInstance...)

    In ODM 8.10.5  we have addressed this issue, if you have the opportunity to update to this version, it will make your migration a little easier.



    ------------------------------
    Alain Robert
    ------------------------------