private void createKnowledgeBase()
{
KnowledgeBaseConfiguration kBaseConfig = KnowledgeBaseFactory
.newKnowledgeBaseConfiguration(null, context.getClassLoader());
kBaseConfig.setOption(EventProcessingOption.STREAM);
//kBaseConfig.setOption(MultithreadEvaluationOption.YES);
//kBaseConfig.setOption(MaxThreadsOption.get(Runtime.getRuntime().availableProcessors() * 2));
KnowledgeBase kBase = KnowledgeBaseFactory
.newKnowledgeBase(kBaseConfig);
KnowledgeBuilderConfiguration bconf = KnowledgeBuilderFactory
.newKnowledgeBuilderConfiguration(null,
context.getClassLoader());
bconf.setProperty("drools.dialect.java.compiler", "ECLIPSE");
bconf.setProperty("drools.dialect.java.lngLevel", "1.6");
DecisionTableConfiguration dtableconfiguration =
KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtableconfiguration.setInputType( DecisionTableInputType.XLS );
PackageBuilderConfiguration pconf = (PackageBuilderConfiguration) bconf;
pconf.setClassLoaderCacheEnabled(true);
MVELDialectConfiguration conf = (MVELDialectConfiguration)pconf.getDialectConfiguration("mvel");
conf.setStrict(false);
String compilerDumpDir = context.getCompilerDumpDir();
if (compilerDumpDir != null && !compilerDumpDir.isEmpty())
{
pconf.setDumpDir(new File(compilerDumpDir));
}
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kBase, bconf);
kbuilder.add(ResourceFactory.newFileResource("/tmp/templatetest.xls"),
ResourceType.DTABLE,
dtableconfiguration);
Hello!
I'm using a knowledgeagent to point out a changeset XML which contains the
following DTABLE:
...
<resource source='file:/../templatetest.xls' type='DTABLE' />
...
when I compile I get the following error:
Unable to Analyse Expression request == "/":
[Error: unable to resolve method using strict-mode:
ultra.Default.ultra.MYHTTPD.request()]
[Near : {... request == "/" ....}]
^
[Line: 7, Column: 10] : [Rule name='print the incoming query_9']
The weird this is that MYHTTPD class is a javabean and contains getRequest
and setRequest methods.
notice that it tries a no getter method
ultra.Default.ultra.MYHTTPD.request().
If I do the same logic from a normal DRL rules file it works fine.
MYHTTPD is generated so I cannot past the source here, but it's correct and
as I mentioned working in DRL files.
this is how the XSL file looks like:
RuleSet A rules test
Import ultra.Default.ultra.MYHTTPD
RuleTable print the incoming query
CONDITION ACTION
MYHTTPD
request System.out.println($param);
Matcher Logger
/ "webserver root"
Anybody who knows what this is about?
Thanks // Olle
--
View this message in context: http://drools.46999.n3.nabble.com/xls-decisiontable-unable-to-resolve-method-using-strict-mode-tp3635460p3635460.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users