[rules-users] Ant Build of PKG with Declared Types

TroyL troylparrish at aol.com
Fri Sep 23 14:02:19 EDT 2011


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-Declared-Types-tp3362455p3362596.html
Sent from the Drools: User forum mailing list archive at Nabble.com.



More information about the rules-users mailing list