[jboss-jira] [JBoss JIRA] Resolved: (JBRULES-2377) Problems with DSL / DSLR files when used with a KnowledgeAgent / Change Sets
Esteban Aliverti (JIRA)
jira-events at lists.jboss.org
Thu Jun 24 09:10:46 EDT 2010
[ https://jira.jboss.org/browse/JBRULES-2377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Esteban Aliverti resolved JBRULES-2377.
---------------------------------------
Resolution: Done
See JBRULES-2350.
Next time try to attach JUnit tests instead of java apps ;). The demo is running now, but I don know the desired behavior.
> Problems with DSL / DSLR files when used with a KnowledgeAgent / Change Sets
> ----------------------------------------------------------------------------
>
> Key: JBRULES-2377
> URL: https://jira.jboss.org/browse/JBRULES-2377
> Project: Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: drools-compiler, drools-compiler (expert), drools-compiler-DSL
> Affects Versions: 5.0.1.FINAL, 5.1.0.M1
> Environment: Windows XP, Mac OS X, JDK 1.5.0_12
> Reporter: Macon Pegram
> Assignee: Esteban Aliverti
> Attachments: dsl-demo-cleaner.zip, dsl-demo.zip
>
>
> I tried to address this on the Drools Mailing list but did not receive an answer. See:
> Mailing list message threads: "[rules-users] DSL, DSLR and Changesets...", "[rules-users] Can DSL / DSLR be loaded in a changeset?"
> ----
> Are DSL and DSLR files supported by the KnowledgeAgent / Changeset code. Here's the details of my test case:
>
> I have a Changeset file I'm trying to load which looks like the following:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <change-set xmlns='http://drools.org/drools-5.0/change-set'
> xmlns:xs='http://www.w3.org/2001/XMLSchema-instance' >
> <add>
> <resource source="classpath:com/test/general/" type="DSL" />
> <resource source="classpath:com/test/general/" type="DSLR" />
> </add>
> </change-set>
>
> There's a single DSL and a single DSLR file in this folder. I'm loading the change set as follows:
>
> KnowledgeAgent ka = KnowledgeAgentFactory.newKnowledgeAgent(agentName);
> ka.applyChangeSet(ResourceFactory.newClassPathResource(agentName + "-changeset.xml", getClass()));
>
> When I run this code, the logger suggests the DSL and DSLR are being loaded and compiled:
>
> [2009:10:299 16:10:52:info] KnowledgAgent created, with configuration:
> monitorChangeSetEvents=true scanResources=true scanDirectories=true
> ++ Constructing and applying changeSet: dsl-test
> [2009:10:299 16:10:52:info] KnowledegAgent has started listening for ChangeSet notifications
> (null: 3, 68): cvc-elt.1: Cannot find the declaration of element 'change-set'.
> [2009:10:299 16:10:317:info] KnowledgAgent applying ChangeSet
> [2009:10:299 16:10:317:debug] KnowledgeAgent subscribing to directory=[ClassPathResource path='com/test/general/']
> [2009:10:299 16:10:317:debug] ResourceChangeNotification subscribing listener=org.drools.agent.impl.KnowledgeAgentImpl at b9b618 to resource=[ClassPathResource path='com/test/general/']
> [2009:10:299 16:10:317:debug] ResourceChangeScanner subcribing notifier=org.drools.io.impl.ResourceChangeNotifierImpl at 61ec49 to resource=[ClassPathResource path='com/test/general/']
> [2009:10:299 16:10:317:debug] KnowledgeAgent subscribing to directory content resource=[FileResource file='C:\bea\user_projects\workspaces\alerts\rules-kb\test-kb\target\test-classes\com\test\general\test.dsl']
> [2009:10:299 16:10:317:debug] ResourceChangeNotification subscribing listener=org.drools.agent.impl.KnowledgeAgentImpl at b9b618 to resource=[FileResource file='C:\bea\user_projects\workspaces\alerts\rules-kb\test-kb\target\test-classes\com\test\general\test.dsl']
> [2009:10:299 16:10:317:debug] ResourceChangeScanner subcribing notifier=org.drools.io.impl.ResourceChangeNotifierImpl at 61ec49 to resource=[FileResource file='C:\bea\user_projects\workspaces\alerts\rules-kb\test-kb\target\test-classes\com\test\general\test.dsl']
> [2009:10:299 16:10:317:debug] KnowledgeAgent subscribing to directory content resource=[FileResource file='C:\bea\user_projects\workspaces\alerts\rules-kb\test-kb\target\test-classes\com\test\general\test-dsl.dslr']
> [2009:10:299 16:10:317:debug] ResourceChangeNotification subscribing listener=org.drools.agent.impl.KnowledgeAgentImpl at b9b618 to resource=[FileResource file='C:\bea\user_projects\workspaces\alerts\rules-kb\test-kb\target\test-classes\com\test\general\test-dsl.dslr']
> [2009:10:299 16:10:317:debug] ResourceChangeScanner subcribing notifier=org.drools.io.impl.ResourceChangeNotifierImpl at 61ec49 to resource=[FileResource file='C:\bea\user_projects\workspaces\alerts\rules-kb\test-kb\target\test-classes\com\test\general\test-dsl.dslr']
> [2009:10:299 16:10:317:debug] KnowledgeAgent subscribing to directory=[ClassPathResource path='com/hmc/test/general/']
> [2009:10:299 16:10:317:debug] ResourceChangeNotification subscribing listener=org.drools.agent.impl.KnowledgeAgentImpl at b9b618 to resource=[ClassPathResource path='com/hmc/test/general/']
> [2009:10:299 16:10:317:debug] KnowledgeAgent ChangeSet requires KnowledgeBuilder
> [2009:10:299 16:10:317:debug] KnowledgeAgent rebuilding KnowledgeBase using ChangeSet
> [2009:10:299 16:10:317:debug] KnowledgeAgent building resource=[FileResource file='C:\bea\user_projects\workspaces\alerts\rules-kb\test-kb\target\test-classes\com\test\general\test.dsl']
> [2009:10:299 16:10:333:debug] KnowledgeAgent building resource=[FileResource file='C:\bea\user_projects\workspaces\alerts\rules-kb\test-kb\target\test-classes\com\test\general\test-dsl.dslr']
> [2009:10:299 16:10:333:info] KnowledgeAgent new KnowledgeBase now built and in use
>
> However after load is completed I try to run the following code:
>
> System.out.println("KB Info");
> Collection<KnowledgePackage> pkgs = ka.getKnowledgeBase().getKnowledgePackages();
> for (KnowledgePackage kp : pkgs) {
> for (Rule rule : kp.getRules()) {
> System.out.println("Rule: " + rule.getName() + ", " + ule.getPackageName());
> for (String attribs : rule.listMetaAttributes())
> System.out.println("---- " + attribs);
> }
> }
> }
>
> I get NO output (except of course "KB Info").
>
> If I initialize the knowledgebase like this:
>
> KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
> .newKnowledgeBuilder();
> kbuilder.add(ResourceFactory
> .newClassPathResource("com/test/general/test.dsl"),
> ResourceType.DSL);
>
> kbuilder.add(ResourceFactory
> .newClassPathResource("com/test/general/test-dsl.dslr"),
> ResourceType.DSLR);
>
> if (kbuilder.hasErrors()) {
> throw new Exception(kbuilder.getErrors().toString());
> }
>
> KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
> kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
> }
>
> ... and run the same output code I get a list of the rules that were loaded.
>
> Any clues why the different behavior?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list