APAR status
Closed as documentation error.
Error description
When an empty decision table is used as the body of a rule task (for instance by dragging and dropping it into the ruleflow, this will lead to an incorrect ruleset archive generation, and a parsing error at execution time. I get a stack trace as follows: ilog.rules.res.xu.ruleset.impl.IlrRulesetParseException: Ruleset /RuleApp/1.0/testrules/1.0 parsing failed Compilation error in task flow#DT1: could not find the group DT1 at ilog.rules.bres.session.j2se.IlrStatelessRuleSessionImpl.execute Rules(IlrStatelessRuleSessionImpl.java:188) at ilog.rules.ras.tools.engine.impl.IlrEngineWrapperAbstract.runRul eset(IlrEngineWrapperAbstract.java:431) at ilog.rules.ras.ssp.servlets.IlrExecutionServlet.doPost(IlrExecut ionServlet.java:65) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(Applica tionFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWra pperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardCon textValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authe nticatorBase.java:433) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostVa lve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportVa lve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngi neValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapte r.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor .java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler. process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.ja va:447) at java.lang.Thread.run(Thread.java:619) This is due to the fact that the rule task references the group of the DT: ruletask flow#DT1 { algorithm = default; ordering = dynamic; body { group("DT1") } }; However, the DT being empty, its IRL is also empty. The problem comes from the fact that the group is set as a property of the rules generated from the DT. Hence, if there are no rules, no group is defined, and the parsing of the rule task will fail.
Local fix
A workaround is to add a rule selection to the the rule task that references the empty DT. Adding "true" as a static BAL rule selection works. Another workaround is to put the DT in a separate package and use this package as the rule task's body. You can also generate the corresponding ruleset with an extractor instead : keep the default extractor to have all rules deployed, just like when there is no extractor.
Problem summary
When an empty decision table is used as the body of a rule task (for instance by dragging and dropping it into the ruleflow, this will lead to an incorrect ruleset archive generation, and a parsing error at execution time.
Problem conclusion
Usage of empty decision tables, dragged into a ruletask, should be documented as not supported.
Temporary fix
Comments
APAR Information
APAR number
RS00171
Reported component name
WS ILOG JRULES
Reported component ID
5724X9800
Reported release
701
Status
CLOSED DOC
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2010-03-24
Closed date
2010-07-07
Last modified date
2011-05-27
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Applicable component levels
[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SS6MTS","label":"WebSphere ILOG JRules"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0.1","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
27 May 2011