Thank you for the reply. I have run a number of much simpler applications in
several environments, below are my results:
My Ant Script remains unchanged.
*My Test Application*:
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
builder.add(ResourceFactory.newClassPathResource("declaredType.drl"),
ResourceType.DRL);
if(builder.hasErrors()){
System.out.println(builder.getErrors().toString());
}
KnowledgeBase base = KnowledgeBaseFactory.newKnowledgeBase();
base.addKnowledgePackages(builder.getKnowledgePackages());
StatefulKnowledgeSession session = base.newStatefulKnowledgeSession();
Test test = new Test();
test.setName("Test");
session.insert(test);
session.fireAllRules();
session.dispose();
*My DRL*:
package com.test
declare SubTest
name : String
id : int
end
rule "Test Rule"
when
Test(name == "Test")
then
SubTest sTest = new SubTest();
sTest.setName("SubTest");
sTest.setId(12);
System.out.println("Test Ran");
System.out.println(sTest.getName() + " " + sTest.getId());
end
When I run my test application the drl compiles and I get the following
output to the console:
Test Ran
SubTest 12
However I get the following error when trying to compile it with the Ant
Script:
[compiler] Duplicate type definition. A class with the name
'com.test.SubTest' was found in the classpath while
trying to redefine the fields in the declare statement. Fields can only be
defined for non-existing classes.
BUILD FAILED
C:\Users\troy.l\conceptsWorkspace\DeclaredType\build1.xml:23: RuleBaseTask
failed: Duplicate type definition. A
class with the name 'com.test.SubTest' was found in the classpath while
trying to redefine the fields in the
declare statement. Fields can only be defined for non-existing classes.
This error goes away when the Declared Type has only one field IE:
declare SubTest
name : String
end
The drl compiles into a PKG and the I can successfully use the PKG in my
test application when the Declared Type has only one field. Also I do not
have this issue in other Drools versions (I have tried 5.1.1, 5.0.1 and
5.2.0.M2).
This is a stand alone test application and the above represents almost the
entire test project with the exception of the Test.java class which is a
pojo.
Thanks again for responding.
--
View this message in context:
http://drools.46999.n3.nabble.com/Re-rules-users-Ant-Build-of-PKG-with-De...
Sent from the Drools: User forum mailing list archive at
Nabble.com.