[jboss-jira] [JBoss JIRA] (DROOLS-4967) decision table rules are not loaded into kiebase
Volodymyr Shymkiv (Jira)
issues at jboss.org
Wed Jan 29 02:46:12 EST 2020
[ https://issues.redhat.com/browse/DROOLS-4967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Volodymyr Shymkiv updated DROOLS-4967:
--------------------------------------
Attachment: CanNotDrink2.xls
> decision table rules are not loaded into kiebase
> ------------------------------------------------
>
> Key: DROOLS-4967
> URL: https://issues.redhat.com/browse/DROOLS-4967
> Project: Drools
> Issue Type: Bug
> Components: decision tables
> Affects Versions: 7.21.0.Final, 7.22.0.Final, 7.23.0.Final, 7.24.0.Final, 7.25.0.Final, 7.26.0.Final, 7.27.0.Final, 7.28.0.Final, 7.29.0.Final, 7.30.0.Final, 7.31.0.Final
> Reporter: Volodymyr Shymkiv
> Assignee: Mario Fusco
> Priority: Blocker
> Attachments: CanDrink2.xls, CanNotDrink2.xls
>
>
> When compiling xls decision table, wrong ruleset name is parsed from the xls file. This can lead to multiple issues, like rules being filtered out by kmodule.xml configuration.
> According to documentation, decision table begins with a cell at second or third column, having value RuleSet. The cell on the right of this one contains the name of the rule set, which we want to use as a package name.
> The problem lies in naive approach to parsing the package name from the xls file. As you can see in project drools-compiler, class org.drools.compiler.kie.builder.impl.KieBuilderImpl method packageNameFromDtable, it execute as follows:
> # find "RuleSet" string in the binary data
> # find and return the nearest string which can act as a valid java package name
> The problem is, the string returned from packageNameFromDtable is NOT the value of the cell next to the RuleSet. It is actually a value of a random cell.
> To understand the problem, we need to understand the binary content of the actual xls file. Every cell is presented as a few bytes, containing cell's value, position, and other information. The "problematic" thing here is, the _order_ of the cells in the binary data is NOT constant. BUT the code really just reads the cell _binary_ next to the "RuleSet" cell.
> Problem is present since version 7.21 as it is caused by a fix for DROOLS-3888 - commit 9a179b6e6b955889200b0258ccd18cd1a5f14b46
> In our case, this results in rules not being loaded, as they are filtered out by kmodule.xml configuration. We have a lot of decision tables we want to migrate from an older drools version, and most of them are now ignored due to this bug.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
More information about the jboss-jira
mailing list