Pritham,

I've experienced this issue before as well.  It has to do with the way that the KnowledgeAgent subscribes to resources.  I believe behind the scenes the resources are loaded in an arbitrary order.  There is a JIRA bug report already filed:

https://jira.jboss.org/jira/browse/JBRULES-2377

Hope this helps,

Steve

rules-users-bounces@lists.jboss.org wrote on 01/26/2010 01:07:29 PM:

> [image removed]

>
> [rules-users] KnowledgeAgent doesn't load dsl files and dslr file
> from a change-set correctly

>
> Pritham

>
> to:

>
> rules-users

>
> 01/26/2010 01:10 PM

>
> Sent by:

>
> rules-users-bounces@lists.jboss.org

>
> Please respond to Rules Users List

>
>
> I have a folder in classpath:
>
> dsl/global.dsl
> rules/section-A.dslr
> rules/section-A/page-1.dslr
>
> I create a knowledge base like this:
>
> public KnowledgeBase createKnowledgeBase() throws DroolsParserException,
> IOException {
>
>     KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory
>             .newKnowledgeBuilder();
>
>         knowledgeBuilder.add(ResourceFactory
>                 .newClassPathResource("dsl/global.dsl"),
>                 ResourceType.DSL);
>         knowledgeBuilder.add(ResourceFactory
>                 .newClassPathResource("rules/section-A.dslr"),
>                 ResourceType.DSLR);
>         knowledgeBuilder.add(ResourceFactory
>                 .newClassPathResource("rules/section-A/page-1.dslr"),
>                 ResourceType.DSLR);  
>
>     if (knowledgeBuilder.hasErrors()) {
>         throw new RuntimeException(knowledgeBuilder.getErrors().toString());
>     }
>
>     KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
>    
> knowledgeBase.addKnowledgePackages(knowledgeBuilder.getKnowledgePackages());
>
>     return knowledgeBase;
> }
>
> // code
> knowledgeBase = createKnowledgeBase();
> session = knowledgeBase.newStatefulKnowledgeSession();
> // insert facts
> session.fireAllRules();
> session.dispose();  
>
> The above code works and I can get a unit test to work that processes rules
> accordingly. I can see my dslr converting to a drl using the "drl viewer"
> correctly (provided I temporarily place the dsl file in the same location
> since expander doesn't accept a relative path).
>
> The problem, however is when I use a change-set.xml and a KnowledgeAgent,
> things don't work
>
> code for loading via knowledgeAgent
>
> public static KnowledgeBase loadKnowledgeBase() throws
> DroolsParserException, IOException {
>     agent = KnowledgeAgentFactory.newKnowledgeAgent("msll agent");
>    
> agent.applyChangeSet(ResourceFactory.newClassPathResource("change-set.xml"));
>
>     return agent.getKnowledgeBase();
> }  
>
>
> <change-set xmlns='http://drools.org/drools-5.0/change-set'
>              xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
>              xs:schemaLocation='http://drools.org/drools-5.0/change-set.xsd'
> >
>    <add>
>        <resource source='classpath:dsl/' type='DSL' />  
>        <resource source='classpath:rules/' type='DSLR' />    
>        <resource source='classpath:rules/section-A/' type='DSLR' />
>     </add>
> </change-set>
>
>
> I get the following generic drools errors:
> ERR 103] Line 4:0 rule 'rule_key' failed predicate:
> {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in rule[7,0]: [ERR 101]
> Line 7:0 no viable alternative at input 'import' in rule Con in rule
> attribute
> ...
> ...
>
> The rules are same, folder location is the same. I believe that drools has a
> problem resolving path (expander global.dsl) from the dslr file when using a
> KnowlegeAgent since in the earlier strategy, one could build a dsl into the
> knowledgeBuilder directly from the classpath.
>
> Pl suggest.
> --
> View this message in context:
http://n3.nabble.com/KnowledgeAgent-
> doesn-t-load-dsl-files-and-dslr-file-from-a-change-set-correctly-
> tp139702p139702.html
> Sent from the Drools - User mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users@lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users