Am 16.04.2011 um 22:05 schrieb rules-dev-requ...@lists.jboss.org: > Send rules-dev mailing list submissions to > rules-dev@lists.jboss.org > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.jboss.org/mailman/listinfo/rules-dev > or, via email, send a message with subject or body 'help' to > rules-dev-requ...@lists.jboss.org > > You can reach the person managing the list at > rules-dev-ow...@lists.jboss.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of rules-dev digest..." > > > Today's Topics: > > 1. Re: Prolog Style Backward Chaining - First Cut (Michael Anstis) > 2. Re: Prolog Style Backward Chaining - First Cut (Mauricio Salatino) > 3. Re: Classpath Resources and Classloaders using cache > (Pablo Nussembaum) > 4. Re: Classpath Resources and Classloaders using cache > (Mauricio Salatino) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sat, 16 Apr 2011 17:56:41 +0100 > From: Michael Anstis <michael.ans...@gmail.com> > Subject: Re: [rules-dev] Prolog Style Backward Chaining - First Cut > To: Rules Dev List <rules-dev@lists.jboss.org> > Message-ID: <banlktimmnceb3fj_8jylng+0_zkazt6...@mail.gmail.com> > Content-Type: text/plain; charset="iso-8859-1" > > Stilton good is favourite mine. > > The force is strong in this one. > > sent on the move > > On 16 Apr 2011 16:48, "Mark Proctor" <mproc...@codehaus.org> wrote: >> I have the basics to backward chaining working now, using both named and >> positional arguments and mix of both. Mixed positional/named syntax is >> based conceptually on the RuleML proposal for POSL: >> http://ruleml.org/submission/ruleml-shortation.html >> >> POSL provides a bridge between the positional terms, often used in >> Prolog, and "slotted" names used in OO languages. POSL allows the best >> of both worlds. >> >> I'm building out the tests, which should illustrate the behaviour and >> syntax here: >> > https://github.com/droolsjbpm/drools/tree/master/drools-compiler/src/test/java/org/drools/integrationtests/BackwardChainingTest.java >> >> Still lots to do to improve the over all syntax and consistency across >> patterns. The last test is a geneology style test which is probably more >> intesting to people. There is still an issue here when using eval. I >> currently use "new Variable" to indicate an unbound unification >> variable, the problem is that evals and other things generate code >> expecting the original object type, say "String" and this results a cast >> error (see sibling rule). I want to avoid an explicit instanceof check >> for unwrapping and will be working on that over the weekend. >> >> There is enough there now to give people an idea of what it looks like. >> I'll try and put together a "roadmap" for BC, along with more details of >> the syntax next week once it all comes together. >> >> If anyone wants to help on this, you know where to fine me :) >> irc.codehaus.org #drools >> >> Mark >> >> _______________________________________________ >> rules-dev mailing list >> rules-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-dev > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > http://lists.jboss.org/pipermail/rules-dev/attachments/20110416/9f0d4c0b/attachment-0001.html > > > ------------------------------ > > Message: 2 > Date: Sat, 16 Apr 2011 15:40:03 -0300 > From: Mauricio Salatino <sala...@gmail.com> > Subject: Re: [rules-dev] Prolog Style Backward Chaining - First Cut > To: Rules Dev List <rules-dev@lists.jboss.org> > Message-ID: <BANLkTinV+Ys+WUQO1=DSyE0UiY+e=WJi=w...@mail.gmail.com> > Content-Type: text/plain; charset="iso-8859-1" > > I will take a look at the test and try to think about something to include > in the emergency service app. > If you think about an use for BC in my app I can easily add it beacuse I'm > using the snapshots. > During the week I will ping you if I have an idea. > Greetings. > > PS: michael I will ping you too to see if you can help me with some DTables > :) > > On Sat, Apr 16, 2011 at 1:56 PM, Michael Anstis > <michael.ans...@gmail.com>wrote: > >> Stilton good is favourite mine. >> >> The force is strong in this one. >> >> sent on the move >> >> On 16 Apr 2011 16:48, "Mark Proctor" <mproc...@codehaus.org> wrote: >>> I have the basics to backward chaining working now, using both named and >>> positional arguments and mix of both. Mixed positional/named syntax is >>> based conceptually on the RuleML proposal for POSL: >>> http://ruleml.org/submission/ruleml-shortation.html >>> >>> POSL provides a bridge between the positional terms, often used in >>> Prolog, and "slotted" names used in OO languages. POSL allows the best >>> of both worlds. >>> >>> I'm building out the tests, which should illustrate the behaviour and >>> syntax here: >>> >> https://github.com/droolsjbpm/drools/tree/master/drools-compiler/src/test/java/org/drools/integrationtests/BackwardChainingTest.java >>> >>> Still lots to do to improve the over all syntax and consistency across >>> patterns. The last test is a geneology style test which is probably more >>> intesting to people. There is still an issue here when using eval. I >>> currently use "new Variable" to indicate an unbound unification >>> variable, the problem is that evals and other things generate code >>> expecting the original object type, say "String" and this results a cast >>> error (see sibling rule). I want to avoid an explicit instanceof check >>> for unwrapping and will be working on that over the weekend. >>> >>> There is enough there now to give people an idea of what it looks like. >>> I'll try and put together a "roadmap" for BC, along with more details of >>> the syntax next week once it all comes together. >>> >>> If anyone wants to help on this, you know where to fine me :) >>> irc.codehaus.org #drools >>> >>> Mark >>> >>> _______________________________________________ >>> rules-dev mailing list >>> rules-dev@lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/rules-dev >> >> _______________________________________________ >> rules-dev mailing list >> rules-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-dev >> >> > > > -- > - CTO @ http://www.plugtree.com > - MyJourney @ http://salaboy.wordpress.com > - Co-Founder @ http://www.jbug.com.ar > > - Salatino "Salaboy" Mauricio - > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > http://lists.jboss.org/pipermail/rules-dev/attachments/20110416/11a0a611/attachment-0001.html > > > ------------------------------ > > Message: 3 > Date: Sat, 16 Apr 2011 16:24:52 -0300 > From: Pablo Nussembaum <bau...@gmail.com> > Subject: Re: [rules-dev] Classpath Resources and Classloaders using > cache > To: Rules Dev List <rules-dev@lists.jboss.org> > Message-ID: <4da9ed04.3080...@gmail.com> > Content-Type: text/plain; charset="iso-8859-1" > > Esteban, > You can assume that a resource that was obtained from the classpath exists in > your filesystem, for instance it can be a file inside a jar or war that are > not exploded. In other words you can't always > convert an URL to "file://". > > -- > Bauna > > On 04/15/2011 08:52 AM, Esteban Aliverti wrote: >> Hi Guys, >> >> I want to discuss a problem I have found when using the combination of >> knowledge agent + classpathResources. >> I will try to describe what am I doing first to give you some context. >> I'm deploying drools-camel-server in a Tomcat 7 container. Inside the >> WEB-INF/classes directory I have some DRL files that I want to use. >> My knowledge-services.xml file declares the following kagent: >> >> <drools:kagent id="kagent1" kbase="kbase1" new-instance="false"> >> <drools:resources> >> <drools:resource type="DRL" source="*classpath*:simple.drl"/> >> ... >> </drools:resources> >> </drools:kagent> >> >> When spring parses this configuration file it creates a KnowledgeAgent >> instance with a ChangeSet containing all the listed resources. >> The next step is to start ResourceChangeNotifierService and >> ResourceChangeScannerService. >> So far so good. >> >> The problem: >> The problem I'm having is not directly related to drools, but I think it is >> quite easy to provide a solution for the people that is in my same situation. >> >> ClassPathResource is the class that represents a resource defined as >> "*classpath:"* >> >> This class has 2 important methods: >> >> public long getLastModified(){ >> return this.classLoader.getResource( this.path >> ).openConnection().getLastModified(); >> } >> >> public InputStream getInputStream(){ >> return this.classLoader.getResourceAsStream( this.path ); >> } >> >> >> The first method is used by ResourceChangeScannerService to check whether >> the resource has changed or not. It works fine. When the resource in the >> filesystem changes, the scanner detects the change >> without any problem. >> The scanner ends up notifying the kagent about the change, and the kagent >> passes the Resource to an instance of KnowledgeBuilder. >> An here is when things fail. >> The kbuilder uses the second method of ClassPathResource (getInputStream()) >> to get the content of the resource. In the case of Tomcat (and probably some >> other environments), it seems that the >> classloader (Tomcat's classloader) is using a cache. So the InputStream >> returned doesn't reflect the current state of the resource. >> Long story short: the agent is notified about a change in the resource, but >> the change is never applied to the kbase because the kbuilder is unable to >> get it :P >> >> Solutions: >> The first solution is not to use classpath resources :). You can use just >> url resources like http:// or file:/. But honestly, when you have your rules >> inside your webapp, it is much >> more comfortable and even manageable to avoid the use of real paths. >> >> What I was thinking about (I already have a working prototype) is to create >> a new Resource type for these cases. This resource type will let you define >> your resources present in your classpath as >> usually but it will translate them to URL Resource internally. >> So, in the example above: >> >> <drools:resource type="DRL" source="*URLClasspath*:simple.drl"/> >> >> is going to be translated (internally and in a transparent way) to something >> like: file:/usr/local/apache-tomcat-7/webapps/MyWebapp/WEB-INF/simple.drl. >> >> Opinions? >> >> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX >> >> Esteban Aliverti >> - Developer @ http://www.plugtree.com <http://www.plugtree.com> >> - Blog @ http://ilesteban.wordpress.com >> >> >> _______________________________________________ >> rules-dev mailing list >> rules-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-dev > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > http://lists.jboss.org/pipermail/rules-dev/attachments/20110416/2cb7fc73/attachment-0001.html > > > ------------------------------ > > Message: 4 > Date: Sat, 16 Apr 2011 17:05:28 -0300 > From: Mauricio Salatino <sala...@gmail.com> > Subject: Re: [rules-dev] Classpath Resources and Classloaders using > cache > To: Rules Dev List <rules-dev@lists.jboss.org> > Message-ID: <BANLkTim99233G8=A8Ki=eydozgunhjs...@mail.gmail.com> > Content-Type: text/plain; charset="iso-8859-1" > > Can you? or Can't you? > > > On Sat, Apr 16, 2011 at 4:24 PM, Pablo Nussembaum <bau...@gmail.com> wrote: > >> Esteban, >> You can assume that a resource that was obtained from the classpath exists >> in your filesystem, for instance it can be a file inside a jar or war that >> are not exploded. In other words you can't always convert an URL to >> "file://". >> >> -- >> Bauna >> >> >> On 04/15/2011 08:52 AM, Esteban Aliverti wrote: >> >> Hi Guys, >> >> I want to discuss a problem I have found when using the combination of >> knowledge agent + classpathResources. >> I will try to describe what am I doing first to give you some context. >> I'm deploying drools-camel-server in a Tomcat 7 container. Inside the >> WEB-INF/classes directory I have some DRL files that I want to use. >> My knowledge-services.xml file declares the following kagent: >> >> <drools:kagent id="kagent1" kbase="kbase1" new-instance="false"> >> <drools:resources> >> <drools:resource type="DRL" source="*classpath*:simple.drl"/> >> ... >> </drools:resources> >> </drools:kagent> >> >> When spring parses this configuration file it creates a KnowledgeAgent >> instance with a ChangeSet containing all the listed resources. >> The next step is to start ResourceChangeNotifierService >> and ResourceChangeScannerService. >> So far so good. >> >> The problem: >> The problem I'm having is not directly related to drools, but I think it is >> quite easy to provide a solution for the people that is in my same >> situation. >> >> ClassPathResource is the class that represents a resource defined as "* >> classpath:"* >> >> This class has 2 important methods: >> >> public long getLastModified(){ >> return this.classLoader.getResource( this.path >> ).openConnection().getLastModified(); >> } >> >> public InputStream getInputStream(){ >> return this.classLoader.getResourceAsStream( this.path ); >> } >> >> >> The first method is used by ResourceChangeScannerService to check whether >> the resource has changed or not. It works fine. When the resource in the >> filesystem changes, the scanner detects the change without any problem. >> The scanner ends up notifying the kagent about the change, and the kagent >> passes the Resource to an instance of KnowledgeBuilder. >> An here is when things fail. >> The kbuilder uses the second method of ClassPathResource (getInputStream()) >> to get the content of the resource. In the case of Tomcat (and probably some >> other environments), it seems that the classloader (Tomcat's classloader) is >> using a cache. So the InputStream returned doesn't reflect the current state >> of the resource. >> Long story short: the agent is notified about a change in the resource, but >> the change is never applied to the kbase because the kbuilder is unable to >> get it :P >> >> Solutions: >> The first solution is not to use classpath resources :). You can use just >> url resources like http:// or file:/. But honestly, when you have your >> rules inside your webapp, it is much more comfortable and even manageable to >> avoid the use of real paths. >> >> What I was thinking about (I already have a working prototype) is to >> create a new Resource type for these cases. This resource type will let you >> define your resources present in your classpath as usually but it will >> translate them to URL Resource internally. >> So, in the example above: >> >> <drools:resource type="DRL" source="*URLClasspath*:simple.drl"/> >> >> is going to be translated (internally and in a transparent way) to >> something like: >> file:/usr/local/apache-tomcat-7/webapps/MyWebapp/WEB-INF/simple.drl. >> >> Opinions? >> >> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX >> >> Esteban Aliverti >> - Developer @ http://www.plugtree.com >> - Blog @ http://ilesteban.wordpress.com >> >> >> _______________________________________________ >> rules-dev mailing list >> rules-dev@lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-dev >> >> >> _______________________________________________ >> rules-dev mailing list >> rules-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-dev >> >> > > > -- > - CTO @ http://www.plugtree.com > - MyJourney @ http://salaboy.wordpress.com > - Co-Founder @ http://www.jbug.com.ar > > - Salatino "Salaboy" Mauricio - > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > http://lists.jboss.org/pipermail/rules-dev/attachments/20110416/ca5e7889/attachment.html > > > ------------------------------ > > _______________________________________________ > rules-dev mailing list > rules-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-dev > > > End of rules-dev Digest, Vol 52, Issue 25 > ***************************************** >
Dr. Gernot Starke --- Willi-Lauf Allee 43, D-50858 Köln g...@gernotstarke.de, +49 177 - 728 2570 http://www.gernotstarke.de E-POSTBRIEF: gernot.sta...@epost.de _______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev