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

Ansgar Konermann ansgar.konermann at googlemail.com
Fri Sep 23 15:25:07 EDT 2011


Am 23.09.2011 20:03 schrieb "TroyL" <troylparrish at aol.com>:
>
> 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.

Next things to try could be:
- increase verbosity of your ant compile so you can see what is actually
being compiled.
- make sure the Ant build is as similar as possible to your unit test
(observe verbose output of Ant build carefully)

Best regards,

Ansgar

>
> *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.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110923/bb162c93/attachment.html 


More information about the rules-users mailing list