[rules-users] Multipattern collect
Is a multipattern collect supported? I have a rule which finds all 2 topics and all the students they share if there is at least 1 such student: rule calculateTopicConflict when $leftTopic : Topic($id : id); $rightTopic : Topic(id $id); $studentSet : HashSet( size 0 ) from collect( $student : Student(), $leftTopic.studentList contains $student, $rightTopic.studentList contains $student ); then insertLogical(new TopicConflict($leftTopic , $rightTopic , $studentSet)); end This won't compile: Caused by: org.drools.rule.InvalidRulePackage: [29,36]: unknown:29:36 mismatched token: [EMAIL PROTECTED],1504:1504=',',11,29:36]; expecting type RIGHT_PAREN[30,39]: unknown:30:39 mismatched token: [EMAIL PROTECTED],1545:1552='contains',49,30:39]; expecting type LEFT_PAREN[30,48]: unknown:30:48 Unexpected token '$student' at org.drools.rule.Package.checkValidity(Package.java:424) Is a multipattern collect supported? Thanks for your help :) -- With kind regards, Geoffrey De Smet ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How and when are objects released in Stateless Session
Arjun Dhar wrote: Hi, can someone please explain; if a stateless session is used over a log period of time. How are the objects (rather the shadows to them) released? You cannot insert data over time into a stateless session, all data is added at the same time. When the engine has finished processing it w ill return and is finished, at this point as soon as the stateless session is available for garbage collection the objects will be removed. There is no life cycle other than the standard GC one. I understand that as long as a class is not final, its shadow is created and used. This raises a concern about the life cycle of that object. Shadows are created on non-final classes unless you tell the system not to, if you are sure you don't need them you can turn them off. They can be turned of for all object, or specific objectsor packages. perhaps the cause of memory leaks in the past. no. Wanted to nkow the life cycle in breif. Thanks ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Remotely debugging application server code
Marcus Ilgner wrote: Hi list, I'm experiencing problems when remotely debugging my JBoss-Rules-using application running on an application server. The application server is JBoss 4.2.1.GA and I connect to it via Eclipse. My JBoss Rules version is 4.0.3. As soon as I start inserting facts, the application seems to hang. The debugger reports the status Running on all threads, however the application does not seem to reach the next statement (which is a logging statement). When I disconnect the debugger, the execution resumes and everything works fine. The displayed callstack when suspending the execution claims that the execution has reached the next breakpoint, however I'm in doubt that this is true and there's no way for me to resume the execution. Maybe some of you have experienced something similar. I had no problems at all debugging the code that does all the work before the fact insertion. Only after starting to insert facts the debugging goes awry. We've never tested this, so if it continues to not work, please open a JIRA and we'll look into it. If it is a bug, it sounds like its goign to be hard to fix, so unless someone from the community figures it out, could be a while before this is fixed. Best regards Marcus ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Multipattern collect
Geoffrey De Smet wrote: Is a multipattern collect supported? no. I have a rule which finds all 2 topics and all the students they share if there is at least 1 such student: rule calculateTopicConflict when $leftTopic : Topic($id : id); $rightTopic : Topic(id $id); $studentSet : HashSet( size 0 ) from collect( $student : Student(), $leftTopic.studentList contains $student, $rightTopic.studentList contains $student ); then insertLogical(new TopicConflict($leftTopic , $rightTopic , $studentSet)); end This won't compile: Caused by: org.drools.rule.InvalidRulePackage: [29,36]: unknown:29:36 mismatched token: [EMAIL PROTECTED],1504:1504=',',11,29:36]; expecting type RIGHT_PAREN[30,39]: unknown:30:39 mismatched token: [EMAIL PROTECTED],1545:1552='contains',49,30:39]; expecting type LEFT_PAREN[30,48]: unknown:30:48 Unexpected token '$student' at org.drools.rule.Package.checkValidity(Package.java:424) Is a multipattern collect supported? Thanks for your help :) ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] rule name specification
Barfield Steve wrote: Is there a specification for rule name ie length + characters it can contain. I have searched the documentation but maybe I missed it. If you put quotes, its just a string, so no limitations. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] using primitive datatypes?
Fabian Weisensee wrote: Hello everyone just one quick question: I tried to invoke a rule from inside of jBPM. This works now, but I have a major problem. The rule is quite simple and should only check if an integer from the jBPM process is greater than a limit. I insert this integer into the workingmemory, but as I understand it, drools only works with objects. I tried Integer(intValue = limit) on the LHS but that only let my process hang at the drools-decision. This should work, why don't you make a self contained example outside of jBPM to make sure your logic is working. Is this possible at all? Or do I have to wrap this integer into an object? -- Fabian PS: the whole rule looks like this: rule Rechnung pruefen when r1 :Integer(intValue = 500) ci : ContextInstance (id = 0) then ci.setVariable(mussPruefen, true); System.out.println(Rechnung muss geprueft werden); end ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] RE: rules-users Digest, Vol 11, Issue 27
Sikkandar Nawabjan wrote: Hi, What is the Role of dslr in development and deployment perspective. i don't see anything about dslr in this manual. please send some link where i can learn about this Thanks and Regs, basha A dslr is the extension name used for the file, so that IDE can know its a DSL based package and display different tabs. From: [EMAIL PROTECTED] on behalf of [EMAIL PROTECTED] Sent: Thu 10/4/2007 5:31 AM To: rules-users@lists.jboss.org Subject: rules-users Digest, Vol 11, Issue 27 Send rules-users mailing list submissions to rules-users@lists.jboss.org To subscribe or unsubscribe via the World Wide Web, visit https://lists.jboss.org/mailman/listinfo/rules-users or, via email, send a message with subject or body 'help' to [EMAIL PROTECTED] You can reach the person managing the list at [EMAIL PROTECTED] When replying, please edit your Subject line so it is more specific than Re: Contents of rules-users digest... Today's Topics: 1. RE: rules precompilation (ekke) 2. Re: How to have your emails ignored (Scott Reed) 3. Drools web project in eclipse - Drools Library issue (Malika) 4. Re: rules precompilation (Scott Reed) 5. Re: custom defined types in setter and getters (Steven Williams) 6. Re: Drools web project in eclipse - Drools Library issue (Steven Williams) 7. Re: Drools web project in eclipse - Drools Library issue (Fernando Meyer) -- Message: 1 Date: Wed, 3 Oct 2007 13:07:57 -0700 (PDT) From: ekke [EMAIL PROTECTED] Subject: [rules-users] RE: rules precompilation To: rules-users@lists.jboss.org Message-ID: [EMAIL PROTECTED] Content-Type: text/plain; charset=us-ascii sergey, just tried it: exported a package with rules as stream (using the writeExternal() from Package) then in another run I created new RuleBase, added new Package, then import the rules into this empty Package (using the readExternal() from Package) then added some facts, execute the rules, tested if all rules are there, tested if the Facts are in workingMemory - all ok (using snapshot 4.0.2, eclipse 3.3, osx 10.4.10) ekke Manukyan, Sergey wrote: Ming, Ekke, After deserialising the Package back - getting exception when inserting facts: Exception thrown : java.lang.NoClassDefFoundError: XXXShadowProxy XXX - is my class name Any ideas? -Sergey -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jin, Ming Sent: Wednesday, October 03, 2007 1:50 PM To: Rules Users List Subject: RE: [rules-users] rules precompilation Sergey, I am using precompiled rules. Serializing instances of org.drools.rule.Package works for me. Thanks, -Ming -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Manukyan, Sergey Sent: Wednesday, October 03, 2007 12:29 PM To: Rules Users List Subject: [rules-users] rules precompilation Folks, Where can I find information on how to pre-compile rules in 4.0.1? Thanks, -Sergey ** ** LEGAL DISCLAIMER ** ** This E-mail message and any attachments may contain legally privileged, confidential or proprietary information. If you are not the intended recipient(s), or the employee or agent responsible for delivery of this message to the intended recipient(s), you are hereby notified that any dissemination, distribution or copying of this E-mail message is strictly prohibited. If you have received this message in error, please immediately notify the sender and delete this E-mail message from your computer. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- View this message in context: http://www.nabble.com/How-to-have-your-emails-ignored-tf4562290.html#a13026864 Sent from the drools - user mailing list archive at Nabble.com. -- Message: 2 Date: Wed, 03 Oct 2007 17:42:51 -0400 From: Scott Reed [EMAIL PROTECTED] Subject: Re: [rules-users] How to have your emails ignored To: Rules Users List rules-users@lists.jboss.org Message-ID: [EMAIL PROTECTED] Content-Type: text/plain; charset=ISO-8859-1; format=flowed Mark Proctor's message received 10/3/2007 12:28 PM: Scott Reed wrote: Please tell me how I can call a function on the LHS. (hurry my assignment is due today!) Is that not covered by #2, it's more of an example for #2? Actually I thought I was being funny about #11 and threw in the bit about getting my homework done
Re: [rules-users] drools compiler error
You have not set your PackageBuilderConfiguration correctly before creating your PackageBuilder. Mark prashant sharma wrote: Hi, I am using drools version 3.2 with JANINO compiler. I have an application that processes about 30k rules. Most of the time it works fine but sometime (1 in 20), I get this error. 2007-11-10 02:15:20,658 ERROR [STDERR] java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/CategorizedProblem; 2007-11-10 02:15:20,658 ERROR [STDERR] at org.apache.commons.jci.compilers.EclipseJavaCompiler$2.acceptResult(EclipseJavaCompiler.java:237) 2007-11-10 02:15:20,658 ERROR [STDERR] at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:335) 2007-11-10 02:15:20,658 ERROR [STDERR] at org.apache.commons.jci.compilers.EclipseJavaCompiler.compile(EclipseJavaCompiler.java:268) 2007-11-10 02:15:20,658 ERROR [STDERR] at org.drools.compiler.PackageBuilder.compileAll(Unknown Source) 2007-11-10 02:15:20,658 ERROR [STDERR] at org.drools.compiler.PackageBuilder.addPackage(Unknown Source) 2007-11-10 02:15:20,658 ERROR [STDERR] at org.drools.compiler.PackageBuilder.addPackageFromDrl(Unknown Source) thanks, Prashant ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] howto BRMS - already stuck at fact model loading
Darren Hartford wrote: Hey all, new to BRMS as trying to learn how this works. My usecase is to take an existing, working EJB3 application and migrate some of the complex rules over to be managed by BRMS. However, initial attempts over the course of a couple of days have yielded zero results. When trying to follow http://downloads.jboss.com/drools/docs/4.0.3.15993.GA/html_single/index.html#d0e5301, they want you to load a fact model. I take an existing EJB3 entity bean and it loads fine. There doesn't seem anything more for me to do, or to verify this is o.k. or not. So, then I move to the rule editors, and nothing works -- not able to use the guided editor at all, and using the DSL text editor with the 'model/entity' from the jar isn't recognized. Add the imports for the classes you wish to use to the package header information. Now, I admit ignorance, and I would like some direction as to how to best learn to use BRMS. There were a couple mentions of a drools-examples-brms, but it just can not be found. Following the documentation mentioned above is only guidelines without any good examples leaving one easily lost. http://www.google.com/search?q=drools-example-brms http://www.nabble.com/forum/Search.jtp?query=jbrms+examplelocal=yforum=11822daterange=0startdate=enddate= http://labs.jboss.com/drools/downloads.html http://labs.jboss.com/drools/livetrails/index.html So -- where can one go to learn how to use BRMS to help convert an existing EJB3 application to use Drools and BRMS? Thanky, -D ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Is InternalRuleBase safe to use?
If it safe to use in that it works now, but its an internal api so could change at any time - so we don't recommend you using it. The correct place to set the ConsequenceExceptionHandler is via the RuleBaseConfiguration, which allows you to overide it there. Mark Jared Davis wrote: Hi, re:Drools 4.0.3 I want/need to use ConsequenceExceptionHandler for exception handling. I'd like to be able to get the ConsequenceExceptionHandler from a StatefulSession. The only way I see to get the handler relies on InternalRuleBase. The JavaDoc at http://downloads.jboss.com/drools/docs/_ 4.0.3.15993.GA/apidocs/org/drools/common/InternalRuleBase.html does not have any annotation that it is internal use only. However the naming convention sure makes me this this is a bad idea. Any alternatives to the following code to retrieve the ConsequenceExceptionHandler? InternalRuleBase thisSmellsLikeABadIdea= (InternalRuleBase) wm.getRuleBase(); DroolsExceptionHandler deh = (DroolsExceptionHandler) thisSmellsLikeABadIdea.getConfiguration().getConsequenceExceptionHandler(); ListException exceptions = deh.getExceptions(); (Where DroolsExceptionHandler is package droolsconfig; import java.util.ArrayList; import java.util.List; import org.drools.WorkingMemory; import org.drools.spi.Activation; import org.drools.spi.ConsequenceExceptionHandler; public class DroolsExceptionHandler implements ConsequenceExceptionHandler { ListException exceptions = new ArrayListException(); public DroolsExceptionHandler() { } public void handleException(Activation activation, WorkingMemory workingMemory, Exception exception) { exceptions.add(exception); } public ListException getExceptions() { return exceptions; } } ) ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Using param of innerclass in LHS condition
if you look over the examples download many of them use static nested classes - checkout HelloWorldExample. Mark Martin Book wrote: Hello, the class ContactQueueDetail contains class ContactCallDetailId. ContactQueueDetail cqd I have asserted cqd to the WorkingMemory. It contains ContactCallDetailId id; On the LHS I need the Timestamp t=id.getStartDateTime(); I have not found the correct Syntax for this, yet. My rule looks like this: *rule* ContactQueueDetail *when* $cqd:ContactQueueDetail($disp:disposition==1,$id:id.startDateTime) $h: CallsPerHour(hour==$id.getHour()) *then* .. *end* kind regards Martin ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Multipattern collect
Geoffrey, What you want is simply to constrain the inner pattern: rule calculateTopicConflict when $leftTopic : Topic($id : id); $rightTopic : Topic(id $id); $studentSet : HashSet( size 0 ) from collect( $student : Student( this memberOf $leftTopic.studentList, this memberOf $rightTopic.studentList ) ); then insertLogical(new TopicConflict($leftTopic , $rightTopic , $studentSet)); end []s Edson 2007/11/17, Geoffrey De Smet [EMAIL PROTECTED]: Is a multipattern collect supported? I have a rule which finds all 2 topics and all the students they share if there is at least 1 such student: rule calculateTopicConflict when $leftTopic : Topic($id : id); $rightTopic : Topic(id $id); $studentSet : HashSet( size 0 ) from collect( $student : Student(), $leftTopic.studentList contains $student, $rightTopic.studentList contains $student ); then insertLogical(new TopicConflict($leftTopic , $rightTopic , $studentSet)); end This won't compile: Caused by: org.drools.rule.InvalidRulePackage: [29,36]: unknown:29:36 mismatched token: [EMAIL PROTECTED],1504:1504=',',11,29:36]; expecting type RIGHT_PAREN[30,39]: unknown:30:39 mismatched token: [EMAIL PROTECTED],1545:1552='contains',49,30:39]; expecting type LEFT_PAREN[30,48]: unknown:30:48 Unexpected token '$student' at org.drools.rule.Package.checkValidity(Package.java:424) Is a multipattern collect supported? Thanks for your help :) -- With kind regards, Geoffrey De Smet ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Edson Tirelli Software Engineer - JBoss Rules Core Developer Office: +55 11 3529-6000 Mobile: +55 11 9287-5646 JBoss, a division of Red Hat @ www.jboss.com ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Using multiple RuleFlows with similar group names
There is a loose coupling from the ruleflow-group defined in the drl and the one in the ruleflow. So no matter how many rules you add, and how they are added, there will only be one ruleflow-group Group A. You can deploy two ruleflows, both that use that group. The process that enters that group first will then be in charge of executing the rules - you should make sure there is no overlap in execution, I'm not sure what hte behaviour would be then; i.e. the second ruleflow attempts to activate the same group that the first ruleflow is already executing. Mark james_d wrote: Hi, I've built a RuleBase comprised of 2 ruleflows and their respective rules. Each ruleflow is defined in a separate package however both use a common set of ruleflow-group names. It looks something like this: Ruleflows: Flow 1, Flow 2 Flow 1 package: com.test.flow1 Flow 1 ruleflow groups: Group A, Group B, Group C Flow 2 package: com.test.flow2 Flow 2 ruleflow groups: Group A, Group B, Group C When I load both packages into a RuleBase and insert an Object, I see that rules in both Flow 1 and Flow 2 are executed, even though only ruleflow process Flow 1 was started. In short, it appears that Drools does not take a rule's package into consideration when executing a ruleflow. Is this expected behavior? My understanding was that the rules in Flow 2 should not be executed because they are in a different package. I welcome any input. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools and BRMS (60,000+ rules)
Carlsen, Len wrote: Hello, I am wondering if anyone has any experience in managing very large rule sets and facts and could share their experiences in the design and management of this. We are embarking on a new Student Information System project here at UBC in conjunction with several other American universities. We have pretty much decided to use Drools as our rules engine and maybe also the Drools BRMS for our business rules management. Our first application is the course curriculum application/module where we will manage course co-requisites, pre-requisites, etc. and we estimate that we will have about 20,000 course rules. We currently have about 15,000 course rules (QuickRules) in production now. We will also have security rules, input/form validation rules, student awards rules, degree rules, enrolment rules, admission rules, student financial rules etc. which will total about 40,000 rules. So currently we are looking at managing about 60,000 rules (not including versioning). If we include versioning then there would probably be more than 100,000 rules. We are using jackrabbit JCR, I think it can handle this, but I don't have any hard figures for the scalability. If it works for you, please do let us know :) Example: A single course could have 10 or more rules per course version. We currently have about 2000 course and most courses have more than 1 version. We are looking into developing our own rules management system to define dependencies between rules, courses (facts) and course + rule versions. E.g. Course CHEM101 version 1 links to CHEM101 a single rule or a rule set/package version 1 by a rule id. We need the ability to notify users when rules are modified which impacts other rules and what impact changing a rule can cause for example a degree program. E.g. changing a course's pre-requisite may affect other courses' pre-requisites; rules about rules. We also need the ability to find out why a student was not able to register for a course etc. We will also need to show the course dependency graph visually (the RDBMS can probably help us here). Later, we are hoping to use the Drools Solver for course and exam scheduling and also to use it for student degree planning and student awards. We don't currently have an exposed event model in the BRMS or change notification. However this would not be hard to add, maybe you could help us? We have drools-analytics which will create an api with the change impact requirements you need, it is not yet currently integrated into the BRMS, bit if you do the notificatino part it should be easy enough to add. We will need to translate the rules into English language syntax for publication in the course calendar and later into other languages (first French) since the SIS application will be used internationally. Listing requirements could just be shown in bulleted form. Probably can't use the DSL in this case since we would need to support several languages or maybe I am wrong here? DSL are just a templating language, if can be made to look english like - if that's what you need. You also have the docementation field in the BRMS, which you can use. If you have other ideas please spec them out in a JIRA and we'll look inoto doing them in the future, or maybe you can help us :) If we use the Drools BRMS to store all of our rules on a relational database, will we be able to write SQL queries to get at specific rules/packages to link facts (courses) to rules? Or do we have to go through the BRMS to get at the rules. Does BRMS have a facility to validate rules against facts so you can see if your rules execute correctly against your data/facts before committing your rules. Or maybe we need a testing framework for this. We use JackRabbit JCR, we provide high level apis to accessing data, but you an ofcourse ue the jackrabbit low level apsi - if you really know what you are doing. We have the ability to validate the compilation of the rules, scenario testing is currently being added and will be in the next release. Other issues are the performance of the Drools Solver and having thousands of rules compiled, loaded and running. During registration we could have thousands of rules executing concurrently. The rules engine and the BRMS would be services as part of an SOA infrastructure (and an OSGi service environment). Anyone got any experience with Drools in an OSGi environment with respect to class loading issues when compiling rules and facts from other bundles since rules and facts may be in different bundles? Bundle buddy class loading? No but it is something that interests us, please give us your OSGi feedback. Solver is not currently a supported product, its very much RD alphaware, but I'm sure geoffrey would love your feedback, good to see people are evaluating it. Later, we will need translators to/from other rule engines; maybe ruleML and
[rules-users] Re: How and when are objects released in Stateless Session
You cannot insert data over time into a stateless session, all data is added at the same time. When the engine has finished processing it w ill return and is finished, at this point as soon as the stateless session is available for garbage collection the objects will be removed. There is no life cycle other than the standard GC one. Shadows are created on non-final classes unless you tell the system not to, if you are sure you don't need them you can turn them off. They can be turned of for all object, or specific objectsor packages. no. Am sorry I got confused with the statement All data is added at the same time. When engine has finshed processing it will return finish -- Isn't this applicable for a single execute only? A fresh execute would imply a 'new usage' of the same session (Since it is stateless, else I could use new stateful sessions also each time I had to execute). And for this reason I cant understand why can't a stateless session be used indefinitely?! As each execute is stateless! So what you are saying is as long a stateless session is not garbage collected, it will retain references too all objects asserted to it (even over multiple execute calls)? i.e. session.execute(Object) A reference to that object or its shadow will be maintained till GC of the session?! ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users