[rules-users] How to use KnowledgeAgent in the "old manner" (just like RuleAgent)
Mark Proctor
mproctor at codehaus.org
Tue Dec 16 08:34:50 EST 2008
Paul Sentosa wrote:
> Hi Mark,
>
> sorry, I am still a bit confused..so if you said it works exactly the
> same way as the old rule agent,
> that means, the URL I should use in change-set for getting the rules
> from Guvnor is the one displayed in Package Snapshot (the binary
> package) like (from the advertising example):
> <change-set>
> <add>
> <resource
> source='http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/Sensis/advertising'
> <http://www.domain.com/test.drl%27> type='??(which type)??' />
>
> OR
guvnor snapshots are binary packages, thus PKG
>
>
> <resource
> source='http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/Sensis/LATEST.drl'
> type='DRL' />
> </add>
> </change-set>
>
> and getting the session as follows:
>
> private final String CHANGE_SET = "/changeset.xml";
>
> ResourceChangeScannerConfiguration sconf =
> ResourceFactory.getResourceChangeScannerService()
> .newResourceChangeScannerConfiguration();
>
> sconf.setProperty("drools.resource.scanner.interval", "30");
>
> ResourceFactory.getResourceChangeScannerService().configure(sconf);
>
> this.kbase = KnowledgeBaseFactory.newKnowledgeBase();
>
> KnowledgeAgentConfiguration aconf =
> KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
>
> aconf.setProperty("drools.agent.scanDirectories", "true");
>
> aconf.setProperty("drools.agent.newInstance", "true");
>
> KnowledgeAgent kagent =
> KnowledgeAgentFactory.newKnowledgeAgent("kagent",
> this.kbase, aconf);
>
> kagent.applyChangeSet(ResourceFactory.newFileResource(this.CHANGE_SET));
>
> session = kagent.getKnowledgeBase().newStatelessKnowledgeSession();
>
>
> Thanks
> Paul
>
>
> ------------------------------------------------------------------------
> *From:* Mark Proctor <mproctor at codehaus.org>
> *To:* Rules Users List <rules-users at lists.jboss.org>
> *Sent:* Tuesday, December 16, 2008 11:05:30 AM
> *Subject:* Re: [rules-users] How to use KnowledgeAgent in the "old
> manner" (just like RuleAgent)
>
> Mark Proctor wrote:
>> Paul Sentosa wrote:
>>> Hi,
>>>
>>> Mark, thanks for the links and explanation.
>>> So if I use Guvnor for administrating my rules,
>>> - should I use the URL pointing to LATEST.DRL in change-set instead
>>> of the one in package snapshot to get the latest version of rules?
>>>
>>> - I assume the communication between my application and the Guvnor
>>> will happen by the time applyChangeSet-method (which defines a
>>> resource by pointing to the URL of DRL) is called and internally
>>> create package out of it (compared to the method
>>> newRuleAgent("properties"). Is this correct? Is there any significat
>>> difference in required time/performance?
>> I added file scanning, I haven't yet added http scanning, I'll do
>> that this week. the file and http scanning, work in the same manner
>> as they do for the original rule agent. If you look at the file
>> scanner now, you can see how to implement your own if you really need
>> to. The framework is now designed that people can built their own
>> resource monitors, so they can implement their own push based
>> implementations.
> Sorry I had a mind blank, and I'm talking complete bollocks. http does
> work. The ResourceChangeScannerImpl is independant of the resource
> type, as long as the resource type implements getLastModified() and
> getLastRead() it will work, which the http one does. So in theory
> whether file or http resources, it should work the same way as the old
> rule agent. The only difference is the configuration is now in a
> different location, if you need to change the interval. You now no
> longer change the interval on the individual rule agent, but on the
> service.
> Properties props = new Properties();
> props.setProperty("drools.resource.scanner.interval", "30");
> ResourceChangeScanner service =
> ResourceFactory.getResourceChangeScannerService();
> ResourceChangeScannerConfiguration rconf =
> service.newResourceChangeScannerConfiguration(props);
> service.configure( rconf );
>
> Mark
>>
>> Mark
>>>
>>> Again, thanks and appreciate your answer
>>>
>>> Regards
>>> Paul
>>>
>>>
>>> ------------------------------------------------------------------------
>>> *From:* Mark Proctor <mproctor at codehaus.org>
>>> *To:* Rules Users List <rules-users at lists.jboss.org>
>>> *Sent:* Tuesday, December 16, 2008 9:22:22 AM
>>> *Subject:* Re: [rules-users] How to use KnowledgeAgent in the "old
>>> manner" (just like RuleAgent)
>>>
>>> psentosa wrote:
>>> > Hi all,
>>> >
>>> > Can anyone give some explanation / examples on this? The docu is
>>> still using
>>> > ruleagent.
>>> > I found some piece of codes within the KnowledgeAgentFactory, but
>>> I saw that
>>> > it uses the configuration object.
>>> The javadocs:
>>> https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/javadocs/stable/drools-api/org/drools/agent/KnowledgeAgent.html
>>> https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/javadocs/stable/drools-api/org/drools/ChangeSet.html
>>>
>>> There are a number of unit tests you can follow:
>>> http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentTest.java
>>>
>>> http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/changeset/ChangeSetTest.java
>>>
>>> http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/ChangeSetTest.java
>>> http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/
>>> > I personally prefer the old style by using
>>> > a property file in which the configuration is defined.
>>> >
>>> The properties file does not offer enough flexibilility to support
>>> all resource types - the xml really is quite simple - how do you
>>> specify the worksheet name for a decision tree? In some ways it's
>>> actually simpler and more powerful, as there is no separate line for
>>> directories, it's just another resource and it detects that it's a
>>> directory. ChangeSets will eventually support remove and modify, for
>>> incremental knowledgebase changes, so the properties file just
>>> doesn't cut it.
>>>
>>> <change-set>
>>> <add>
>>> <resource source='http://www.domain.com/test.drl'
>>> <http://www.domain.com/test.drl%27> type='DRL' />
>>> <resource source='file://data/somedir' type='DRL' />
>>> <resource source='http://www.domain.com/test.xls'
>>> <http://www.domain.com/test.xls%27> type='DTABLE' >
>>> <decisiontable-conf worksheet-name='sheet10' input-type='XLS' />
>>> </resource>
>>> </add> </change-set>
>>>
>>>
>>> Mark
>>>
>>>
>>> > Thanks in advance for any help
>>> >
>>> > Regards
>>> > Paul
>>> >
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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/20081216/da529f62/attachment.html
More information about the rules-users
mailing list