IBM Support

RS00171: EMPTY DECISION TABLE LEADS TO INCORRECT RULESET GENERATION

Subscribe

You can track all active APARs for this component.

 

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