[rules-users] Help write rule drools
My structure is composed of 2 classes (Node, Link) class Node { List Link out; List Link in; } class Link { Source node; Target node; } they are inserted as facts in working memory. I have to write a rule that will unite for each node joins the links that have the same destination, and if there is then the inverse must also join the latter. eg. A - link1 - B A - link2 - B A - link3 - C C - link4 - D B - link5 - A result A - link1 + link2 +link5 - B A - link3 - C C - link4 - D Can anyone help me? -- View this message in context: http://drools.46999.n3.nabble.com/Help-write-rule-drools-tp4029841.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help write rule drools
How do you want the result? Printed lines on standard output? One for each pair of connected nodes, as you have shown it below result? Or collected in another fact? -W On 4 June 2014 10:09, nill nill...@hotmail.com wrote: My structure is composed of 2 classes (Node, Link) class Node { List Link out; List Link in; } class Link { Source node; Target node; } they are inserted as facts in working memory. I have to write a rule that will unite for each node joins the links that have the same destination, and if there is then the inverse must also join the latter. eg. A - link1 - B A - link2 - B A - link3 - C C - link4 - D B - link5 - A result A - link1 + link2 +link5 - B A - link3 - C C - link4 - D Can anyone help me? -- View this message in context: http://drools.46999.n3.nabble.com/Help-write-rule-drools-tp4029841.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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] Help write rule drools
One for each pair of connected nodes. -- View this message in context: http://drools.46999.n3.nabble.com/Help-write-rule-drools-tp4029841p4029848.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help write rule drools
On 04/06/2014, nill nill...@hotmail.com wrote: One for each pair of connected nodes. One what? Where? With what content? -W -- View this message in context: http://drools.46999.n3.nabble.com/Help-write-rule-drools-tp4029841p4029848.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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] Help write rule drools
I try to explain. I have a graph where each node can have only one connection to the other. If I check the presence of n links between two nodes then delete n-1 connections. -- View this message in context: http://drools.46999.n3.nabble.com/Help-write-rule-drools-tp4029841p4029869.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help write rule drools
To remove all redundant Link objects and assuming that class Link is declared as class Link { Node source; Node target; } (and not as given in the original post), the rule: rule kill redundant links when $l1: Link( $s: source, $t: target ) $l2: Link( this != $l1, source == $s target == $t || source == $t target == $s ) $n1: Node( out contains $l2 ) $n2: Node( in contains $l2 ) then retract( $l2 ); modify( $n1 ){ getOut().remove( $l2 ) } modify( $n2 ){ getIn().remove( $l2 ) } end removes all redundant Link facts and updates the out and in fields of the Nodes at either end of these links. -W On 04/06/2014, nill nill...@hotmail.com wrote: I try to explain. I have a graph where each node can have only one connection to the other. If I check the presence of n links between two nodes then delete n-1 connections. -- View this message in context: http://drools.46999.n3.nabble.com/Help-write-rule-drools-tp4029841p4029869.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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] Help write rule drools
Thank you very much! -- View this message in context: http://drools.46999.n3.nabble.com/Help-write-rule-drools-tp4029841p4029873.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with event not found over window query
On 18 Feb 2014, at 18:38, laune [via Drools] wrote: [snip] I ran into trouble because my various rules (from my original email) wouldn't fire an alert as expected when I fed in simulated events. I'm curious as to why you think it's interesting that the four rules below fail to meet my expectation? I suppose it's the fact that I'm a drools newbie and the issue here is probably just my inexperience mapping business logic into drools rules. The word is illuminative rather than interesting. Take this one: $e1: Event($location: properties[location] ...) not Event(, this after $e1) The $e1 Event is here, Time is Now. It's most certainly true that nothing is here after Now! - And the next one: $e1: Event($location: properties[location] ...) not Event(, this after[0, 1m] $e1) Again, Event $e1 is here, Time is Now, and nothing is here after Now. The operator does not instruct the Engine to wait! Yes, I had imagined something like that was the case. My original reasoning was the following; At the moment when the $e1 event arrives, time is Now and it is true that there is no second event. However, there is no way for the engine to know at Time=Now whether or not the second event is going to arrive within the required time period (this after[0,1m] $e1) Surely, the engine needs to wait until (at least) Time=Now+1m before firing the rule, at least in the second case, because it is not possible to establish the truth or falsehood of the second criterion until 1m has past since the first event arrived because the second event might arrive, right? Well, that's what I thought at least! daveor -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-event-not-found-over-window-query-tp4028129p4028190.html Sent from the Drools: User forum mailing list archive at Nabble.com.___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with event not found over window query
Thanks for your email below. I needed to refactor my code somewhat to get this technique to work but it solved the problem that I had. I was previously using fireAllRules() but I refactored the code to use fireUntilHalt() instead, which required some additional work to make a couple of other supporting features behave properly. I know you don't strictly need to do this, but it needed to be done anyway and it made sense to do it now. I would have thought it was quite a common scenario where someone wanted to implement business logic such as: - Something happens - It is expected that something else will happen within a certain time period of the first thing happening - If the second thing doesn't happen within the time period, generate an alert I ran into trouble because my various rules (from my original email) wouldn't fire an alert as expected when I fed in simulated events. I'm curious as to why you think it's interesting that the four rules below fail to meet my expectation? I suppose it's the fact that I'm a drools newbie and the issue here is probably just my inexperience mapping business logic into drools rules. daveor On 15 Feb 2014, at 09:49, laune [via Drools] wrote: It would be interesting to discuss why each of these four rules fails to meet you expectation. Mostly it's due to the engine not evaluating exactly one minute after the certain event arrives. The following rule fires 1 minute after the evaluation of the arrival of an Event according to constraints and when no second Event (according to constraints not shown) has arrived since then. rule Something Else dialect mvel timer ( int: 1m ) when $e1: Event($location: properties[location] ...) not Event(..., this after $e1) then ... end -W On 14/02/2014, daveor [hidden email] wrote: Hi there, I'm a drools newbie and I wonder if someone could help me. I'm using drools 6.0.1 and I'm trying to write a rule that fires when: 1) a certain event is seen and 2) a second event is not seen within a certain period of time (1 minute in the examples below) after the first event is seen I have tried the following LHS patterns: rule Something dialect mvel when $e1: Event($location: properties[location] ...) not Event(, this after $e1) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) not Event(, this after[0, 1m] $e1) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) List (size == 0) from collect (Event(..., this after $e1) over window:time(1m)) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) List (size == 0) from collect (Event(...) over window:time(1m)) then //do stuff end The unwanted behaviours are as follows: In the first case, the rule fires immediately after the first event is inserted. In the second case, the rule fails to fire if the second event is seen (as expected) but the rule does not fire if the second event is not seen within 1 minute. In the third and fourth cases, the rule fires immediately after the first event is inserted. Event is a java class with a hash map of properties, defined with the following metadata: declare Event @role(event) end I would really appreciate if someone could help me out here. Thanks and let me know if you need any more info. Dave -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-event-not-found-over-window-query-tp4028129.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users If you reply to this email, your message will be added to the discussion below: http://drools.46999.n3.nabble.com/Help-with-event-not-found-over-window-query-tp4028129p4028131.html To unsubscribe from Help with event not found over window query, click here. NAML -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-event-not-found-over-window-query-tp4028129p4028171.html Sent from the Drools: User forum mailing list archive at Nabble.com.___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with event not found over window query
On 18/02/2014, daveor d...@daveor.com wrote: Thanks for your email below. I needed to refactor my code somewhat to get this technique to work but it solved the problem that I had. You're welcome. - That happens. I was previously using fireAllRules() but I refactored the code to use fireUntilHalt() instead, which required some additional work to make a couple of other supporting features behave properly. I know you don't strictly need to do this, but it needed to be done anyway and it made sense to do it now. [snip] I would have thought it was quite a common scenario where someone wanted to implement business logic such as: - Something happens - It is expected that something else will happen within a certain time period of the first thing happening - If the second thing doesn't happen within the time period, generate an alert Yes, it is, and you are in good company. - A thorough study of the temporal operators or reading Hawking's A Short History of Time helps, either one ;-) I ran into trouble because my various rules (from my original email) wouldn't fire an alert as expected when I fed in simulated events. I'm curious as to why you think it's interesting that the four rules below fail to meet my expectation? I suppose it's the fact that I'm a drools newbie and the issue here is probably just my inexperience mapping business logic into drools rules. The word is illuminative rather than interesting. Take this one: $e1: Event($location: properties[location] ...) not Event(, this after $e1) The $e1 Event is here, Time is Now. It's most certainly true that nothing is here after Now! - And the next one: $e1: Event($location: properties[location] ...) not Event(, this after[0, 1m] $e1) Again, Event $e1 is here, Time is Now, and nothing is here after Now. The operator does not instruct the Engine to wait! Cheers Wolfgang daveor On 15 Feb 2014, at 09:49, laune [via Drools] wrote: It would be interesting to discuss why each of these four rules fails to meet you expectation. Mostly it's due to the engine not evaluating exactly one minute after the certain event arrives. The following rule fires 1 minute after the evaluation of the arrival of an Event according to constraints and when no second Event (according to constraints not shown) has arrived since then. rule Something Else dialect mvel timer ( int: 1m ) when $e1: Event($location: properties[location] ...) not Event(..., this after $e1) then ... end -W On 14/02/2014, daveor [hidden email] wrote: Hi there, I'm a drools newbie and I wonder if someone could help me. I'm using drools 6.0.1 and I'm trying to write a rule that fires when: 1) a certain event is seen and 2) a second event is not seen within a certain period of time (1 minute in the examples below) after the first event is seen I have tried the following LHS patterns: rule Something dialect mvel when $e1: Event($location: properties[location] ...) not Event(, this after $e1) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) not Event(, this after[0, 1m] $e1) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) List (size == 0) from collect (Event(..., this after $e1) over window:time(1m)) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) List (size == 0) from collect (Event(...) over window:time(1m)) then //do stuff end The unwanted behaviours are as follows: In the first case, the rule fires immediately after the first event is inserted. In the second case, the rule fails to fire if the second event is seen (as expected) but the rule does not fire if the second event is not seen within 1 minute. In the third and fourth cases, the rule fires immediately after the first event is inserted. Event is a java class with a hash map of properties, defined with the following metadata: declare Event @role(event) end I would really appreciate if someone could help me out here. Thanks and let me know if you need any more info. Dave -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-event-not-found-over-window-query-tp4028129.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users If you reply to this email, your message will be added to the discussion below:
Re: [rules-users] Help with event not found over window query
It would be interesting to discuss why each of these four rules fails to meet you expectation. Mostly it's due to the engine not evaluating exactly one minute after the certain event arrives. The following rule fires 1 minute after the evaluation of the arrival of an Event according to constraints and when no second Event (according to constraints not shown) has arrived since then. rule Something Else dialect mvel timer ( int: 1m ) when $e1: Event($location: properties[location] ...) not Event(..., this after $e1) then ... end -W On 14/02/2014, daveor d...@daveor.com wrote: Hi there, I'm a drools newbie and I wonder if someone could help me. I'm using drools 6.0.1 and I'm trying to write a rule that fires when: 1) a certain event is seen and 2) a second event is not seen within a certain period of time (1 minute in the examples below) after the first event is seen I have tried the following LHS patterns: rule Something dialect mvel when $e1: Event($location: properties[location] ...) not Event(, this after $e1) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) not Event(, this after[0, 1m] $e1) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) List (size == 0) from collect (Event(..., this after $e1) over window:time(1m)) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) List (size == 0) from collect (Event(...) over window:time(1m)) then //do stuff end The unwanted behaviours are as follows: In the first case, the rule fires immediately after the first event is inserted. In the second case, the rule fails to fire if the second event is seen (as expected) but the rule does not fire if the second event is not seen within 1 minute. In the third and fourth cases, the rule fires immediately after the first event is inserted. Event is a java class with a hash map of properties, defined with the following metadata: declare Event @role(event) end I would really appreciate if someone could help me out here. Thanks and let me know if you need any more info. Dave -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-event-not-found-over-window-query-tp4028129.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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] Help with event not found over window query
Hi there, I'm a drools newbie and I wonder if someone could help me. I'm using drools 6.0.1 and I'm trying to write a rule that fires when: 1) a certain event is seen and 2) a second event is not seen within a certain period of time (1 minute in the examples below) after the first event is seen I have tried the following LHS patterns: rule Something dialect mvel when $e1: Event($location: properties[location] ...) not Event(, this after $e1) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) not Event(, this after[0, 1m] $e1) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) List (size == 0) from collect (Event(..., this after $e1) over window:time(1m)) then //do stuff end rule Something dialect mvel when $e1: Event($location: properties[location] ...) List (size == 0) from collect (Event(...) over window:time(1m)) then //do stuff end The unwanted behaviours are as follows: In the first case, the rule fires immediately after the first event is inserted. In the second case, the rule fails to fire if the second event is seen (as expected) but the rule does not fire if the second event is not seen within 1 minute. In the third and fourth cases, the rule fires immediately after the first event is inserted. Event is a java class with a hash map of properties, defined with the following metadata: declare Event @role(event) end I would really appreciate if someone could help me out here. Thanks and let me know if you need any more info. Dave -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-event-not-found-over-window-query-tp4028129.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] help with drools 6
Hi, I am trying to create a project using Drools 6 with Spring. I have drools-spring-6.0.0.Beta2 as the dependency as drools-spring-6.0.0.Final is not available. I am unable to get the kie:kmodule tag to bind in the spring application-context file. Can some one post a sample appCtx file with the kmodule xsd schema location specified ? Also, is there a working sample of using Spring with Drools 6 anywhere ? Thanks, Dwipin Chandran. -- View this message in context: http://drools.46999.n3.nabble.com/help-with-drools-6-tp4027460.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help with drools 6
the artefact name changed: https://repository.jboss.org/nexus/service/local/repositories/releases/content/org/kie/kie-spring/6.0.1.Final/kie-spring-6.0.1.Final.jar Mark On 30 Dec 2013, at 08:55, dwipin dwipi...@tcs.com wrote: Hi, I am trying to create a project using Drools 6 with Spring. I have drools-spring-6.0.0.Beta2 as the dependency as drools-spring-6.0.0.Final is not available. I am unable to get the kie:kmodule tag to bind in the spring application-context file. Can some one post a sample appCtx file with the kmodule xsd schema location specified ? Also, is there a working sample of using Spring with Drools 6 anywhere ? Thanks, Dwipin Chandran. -- View this message in context: http://drools.46999.n3.nabble.com/help-with-drools-6-tp4027460.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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] help with drools 6
take a look at https://github.com/droolsjbpm/droolsjbpm-integration/blob/master/kie-spring/src/test/java/org/kie/spring/tests/KieSpringBasicsTest2.java -Vinod -- View this message in context: http://drools.46999.n3.nabble.com/help-with-drools-6-tp4027460p4027463.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help on writing a rule
Well... On 22/10/2013, Demian Calcaprina calcacue...@gmail.com wrote: Yes! I receive many price change events.. but, as I am using window length = 1, I would expect to have the activation cancelled for the previous one? I am not sure how to express this: when there is some price change, and some signal, and there has not been any order over the last minute, then place an order The price change and signal are like existence facts.. If there is some price change change.. if there is some signal ... there ist the exists CE,well documented in Expert's section 4.8.3.6.4. But then you'll have trouble accessing the order id of this anonymous existence. Again, I recommend using what I call an auxiliary peephole fact to keep track of the latest pair of PriceChange and Signal, possibly with a reference to the OrderCreated. Also, the magic if value 1234 doesn't look kosher to me, too. -W Would this be another way to achieve what I am trying to do? Thanks, Demian PS: This is a simple rule, but then, the idea is to have more complex rules.. like, if there has been 10 signals in the last time, place an order, etc. On Tue, Oct 22, 2013 at 5:40 PM, Davide Sottara dso...@gmail.com wrote: Am I wrong or do you have two PriceChange events - 392 and 394 ? If so, you can expect two activations.. when you fire al rules, one of the two will insert the OrderCreated, which in turn will cancel the other On 10/22/2013 01:34 PM, calcacuervo wrote: Hi Guys. I have one quesiton on how could I implement my rule. I have this rule: when t : PriceChange() over window:length(1) signal : Signal( id == 1234 ) over window:length(1) not OrderCreated( id == 1234 ) over window:time (1m) then insert(new OrderCreated(1234)); Basically, when there is some signal and some price change, create a new order if there has no been any other order in the last minute. But this sometimes is being fired twice: 12:31:01,121 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 392, 0] declarations: t=PriceChange [](392); signal=Signal@1413ddef(393) 12:31:01,160 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 394, 0] declarations: t=PriceChange [](394); signal=Signal@1413ddef(393) I think that, when the 1m window have passed, it creates twice the activations, as I have not called fire all rules yet. Does is make sense? Do you have some idea on how could I implement this rule? when there has been some price change and some signal, and I did not create a new order in the last minute, just create a new order. Thanks in advance! Demian -- View this message in context: http://drools.46999.n3.nabble.com/Help-on-writing-a-rule-tp4026461.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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
[rules-users] Help on writing a rule
Hi Guys. I have one quesiton on how could I implement my rule. I have this rule: when t : PriceChange() over window:length(1) signal : Signal( id == 1234 ) over window:length(1) not OrderCreated( id == 1234 ) over window:time (1m) then insert(new OrderCreated(1234)); Basically, when there is some signal and some price change, create a new order if there has no been any other order in the last minute. But this sometimes is being fired twice: 12:31:01,121 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 392, 0] declarations: t=PriceChange [](392); signal=Signal@1413ddef(393) 12:31:01,160 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 394, 0] declarations: t=PriceChange [](394); signal=Signal@1413ddef(393) I think that, when the 1m window have passed, it creates twice the activations, as I have not called fire all rules yet. Does is make sense? Do you have some idea on how could I implement this rule? when there has been some price change and some signal, and I did not create a new order in the last minute, just create a new order. Thanks in advance! Demian -- View this message in context: http://drools.46999.n3.nabble.com/Help-on-writing-a-rule-tp4026461.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help on writing a rule
Am I wrong or do you have two PriceChange events - 392 and 394 ? If so, you can expect two activations.. when you fire al rules, one of the two will insert the OrderCreated, which in turn will cancel the other On 10/22/2013 01:34 PM, calcacuervo wrote: Hi Guys. I have one quesiton on how could I implement my rule. I have this rule: when t : PriceChange() over window:length(1) signal : Signal( id == 1234 ) over window:length(1) not OrderCreated( id == 1234 ) over window:time (1m) then insert(new OrderCreated(1234)); Basically, when there is some signal and some price change, create a new order if there has no been any other order in the last minute. But this sometimes is being fired twice: 12:31:01,121 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 392, 0] declarations: t=PriceChange [](392); signal=Signal@1413ddef(393) 12:31:01,160 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 394, 0] declarations: t=PriceChange [](394); signal=Signal@1413ddef(393) I think that, when the 1m window have passed, it creates twice the activations, as I have not called fire all rules yet. Does is make sense? Do you have some idea on how could I implement this rule? when there has been some price change and some signal, and I did not create a new order in the last minute, just create a new order. Thanks in advance! Demian -- View this message in context: http://drools.46999.n3.nabble.com/Help-on-writing-a-rule-tp4026461.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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] Help on writing a rule
Just curious here, why do you have this - signal : Signal( id == 1234 ) over window:length(1)? On Tue, Oct 22, 2013 at 9:40 PM, Davide Sottara dso...@gmail.com wrote: Am I wrong or do you have two PriceChange events - 392 and 394 ? If so, you can expect two activations.. when you fire al rules, one of the two will insert the OrderCreated, which in turn will cancel the other On 10/22/2013 01:34 PM, calcacuervo wrote: Hi Guys. I have one quesiton on how could I implement my rule. I have this rule: when t : PriceChange() over window:length(1) signal : Signal( id == 1234 ) over window:length(1) not OrderCreated( id == 1234 ) over window:time (1m) then insert(new OrderCreated(1234)); Basically, when there is some signal and some price change, create a new order if there has no been any other order in the last minute. But this sometimes is being fired twice: 12:31:01,121 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 392, 0] declarations: t=PriceChange [](392); signal=Signal@1413ddef(393) 12:31:01,160 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 394, 0] declarations: t=PriceChange [](394); signal=Signal@1413ddef(393) I think that, when the 1m window have passed, it creates twice the activations, as I have not called fire all rules yet. Does is make sense? Do you have some idea on how could I implement this rule? when there has been some price change and some signal, and I did not create a new order in the last minute, just create a new order. Thanks in advance! Demian -- View this message in context: http://drools.46999.n3.nabble.com/Help-on-writing-a-rule-tp4026461.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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 -- - MyJourney @ http://salaboy.com http://salaboy.wordpress.com - Co-Founder @ http://www.jugargentina.org - Co-Founder @ http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help on writing a rule
Yes! I receive many price change events.. but, as I am using window length = 1, I would expect to have the activation cancelled for the previous one? I am not sure how to express this: when there is some price change, and some signal, and there has not been any order over the last minute, then place an order The price change and signal are like existence facts.. If there is some price change change.. if there is some signal ... Would this be another way to achieve what I am trying to do? Thanks, Demian PS: This is a simple rule, but then, the idea is to have more complex rules.. like, if there has been 10 signals in the last time, place an order, etc. On Tue, Oct 22, 2013 at 5:40 PM, Davide Sottara dso...@gmail.com wrote: Am I wrong or do you have two PriceChange events - 392 and 394 ? If so, you can expect two activations.. when you fire al rules, one of the two will insert the OrderCreated, which in turn will cancel the other On 10/22/2013 01:34 PM, calcacuervo wrote: Hi Guys. I have one quesiton on how could I implement my rule. I have this rule: when t : PriceChange() over window:length(1) signal : Signal( id == 1234 ) over window:length(1) not OrderCreated( id == 1234 ) over window:time (1m) then insert(new OrderCreated(1234)); Basically, when there is some signal and some price change, create a new order if there has no been any other order in the last minute. But this sometimes is being fired twice: 12:31:01,121 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 392, 0] declarations: t=PriceChange [](392); signal=Signal@1413ddef(393) 12:31:01,160 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 394, 0] declarations: t=PriceChange [](394); signal=Signal@1413ddef(393) I think that, when the 1m window have passed, it creates twice the activations, as I have not called fire all rules yet. Does is make sense? Do you have some idea on how could I implement this rule? when there has been some price change and some signal, and I did not create a new order in the last minute, just create a new order. Thanks in advance! Demian -- View this message in context: http://drools.46999.n3.nabble.com/Help-on-writing-a-rule-tp4026461.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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
Re: [rules-users] Help on writing a rule
Mauricio, In fact, I used to have this and the price change without window:length.. but when t : PriceChange() signal : Signal( id == 1234 ) not OrderCreated( id == 1234 ) over window:time (1m) But this will cause more and more duplicates orders (and it have sense!). I added the length window to 1, as I would only like to create an order if there is some signal in the window, it can place an order.. On Tue, Oct 22, 2013 at 5:42 PM, Mauricio Salatino sala...@gmail.comwrote: Just curious here, why do you have this - signal : Signal( id == 1234 ) over window:length(1)? On Tue, Oct 22, 2013 at 9:40 PM, Davide Sottara dso...@gmail.com wrote: Am I wrong or do you have two PriceChange events - 392 and 394 ? If so, you can expect two activations.. when you fire al rules, one of the two will insert the OrderCreated, which in turn will cancel the other On 10/22/2013 01:34 PM, calcacuervo wrote: Hi Guys. I have one quesiton on how could I implement my rule. I have this rule: when t : PriceChange() over window:length(1) signal : Signal( id == 1234 ) over window:length(1) not OrderCreated( id == 1234 ) over window:time (1m) then insert(new OrderCreated(1234)); Basically, when there is some signal and some price change, create a new order if there has no been any other order in the last minute. But this sometimes is being fired twice: 12:31:01,121 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 392, 0] declarations: t=PriceChange [](392); signal=Signal@1413ddef(393) 12:31:01,160 INFO [org.drools.audit.WorkingMemoryConsoleLogger] (Camel (camel-1) thread #4 - JmsConsumer[marketDataTopic]) ACTIVATION CREATED rule:ertetr activationId:ertetr [393, 394, 0] declarations: t=PriceChange [](394); signal=Signal@1413ddef(393) I think that, when the 1m window have passed, it creates twice the activations, as I have not called fire all rules yet. Does is make sense? Do you have some idea on how could I implement this rule? when there has been some price change and some signal, and I did not create a new order in the last minute, just create a new order. Thanks in advance! Demian -- View this message in context: http://drools.46999.n3.nabble.com/Help-on-writing-a-rule-tp4026461.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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 -- - MyJourney @ http://salaboy.com http://salaboy.wordpress.com - Co-Founder @ http://www.jugargentina.org - Co-Founder @ http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ 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] help
Hi, I want to post a query. Could you please let me know the process. I am getting error As 'You are not allowed to post on this link'. Thanks, Poonam Please do not print this email unless it is absolutely necessary. The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help
You have successfully posted a message on the Drools user list, which is read by thousands of people, so please take care what you write. -W PS: Help is not a good subject, unless it's the Beatles' Fan List ;-) On 16/09/2013, poonam.lig...@wipro.com poonam.lig...@wipro.com wrote: Hi, I want to post a query. Could you please let me know the process. I am getting error As 'You are not allowed to post on this link'. Thanks, Poonam Please do not print this email unless it is absolutely necessary. The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] help on drools guvnor
Hi, I am not able to run rules from .pkg resources. Knowledgesession is getting populated with package and rules inside the packages but when I am firing ksession.fireAllRules(); no rules are getting executed. Below is my program final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); // Use this line if calling rule defined using guvnor package org.drools.io.impl.UrlResource urlResource; try { urlResource = (org.drools.io.impl.UrlResource) org.drools.io.ResourceFactory .newUrlResource(new java.net.URL(http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/OBSPOC/OBSSNAP/OBSPOC_OBSSNAP.pkg;)); urlResource.setBasicAuthentication(enabled); urlResource.setUsername(admin); urlResource.setPassword(admin); kbuilder.add(urlResource,ResourceType.PKG); } catch (MalformedURLException e) { System.out.println(malformed URL); e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // create the knowledge base KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); // Check the builder for errors if (kbuilder.hasErrors()) { System.out.println(kbuilder.getErrors().toString() + ); throw new RuntimeException(Unable to compile the rule file.); }else{ System.out.println(.Rule File is Read Successfully); } // get the compiled packages (which are serializable) final Collection pkgs = kbuilder .getKnowledgePackages(); // add the packages to a knowledgebase (deploy the knowledge packages). // final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(pkgs); final StatefulKnowledgeSession ksession = kbase .newStatefulKnowledgeSession(); ksession.addEventListener(new DebugAgendaEventListener()); ksession.addEventListener(new DebugWorkingMemoryEventListener()); EmployeeMap employeeMap = new EmployeeMap(); employeeMap.setEmployeeCountry(INDIA); employeeMap.setEmployeeID(1); employeeMap.setEmployeeName(USERP); ksession.insert(employeeMap); ksession.fireAllRules(); ksession.dispose(); Thanks, Pritha Please do not print this email unless it is absolutely necessary. The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help on drools guvnor
Have you tested that the rules fire when you load them as DRL? It would probably be worth showing us what EmployeeMap looks like and the rule which you expect to fire if there is an EmployeeMap in working memory. The Drools version would also be useful. Steve On 17 Jul 2013, at 14:04, pritha.gh...@wipro.com wrote: Hi, I am not able to run rules from .pkg resources. Knowledgesession is getting populated with package and rules inside the packages but when I am firing ksession.fireAllRules(); no rules are getting executed. Below is my program final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); // Use this line if calling rule defined using guvnor package org.drools.io.impl.UrlResource urlResource; try { urlResource = (org.drools.io.impl.UrlResource) org.drools.io.ResourceFactory .newUrlResource(new java.net.URL(http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/OBSPOC/OBSSNAP/OBSPOC_OBSSNAP.pkg;)); urlResource.setBasicAuthentication(enabled); urlResource.setUsername(admin); urlResource.setPassword(admin); kbuilder.add(urlResource,ResourceType.PKG); } catch (MalformedURLException e) { System.out.println(malformed URL); e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // create the knowledge base KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); // Check the builder for errors if (kbuilder.hasErrors()) { System.out.println(kbuilder.getErrors().toString() + ); throw new RuntimeException(Unable to compile the rule file.); }else{ System.out.println(.Rule File is Read Successfully); } // get the compiled packages (which are serializable) final Collection pkgs = kbuilder .getKnowledgePackages(); // add the packages to a knowledgebase (deploy the knowledge packages). // final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(pkgs); final StatefulKnowledgeSession ksession = kbase .newStatefulKnowledgeSession(); ksession.addEventListener(new DebugAgendaEventListener()); ksession.addEventListener(new DebugWorkingMemoryEventListener()); EmployeeMap employeeMap = new EmployeeMap(); employeeMap.setEmployeeCountry(INDIA); employeeMap.setEmployeeID(1); employeeMap.setEmployeeName(USERP); ksession.insert(employeeMap); ksession.fireAllRules(); ksession.dispose(); Thanks, Pritha Please do not print this email unless it is absolutely necessary. The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com ___ 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] help on drools guvnor
What are your rules? -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-help-on-drools-guvnor-tp4024975p4024977.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help with DefaultAgenda.java
Hello, I have tried to change the source code of DefaultAgenda.Java by adding the code below: //drools orginial sequential code /* while ( continueFiring( fireLimit ) fireNextItem( agendaFilter ) ) { fireCount++; fireLimit = updateFireLimit( fireLimit ); this.workingMemory.executeQueuedActions(); } */ //code with concurrency InternalAgendaGroup myGroup = (InternalAgendaGroup) getNextFocus(); fireCount = myGroup.size(); for(int i =0; i fireCount; ++i) { new Thread(new Runnable(){ public void run() { fireNextItem( agendaFilter ); } }).start(); } I am getting an Errorjava.lang.NullPointerException because my code flow is going to consequenceExceptionHandler ! = null exception. else if ( this.consequenceExceptionHandler != null ) { this.consequenceExceptionHandler.handleException( activation, this.workingMemory.getKnowledgeRuntime(), e ); Could you kindly help me with this? I am pasting the exception below and I am using Drools 5.4 Final version. In DA: [Activation rule=Rule 1, act#=0, salience=0, tuple=[fact 0:0:1773684356:1306428912:0:DEFAULT:org.drools.reteoo.InitialFactImpl@4dde85f0] ] Exception in thread Thread-1 Exception in thread Thread-0 Exception executing consequence for rule Rule 1 in defaultpkg: java.lang.NullPointerException In DA WM: org.drools.impl.StatefulKnowledgeSessionImpl@542487b1 In DA Errorjava.lang.NullPointerException In DA: [Activation rule=Rule 2, act#=1, salience=0, tuple=[fact 0:0:1773684356:1306428912:0:DEFAULT:org.drools.reteoo.InitialFactImpl@4dde85f0] ] In DA WM: org.drools.impl.StatefulKnowledgeSessionImpl@542487b1 In DA Errorjava.lang.NullPointerException at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1208) at org.drools.common.DefaultAgenda$1.run(DefaultAgenda.java:1471) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1272) ... 3 more Exception executing consequence for rule Rule 2 in defaultpkg: java.lang.NullPointerException at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1208) at org.drools.common.DefaultAgenda$1.run(DefaultAgenda.java:1471) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1272) ... 3 more Thanks a lot for the help. Regards, Malory -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-DefaultAgenda-java-tp4022758.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with DefaultAgenda.java
I replied to this on the DEV mailing list, this is the USER mailing list. Please see the web archives. Mark On 11 Mar 2013, at 00:36, Mallory gmalathi...@gmail.com wrote: Hello, I have tried to change the source code of DefaultAgenda.Java by adding the code below: //drools orginial sequential code /* while ( continueFiring( fireLimit ) fireNextItem( agendaFilter ) ) { fireCount++; fireLimit = updateFireLimit( fireLimit ); this.workingMemory.executeQueuedActions(); } */ //code with concurrency InternalAgendaGroup myGroup = (InternalAgendaGroup) getNextFocus(); fireCount = myGroup.size(); for(int i =0; i fireCount; ++i) { new Thread(new Runnable(){ public void run() { fireNextItem( agendaFilter ); } }).start(); } I am getting an Errorjava.lang.NullPointerException because my code flow is going to consequenceExceptionHandler ! = null exception. else if ( this.consequenceExceptionHandler != null ) { this.consequenceExceptionHandler.handleException( activation, this.workingMemory.getKnowledgeRuntime(), e ); Could you kindly help me with this? I am pasting the exception below and I am using Drools 5.4 Final version. In DA: [Activation rule=Rule 1, act#=0, salience=0, tuple=[fact 0:0:1773684356:1306428912:0:DEFAULT:org.drools.reteoo.InitialFactImpl@4dde85f0] ] Exception in thread Thread-1 Exception in thread Thread-0 Exception executing consequence for rule Rule 1 in defaultpkg: java.lang.NullPointerException In DA WM: org.drools.impl.StatefulKnowledgeSessionImpl@542487b1 In DA Errorjava.lang.NullPointerException In DA: [Activation rule=Rule 2, act#=1, salience=0, tuple=[fact 0:0:1773684356:1306428912:0:DEFAULT:org.drools.reteoo.InitialFactImpl@4dde85f0] ] In DA WM: org.drools.impl.StatefulKnowledgeSessionImpl@542487b1 In DA Errorjava.lang.NullPointerException at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1208) at org.drools.common.DefaultAgenda$1.run(DefaultAgenda.java:1471) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1272) ... 3 more Exception executing consequence for rule Rule 2 in defaultpkg: java.lang.NullPointerException at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1208) at org.drools.common.DefaultAgenda$1.run(DefaultAgenda.java:1471) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1272) ... 3 more Thanks a lot for the help. Regards, Malory -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-DefaultAgenda-java-tp4022758.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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] Help to implement my 1st planner
Hello everyone, i'm trying to implement drools planner for my paper and it is proving very hard taking in consideration that i never user it before. I was able to reproduce the examples, even though i got very confused, but i undestood some things, but i'm really lost of how to implement my own project/rule. My paper is about service, I don't really know how to define it, but i'll try to explain. A given company receive several requests of maintence, repair, etc, all the time, and it have a number of people to solve that, these technicians. It's something like the nurse roaster but wy to simpler. An issue can pop at any minute, it have a starting time and an estimated time to be acomplished. The technician have work for a fixed amount of time, but he have the start time and the end time of work, that I want to use to assign the issue. I've created the class Technician Technician import java.util.Date; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias(Technician) public class Technician extends AbstractPersistable { private int engId; private int workTime; private Date startWorkTime; private Date endWorkTime; private Technician technician; public Technician(int engId, int workTime, Date startWorkTime, Date endWorkTime) { super(); this.engId = engId; this.workTime = workTime; this.startWorkTime = startWorkTime; this.endWorkTime = endWorkTime; } public int getEngId() { return engId; } public void setEngId(int engId) { this.engId = engId; } public Date getStartWorkTime() { return startWorkTime; } public int getWorkTime() { return workTime; } public void setWorkTime(int workTime) { this.workTime = workTime; } public void setStartWorkTime(Date startWorkTime) { this.startWorkTime = startWorkTime; } public Date getEndWorkTime() { return endWorkTime; } public void setEndWorkTime(Date endWorkTime) { this.endWorkTime = endWorkTime; } public Technician getTechnician() { return technician; } public void setTechnician(Technician technician) { this.technician = technician; } } Issue class import java.util.Date; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias(CloudComputer) public class Issue extends AbstractPersistable { private Date startTime; private Date estimatedTime; public Issue(Date startTime, Date estimatedTime) { super(); this.startTime = startTime; this.estimatedTime = estimatedTime; } public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public Date getEstimatedTime() { return estimatedTime; } public void setEstimatedTime(Date estimatedTime) { this.estimatedTime = estimatedTime; } } and here i got lost. I'm trying to schedule the technician to these issues based on the estimated time and in the time left of technician. I accept any kind of help or comment, I need it for next monday, i'll be tunned everytime on this trying to make it happen. Thanks for your time Aijin Nakanishi ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help please!!!
Hi Toni, It's very interesting to know it. It is possible that it is a bug. I did the test several times but the results are the same. Best regard -- View this message in context: http://drools.46999.n3.nabble.com/Help-please-tp4018136p4018245.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help
SORRY 2012/5/29 Mark Proctor mproc...@codehaus.org Please do not cross post to user and dev mailing lis, it's bad manners. Please keep user questions to the user list. Please before you post again read the 17 guideline points towards the bottom of the page: http://www.jboss.org/drools/lists Mark On 29/05/2012 15:25, Olfa h wrote: HI, My master thesis is to develop a model interface that allows the doctor to pose the question for the patient. it consists of an interface and a database format connaissace ontology. this application must guide the doctor. The purpose of the ontology is to implement the interface model that contains a text box to enter the question and a text box to type the answer and then clicking a button data are displayed which are imported for the ontology weight the answer and then if the readings are not in good clicks a button to display other data but not displayed the first time and if the election is made on a data. By clicking a button to display the data that are connected to select data and then validate the choice. Please can you guide me to make this work? can you give to me a detailed description and the simplest methods to follow and i inform you about all the information concerned my environment to lead a good results because i'm a beginner in this domain ? If there is any point on the ontology create or something missing you can tell me because this is the first that I work with ontologies. so I just need to realized this little application to validate the model interface and the ontology and I like that you guide me. Attached is the interface model and the ontology. I await your advise and your help. Thank you very much. ___ rules-users mailing listrules-users@lists.jboss.orghttps://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
[rules-users] Help
HI, My master thesis is to develop a model interface that allows the doctor to pose the question for the patient. it consists of an interface and a database format connaissace ontology. this application must guide the doctor. The purpose of the ontology is to implement the interface model that contains a text box to enter the question and a text box to type the answer and then clicking a button data are displayed which are imported for the ontology weight the answer and then if the readings are not in good clicks a button to display other data but not displayed the first time and if the election is made on a data. By clicking a button to display the data that are connected to select data and then validate the choice. Please can you guide me to make this work? can you give to me a detailed description and the simplest methods to follow and i inform you about all the information concerned my environment to lead a good results because i'm a beginner in this domain ? If there is any point on the ontology create or something missing you can tell me because this is the first that I work with ontologies. so I just need to realized this little application to validate the model interface and the ontology and I like that you guide me. Attached is the interface model and the ontology. I await your advise and your help. Thank you very much. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help
Just sent you an email Davide -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-Help-tp4017664p4017668.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help
Just sent you an email Davide -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-Help-tp4017664p4017667.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help
Please do not cross post to user and dev mailing lis, it's bad manners. Please keep user questions to the user list. Please before you post again read the 17 guideline points towards the bottom of the page: http://www.jboss.org/drools/lists Mark On 29/05/2012 15:25, Olfa h wrote: HI, My master thesis is to develop a model interface that allows the doctor to pose the question for the patient. it consists of an interface and a database format connaissace ontology. this application must guide the doctor. The purpose of the ontology is to implement the interface model that contains a text box to enter the question and a text box to type the answer and then clicking a button data are displayed which are imported for the ontology weight the answer and then if the readings are not in good clicks a button to display other data but not displayed the first time and if the election is made on a data. By clicking a button to display the data that are connected to select data and then validate the choice. Please can you guide me to make this work? can you give to me a detailed description and the simplest methods to follow and i inform you about all the information concerned my environment to lead a good results because i'm a beginner in this domain ? If there is any point on the ontology create or something missing you can tell me because this is the first that I work with ontologies. so I just need to realized this little application to validate the model interface and the ontology and I like that you guide me. Attached is the interface modeland the ontology. I await your advise and your help. Thank you very much. ___ 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] Help
Hi everyone, I am new to drools.net and I am testing some basic commands but can't seem to find help anywhere! I am trying to print the contents of a variable but for some reason, the contents are not printed! The first line (i.e. hello) on the other hand is being printed.. Is there a common mistake I may be doing? Thanks! rule testing when p: Person (name == john) then Console.WriteLine (hello); Console.WriteLine (p.name); end -- View this message in context: http://drools.46999.n3.nabble.com/Help-tp3812782p3812782.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help
Try to print p.getName(). -W On 9 March 2012 15:20, seagull g.christabe...@gmail.com wrote: Hi everyone, I am new to drools.net and I am testing some basic commands but can't seem to find help anywhere! I am trying to print the contents of a variable but for some reason, the contents are not printed! The first line (i.e. hello) on the other hand is being printed.. Is there a common mistake I may be doing? Thanks! rule testing when p: Person (name == john) then Console.WriteLine (hello); Console.WriteLine (p.name); end -- View this message in context: http://drools.46999.n3.nabble.com/Help-tp3812782p3812782.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ 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] Help needed - Repository not getting initialised?
Hi, Repository is not getting initialised, throws NPE. Please advise. TIA. public static Repository repository; public static Session getSession() throws Exception { return getSession(true); } public static synchronized Session getSession(boolean erase) { try { if (repository == null) { if (erase) { File repoDir = new File(repository); System.out.println(DELETE test repo dir: + repoDir.getAbsolutePath()); RepositorySessionUtil.deleteDir(repoDir); System.out.println(TEST repo dir deleted.); } JCRRepositoryConfigurator config = new JackrabbitRepositoryConfigurator(); String home = System .getProperty(guvnor.repository.dir); repository = config.getJCRRepository(home); Session testSession = repository .login(new SimpleCredentials(alan_parsons, password.toCharArray())); RulesRepositoryAdministrator admin = new RulesRepositoryAdministrator( testSession); if (erase admin.isRepositoryInitialized()) { admin.clearRulesRepository(); } config.setupRulesRepository(testSession); return testSession; } else { return repository.login(new SimpleCredentials( alan_parsons, password.toCharArray())); } } catch (RepositoryException e) { throw new IllegalStateException(e); } } public static void main(String [] args) throws Exception{ getSession(); } Below is the exception.. DELETE test repo dir: D:\drools\TestRepository\repository TEST repo dir deleted. Exception in thread main java.lang.NullPointerException: dispatcher at org.apache.jackrabbit.core.observation.ObservationManagerImpl.init(ObservationManagerImpl.java:97) at org.apache.jackrabbit.core.WorkspaceImpl.getObservationManager(WorkspaceImpl.java:748) at org.apache.jackrabbit.core.SessionImpl.removeRegisteredEventListeners(SessionImpl.java:1193) at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:1222) at org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.doDispose(RepositoryImpl.java:2194) at org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.dispose(RepositoryImpl.java:2149) at org.apache.jackrabbit.core.RepositoryImpl.doShutdown(RepositoryImpl.java:1175) at org.apache.jackrabbit.core.RepositoryImpl.shutdown(RepositoryImpl.java:1127) at org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(RepositoryImpl.java:544) at org.apache.jackrabbit.core.RepositoryImpl.init(RepositoryImpl.java:366) at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:673) at org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:231) at org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:279) at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:375) at org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123) at Hello.getSession(Hello.java:50) at Hello.getSession(Hello.java:27) at Hello.main(Hello.java:72) Regards, Praveen. -- View this message in context: http://drools.46999.n3.nabble.com/Help-needed-Repository-not-getting-initialised-tp3506064p3506064.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with troubleshooting rules/Drools
I've rolled back to 5.2.0 and it seems to be doing better. Almost an hour of uptime. I already have a custom consequence exception handler -- I think it's cribbed from that link, even. But this exception doesn't appear to happen during the execution of a consequence -- I *think* it's during an event expiration, but I can't swear to that. -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-troubleshooting-rules-Drools-tp3469285p3471173.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with troubleshooting rules/Drools
They can recalculate just fine -- the underlying AccumulateData is just a SortedSet -- but ISTR there are problems with that code outside of my functions. -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-troubleshooting-rules-Drools-tp3469285p3471330.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help with troubleshooting rules/Drools
Any advice on how to troubleshoot problems? I have a fairly simple set of rules (a couple dozen), but keep having problems with fatal exceptions. The most recent was: org.drools.RuntimeDroolsException: Unexpected exception executing action org.drools.reteoo.PropagationQueuingNode$PropagateAction@1e60aa7 at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:977) at org.drools.common.DefaultAgenda.fireUntilHalt(DefaultAgenda.java:1231) at org.drools.common.AbstractWorkingMemory.fireUntilHalt(AbstractWorkingMemory.java:753) at org.drools.common.AbstractWorkingMemory.fireUntilHalt(AbstractWorkingMemory.java:729) at org.drools.impl.StatefulKnowledgeSessionImpl.fireUntilHalt(StatefulKnowledgeSessionImpl.java:234) at com.kroger.tempmonitor.app.service.RuleService$1.run(RuleService.java:214) at java.lang.Thread.run(Thread.java:662) Caused by: java.util.NoSuchElementException at java.util.LinkedList.remove(LinkedList.java:788) at java.util.LinkedList.removeFirst(LinkedList.java:134) at org.drools.common.PropagationContextImpl.evaluateActionQueue(PropagationContextImpl.java:264) at org.drools.reteoo.PropagationQueuingNode$AssertAction.execute(PropagationQueuingNode.java:357) at org.drools.reteoo.PropagationQueuingNode.propagateActions(PropagationQueuingNode.java:238) at org.drools.reteoo.PropagationQueuingNode$PropagateAction.execute(PropagationQueuingNode.java:502) at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:975) ... 6 more No mention of a rule name, so where do I begin? My architecture is simple: one thread ran fireUntilHalt(), other (multiple) threads inserting objects. Should I synchronize on the session so only one thread is inserting at a time? There's one rule that triggers a large number of inserts, and it used to give me problems, but I've moved those inserts into Commands and those problems seem to have gone away. Any advice would be welcome, no matter how basic you think it is! Thanks! -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-troubleshooting-rules-Drools-tp3469285p3469285.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with troubleshooting rules/Drools
Robert Crawford wrote: Any advice on how to troubleshoot problems? I have a fairly simple set of rules (a couple dozen), but keep having problems with fatal exceptions. The most recent was: org.drools.RuntimeDroolsException: Unexpected exception executing action org.drools.reteoo.PropagationQueuingNode$PropagateAction@1e60aa7 at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:977) at org.drools.common.DefaultAgenda.fireUntilHalt(DefaultAgenda.java:1231) at org.drools.common.AbstractWorkingMemory.fireUntilHalt(AbstractWorkingMemory.java:753) at org.drools.common.AbstractWorkingMemory.fireUntilHalt(AbstractWorkingMemory.java:729) at org.drools.impl.StatefulKnowledgeSessionImpl.fireUntilHalt(StatefulKnowledgeSessionImpl.java:234) at com.kroger.tempmonitor.app.service.RuleService$1.run(RuleService.java:214) at java.lang.Thread.run(Thread.java:662) Caused by: java.util.NoSuchElementException at java.util.LinkedList.remove(LinkedList.java:788) at java.util.LinkedList.removeFirst(LinkedList.java:134) at org.drools.common.PropagationContextImpl.evaluateActionQueue(PropagationContextImpl.java:264) at org.drools.reteoo.PropagationQueuingNode$AssertAction.execute(PropagationQueuingNode.java:357) at org.drools.reteoo.PropagationQueuingNode.propagateActions(PropagationQueuingNode.java:238) at org.drools.reteoo.PropagationQueuingNode$PropagateAction.execute(PropagationQueuingNode.java:502) at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:975) ... 6 more No mention of a rule name, so where do I begin? The exception may happen during working memory operations (e.g., an insert), so there isn't even a rule active. Which version of Drools are you using? In my case, switching from Drools 5.2.0.Final to Drools 5.3.0.Final broke 47 of my unit tests (1 error and 46 failures). The one that now gives an error, shows this stacktrace (similar to yours): org.drools.RuntimeDroolsException: Unexpected exception executing action org.drools.reteoo.PropagationQueuingNode$PropagateAction@7a9b777a at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:977) at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:315) at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:291) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:886) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:845) at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255) at com.acme.das.fraud.RulesTestBase.sendEot(RulesTestBase.java:139) at com.acme.das.fraud.RulesTestBase.advanceTime(RulesTestBase.java:131) at com.acme.das.fraud.RulesTestBase.advanceTime(RulesTestBase.java:135) at com.acme.das.fraud.RulesTest.testUdrAndThenStartCdrWithinTimeout(RulesTest.java:1061) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:66) at org.jmock.integration.junit4.JMock$1.invoke(JMock.java:37) at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:105) at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:86) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:98) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61) at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:54) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:52) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at
Re: [rules-users] Help needed - how to get Number and intValue in Guvnor
Hello, Anyone out there who has come across the above issue? Regards, Praveen. -- View this message in context: http://drools.46999.n3.nabble.com/Help-needed-how-to-get-Number-and-intValue-in-Guvnor-tp3430730p3437459.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help! Activations firing out of salience order
That's a relief. Any news as to when final will be released? Thanks, Thomas From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Edson Tirelli Sent: 19 October 2011 01:23 To: Rules Users List Subject: Re: [rules-users] Help! Activations firing out of salience order This was a duplicate of https://issues.jboss.org/browse/JBRULES-3111 that was fixed last week. It will be released in 5.3.0.final. Edson 2011/10/18 Swindells, Thomas tswinde...@nds.commailto:tswinde...@nds.com Ouch looks like we and anybody on 5.1.1 needs to desperately update then. Though I am rather concerned by this issue https://issues.jboss.org/browse/JBRULES-3211 Rules fires on incorrect condition - has this been looked at/is the issue correct as a rules engine which fires random rules when it shouldn't would be problematic! Thomas From: rules-users-boun...@lists.jboss.orgmailto:rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.orgmailto:rules-users-boun...@lists.jboss.org] On Behalf Of Wolfgang Laun Sent: 18 October 2011 11:05 To: Rules Users List Subject: Re: [rules-users] Help! Activations firing out of salience order There used to be a subtle bug in the PriorityHeapQueue containing the activations. See https://issues.jboss.org/browse/JBRULES-3044 -W 2011/10/18 Swindells, Thomas tswinde...@nds.commailto:tswinde...@nds.com In our project we have been experiencing a large number of intermittent unit test failures when we are testing our rules (on drools 5.1.1). After a lot of debugging, examining our rules for logic errors, experimenting and generally scratching our head trying to work out what is wrong, we have noticed that sometimes (but very intermittently) activations are firing in the wrong order. In our rulebase we have two rules, Rule A salience 80 and Rule B salience 70. Whilst debugging we made Rule A and B are identical other than rule B having some additional constraints on the end. Dumping out the agenda events we have observed the following actions occurring: BEFORE_FIRED rule X CREATED_ACTIVATION Rule A CREATED_ACTIVATION Rule B AFTER_FIRED rule X ... (no references to either rule/activation) BEFORE_FIRED Rule B CANCELLED Rule A AFTER_FIRED Rule B How can Rule B be firing before Rule A when both activations exist? Does anybody know of any bugs in 5.1.1 that may be causing this? We have a branch of code on 5.3 and that also has had intermittent unit test failures, we've not had chance to examine whether this is the same pattern or just a different logic issue. Please help, Thomas ** This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmas...@nds.commailto:postmas...@nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary. NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00 ** ___ rules-users mailing list rules-users@lists.jboss.orgmailto:rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.orgmailto:rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Edson Tirelli JBoss Drools Core Development JBoss by Red Hat @ www.jboss.comhttp://www.jboss.com ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help! Activations firing out of salience order
I had to upgrade to 5.2 to get away from the same salience bug. So far 5.2 has been very good to us other than the outrageous amount of memory it takes to load up a large rule base (which you can partially get around using the latest mvel jar). -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-Help-Activations-firing-out-of-salience-order-tp3430611p3435291.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help! Activations firing out of salience order
In our project we have been experiencing a large number of intermittent unit test failures when we are testing our rules (on drools 5.1.1). After a lot of debugging, examining our rules for logic errors, experimenting and generally scratching our head trying to work out what is wrong, we have noticed that sometimes (but very intermittently) activations are firing in the wrong order. In our rulebase we have two rules, Rule A salience 80 and Rule B salience 70. Whilst debugging we made Rule A and B are identical other than rule B having some additional constraints on the end. Dumping out the agenda events we have observed the following actions occurring: BEFORE_FIRED rule X CREATED_ACTIVATION Rule A CREATED_ACTIVATION Rule B AFTER_FIRED rule X ... (no references to either rule/activation) BEFORE_FIRED Rule B CANCELLED Rule A AFTER_FIRED Rule B How can Rule B be firing before Rule A when both activations exist? Does anybody know of any bugs in 5.1.1 that may be causing this? We have a branch of code on 5.3 and that also has had intermittent unit test failures, we've not had chance to examine whether this is the same pattern or just a different logic issue. Please help, Thomas ** This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmas...@nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary. NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00 ** ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help needed - how to get Number and intValue in Guvnor
Hello, I am new to Drools and trying to write rules using Guvnor GUI. I have uploaded POJO's that are required for my rules. I am facing issue trying to get Number()(the one in Bold-Italics) and intValue in the Guvnor GUI. Below is the rule for reference, its taken from one of the examples provided in Drools Planner. // Accumulate hard constraints rule hardConstraintsBroken salience -1 // Do the other rules first (optional, for performance) when $hardTotal : */Number(/)* from accumulate( IntConstraintOccurrence(constraintType == ConstraintType.NEGATIVE_HARD, $weight : weight), sum($weight) // Vote for http://jira.jboss.com/jira/browse/JBRULES-1075 ) then scoreCalculator.setHardConstraintsBroken($hardTotal.intValue()); end -- View this message in context: http://drools.46999.n3.nabble.com/Help-needed-how-to-get-Number-and-intValue-in-Guvnor-tp3430730p3430730.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help! Activations firing out of salience order
There used to be a subtle bug in the PriorityHeapQueue containing the activations. See https://issues.jboss.org/browse/JBRULES-3044 -W 2011/10/18 Swindells, Thomas tswinde...@nds.com In our project we have been experiencing a large number of intermittent unit test failures when we are testing our rules (on drools 5.1.1). After a lot of debugging, examining our rules for logic errors, experimenting and generally scratching our head trying to work out what is wrong, we have noticed that sometimes (but very intermittently) activations are firing in the wrong order. ** ** In our rulebase we have two rules, Rule A salience 80 and Rule B salience 70. Whilst debugging we made Rule A and B are identical other than rule B having some additional constraints on the end. Dumping out the agenda events we have observed the following actions occurring: BEFORE_FIRED rule X CREATED_ACTIVATION Rule A CREATED_ACTIVATION Rule B AFTER_FIRED rule X ** ** … (no references to either rule/activation) ** ** BEFORE_FIRED Rule B CANCELLED Rule A AFTER_FIRED Rule B ** ** How can Rule B be firing before Rule A when both activations exist? Does anybody know of any bugs in 5.1.1 that may be causing this? We have a branch of code on 5.3 and that also has had intermittent unit test failures, we’ve not had chance to examine whether this is the same pattern or just a different logic issue. ** ** Please help, ** ** Thomas ** ** ** ** -- ** This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmas...@nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary. NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00 ** ___ 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] Help! Activations firing out of salience order
Ouch looks like we and anybody on 5.1.1 needs to desperately update then. Though I am rather concerned by this issue https://issues.jboss.org/browse/JBRULES-3211 Rules fires on incorrect condition - has this been looked at/is the issue correct as a rules engine which fires random rules when it shouldn't would be problematic! Thomas From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Wolfgang Laun Sent: 18 October 2011 11:05 To: Rules Users List Subject: Re: [rules-users] Help! Activations firing out of salience order There used to be a subtle bug in the PriorityHeapQueue containing the activations. See https://issues.jboss.org/browse/JBRULES-3044 -W 2011/10/18 Swindells, Thomas tswinde...@nds.commailto:tswinde...@nds.com In our project we have been experiencing a large number of intermittent unit test failures when we are testing our rules (on drools 5.1.1). After a lot of debugging, examining our rules for logic errors, experimenting and generally scratching our head trying to work out what is wrong, we have noticed that sometimes (but very intermittently) activations are firing in the wrong order. In our rulebase we have two rules, Rule A salience 80 and Rule B salience 70. Whilst debugging we made Rule A and B are identical other than rule B having some additional constraints on the end. Dumping out the agenda events we have observed the following actions occurring: BEFORE_FIRED rule X CREATED_ACTIVATION Rule A CREATED_ACTIVATION Rule B AFTER_FIRED rule X ... (no references to either rule/activation) BEFORE_FIRED Rule B CANCELLED Rule A AFTER_FIRED Rule B How can Rule B be firing before Rule A when both activations exist? Does anybody know of any bugs in 5.1.1 that may be causing this? We have a branch of code on 5.3 and that also has had intermittent unit test failures, we've not had chance to examine whether this is the same pattern or just a different logic issue. Please help, Thomas ** This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmas...@nds.commailto:postmas...@nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary. NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00 ** ___ rules-users mailing list rules-users@lists.jboss.orgmailto: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] Help! Activations firing out of salience order
This was a duplicate of https://issues.jboss.org/browse/JBRULES-3111 that was fixed last week. It will be released in 5.3.0.final. Edson 2011/10/18 Swindells, Thomas tswinde...@nds.com Ouch looks like we and anybody on 5.1.1 needs to desperately update then.* *** Though I am rather concerned by this issue https://issues.jboss.org/browse/JBRULES-3211 “Rules fires on incorrect condition” – has this been looked at/is the issue correct as a rules engine which fires random rules when it shouldn’t would be problematic! ** ** Thomas ** ** *From:* rules-users-boun...@lists.jboss.org [mailto: rules-users-boun...@lists.jboss.org] *On Behalf Of *Wolfgang Laun *Sent:* 18 October 2011 11:05 *To:* Rules Users List *Subject:* Re: [rules-users] Help! Activations firing out of salience order ** ** There used to be a subtle bug in the PriorityHeapQueue containing the activations. See https://issues.jboss.org/browse/JBRULES-3044 -W 2011/10/18 Swindells, Thomas tswinde...@nds.com In our project we have been experiencing a large number of intermittent unit test failures when we are testing our rules (on drools 5.1.1). After a lot of debugging, examining our rules for logic errors, experimenting and generally scratching our head trying to work out what is wrong, we have noticed that sometimes (but very intermittently) activations are firing in the wrong order. In our rulebase we have two rules, Rule A salience 80 and Rule B salience 70. Whilst debugging we made Rule A and B are identical other than rule B having some additional constraints on the end. Dumping out the agenda events we have observed the following actions occurring: BEFORE_FIRED rule X CREATED_ACTIVATION Rule A CREATED_ACTIVATION Rule B AFTER_FIRED rule X … (no references to either rule/activation) BEFORE_FIRED Rule B CANCELLED Rule A AFTER_FIRED Rule B How can Rule B be firing before Rule A when both activations exist? Does anybody know of any bugs in 5.1.1 that may be causing this? We have a branch of code on 5.3 and that also has had intermittent unit test failures, we’ve not had chance to examine whether this is the same pattern or just a different logic issue. Please help, Thomas ** ** -- ** This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmas...@nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary. NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00 ** ___ 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 -- Edson Tirelli JBoss Drools Core Development JBoss by Red Hat @ www.jboss.com ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help with URL resource caching
I'm using KnowledgeAgent to poll regularly for three DRL files hosted on a web server. If the web server goes down for any reason or one of the DRL files becomes unavailable, the change scanner and knowledge agent unsubscribe from the resource(s) that were unavailable. After reading some topics on the forum, I found that setting the drools.resource.urlcache system property should correct this. However, I've been unable to get this to work properly. The code I'm using is below. Any insight into what I'm doing wrong would be appreciated. I'm using drools 5.1.1. System.setProperty(drools.dateformat, MM/dd/); System.setProperty(drools.resource.urlcache, C:\\Users\\000\\Documents\\rule-cache); //start the scanner service and resource change notifier service changeNotifier = ResourceFactory.getResourceChangeNotifierService(); changeScanner = ResourceFactory.getResourceChangeScannerService(); changeNotifier.start(); changeScanner.start(); kagent = KnowledgeAgentFactory.newKnowledgeAgent(My Knowledge Agent); URL url = RulesRuntimeImpl.class.getResource(CHANGE_SET_PATH); Resource drl = ResourceFactory.newUrlResource(url); kagent.applyChangeSet(drl); My change set file looks like this: 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 drools-change-set-5.0.xsd add resource source=http://mysite.com/test/FirstDecisionTable.drl; type=DRL / resource source=http://mysite.com/test/SecondDecisionTable.drl; type=DRL / resource source=http://mysite.com/test/ThirdDecisionTable.drl; type=DRL / /add /change-set and the output I get when a resource in the change set becomes unavailable: [9/21/11 10:49:28:015 EDT] 004e SystemOut O [2011:09:264 10:09:15:debug] ResourceChangeScanner attempt to scan 3 resources [9/21/11 10:49:28:046 EDT] 004e SystemOut O [2011:09:264 10:09:46:debug] ResourceChangeScanner thread is waiting for 60 seconds. [9/21/11 10:50:28:055 EDT] 004e SystemOut O [2011:09:264 10:09:55:debug] ResourceChangeScanner attempt to scan 3 resources [9/21/11 10:50:28:259 EDT] 004e SystemOut O [2011:09:264 10:09:259:debug] ResourceChangeScanner removed resource=[UrlResource path='http://mysite.com/test/FirstDecisionTable.drl'] [9/21/11 10:50:28:309 EDT] 004e SystemOut O [2011:09:264 10:09:309:debug] ResourceChangeNotification received ChangeSet notification [9/21/11 10:50:28:345 EDT] 004e SystemOut O [2011:09:264 10:09:345:debug] ResourceChangeScanner thread is waiting for 60 seconds. [9/21/11 10:50:28:426 EDT] 004f SystemOut O [2011:09:264 10:09:417:debug] ResourceChangeNotification processing ChangeSet [9/21/11 10:50:28:535 EDT] 004f SystemOut O [2011:09:264 10:09:535:debug] ResourceChangeNotification ChangeSet removed resource=[UrlResource path='http://mysite.com/test/FirstDecisionTable.drl'] for listener=org.drools.agent.impl.KnowledgeAgentImpl@6e5a6e5a [9/21/11 10:50:28:560 EDT] 004f SystemOut O [2011:09:264 10:09:560:debug] KnowledgeAgent received ChangeSet changed notification [9/21/11 10:50:28:611 EDT] 004f SystemOut O [2011:09:264 10:09:611:debug] ResourceChangeNotification thread is waiting for queue update [9/21/11 10:50:28:626 EDT] 0050 SystemOut O [2011:09:264 10:09:625:info] KnowledgeAgent applying ChangeSet [9/21/11 10:50:28:663 EDT] 0050 SystemOut O [2011:09:264 10:09:663:debug] KnowledgeAgent removing mappings for resource=[UrlResource path='http://mysite.com/test/FirstDecisionTable.drl'] with unsubscribe=true [9/21/11 10:50:28:684 EDT] 0050 SystemOut O [2011:09:264 10:09:684:debug] KnowledgeAgent notifier unsubscribing to resource=[UrlResource path='http://mysite.com/test/FirstDecisionTable.drl'] [9/21/11 10:50:28:689 EDT] 0050 SystemOut O [2011:09:264 10:09:689:debug] ResourceChangeNotification unsubscribing listener=org.drools.agent.impl.KnowledgeAgentImpl@6e5a6e5a to resource=[UrlResource path='http://mysite.com/test/FirstDecisionTable.drl'] [9/21/11 10:50:28:689 EDT] 0050 SystemOut O [2011:09:264 10:09:689:debug] KnowledgeAgent rebuilding KnowledgeBase using ChangeSet ... -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-URL-resource-caching-tp3362041p3362041.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with URL resource caching
Ah, I found my problem. There was an issue with the builds, and my latest changes weren't being applied to the environment I was testing in. I've got it working with the code I posted above. Thanks. -- View this message in context: http://drools.46999.n3.nabble.com/Help-with-URL-resource-caching-tp3362041p3362216.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help needed
prasad.pbc wrote: Hi Guys, Iam using Eclipse tool for writing drl , i have written drl . Then i have written an ant script to convert this drl to PKG . i have used drools5.1.1.jars. i was sucessfully convert drl to pkg. knowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newFileResource( c:/Sample.pkg ), ResourceType.PKG ); iam getting below error: java.lang.ClassCastException: org.drools.reteoo.ReteooRuleBase cannot be cast to org.drools.rule.Package at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:487) at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:28) at com.test.rules.MyRulesEngine.init(MyRulesEngine.java:51) at com.test.rules.MyRulesEngine.getInstance(MyRulesEngine.java:39) at com.test.rules.MyRulesExecuter.main(MyRulesExecuter.java:38) Can anybody help resolving my problem.. Thanks prasad Based on the stack trace I would guess that the file Sample.pkg contains a serialized KnowledgeBase and not a serialized KnowledgePackage. Maybe you could try to do your export like this: KnowledgeBase kbase = ...; KnowledgePackage kpackage = kbase.getKnowledgePackages().iterator().next(); FileOutputStream fos = new FileOutputStream(new File(c:/Sample.pkg)); DroolsStreamUtils.streamOut(fos, kpackage); /Mattias -- View this message in context: http://drools.46999.n3.nabble.com/Help-needed-tp3224168p3234832.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] help! rulerule_key failed to predicate
hello,everyone! I wrote a rule with Drools, I compile the program and get the errors as follows: [3,0]: [ERR 103] Line 3:0 rule 'rule_key' failed predicate: {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in rule [3,9]: [ERR 101] Line 3:9 no viable alternative at input 'com' in rule package [7,0]: [ERR 101] Line 7:0 no viable alternative at input 'import' in rule package in rule sample I don't know how it happened, looking forward to your reply! thank you !!! PS: My rules are here: dialect mvel package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#give the authority and execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good);#actions end ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help! rulerule_key failed to predicate
Hi, I thnik you might need to reposition dialect = mvel. The compiling error will go away if you put it inside each of your rules. See example: rule system will execute 'tc' command when dialect mvel eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#give the authority and execute the tc command end rule caution dialect mvel when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network dialect mvel when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good);#actions end Also, mvel is needed to make the eval statement work. In your case, it might not be needed to work with eval at all. WHEN Server.message should work as well. Providing you have an attribute message in Server with a getter defined. Regards, Frank 赵慧 wrote: hello,everyone! I wrote a rule with Drools, I compile the program and get the errors as follows: [3,0]: [ERR 103] Line 3:0 rule 'rule_key' failed predicate: {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in rule [3,9]: [ERR 101] Line 3:9 no viable alternative at input 'com' in rule package [7,0]: [ERR 101] Line 7:0 no viable alternative at input 'import' in rule package in rule sample I don't know how it happened, looking forward to your reply! thank you !!! PS: My rules are here: dialect mvel package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#give the authority and execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good);#actions end ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-help-rule-rule-key-failed-to-predicate-tp2823695p2823722.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help! rulerule_key failed to predicate
The package declaration must be first. You don't have to insert the dialect attribute into each rule. Please consult the manual when programming. -W 2011/4/15 赵慧 zh...@hpnl.ac.cn hello,everyone! I wrote a rule with Drools, I compile the program and get the errors as follows: [3,0]: [ERR 103] Line 3:0 rule 'rule_key' failed predicate: {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in rule [3,9]: [ERR 101] Line 3:9 no viable alternative at input 'com' in rule package [7,0]: [ERR 101] Line 7:0 no viable alternative at input 'import' in rule package in rule sample I don't know how it happened, looking forward to your reply! thank you !!! PS: My rules are here: dialect mvel package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#give the authority and execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good);#actions 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] help! rulerule_key failed to predicate
How can we help you if you don't show us the text of your .drl file? All I can see is that the DRL parser could not find rule (failing several other alternatives) and then found the identifier com and didn't know what to do with it. This happens in line 4, position 0 (a misspelled import?) and 9 (com). -W 2011/4/13 赵慧 zh...@hpnl.ac.cn hi,thank you very much for helping me with the problem.nevertheless,I have got another error. I compile the program and get the errors as follows: [4,0]: [ERR 103] Line 4:0 rule 'rule_key' failed predicate: {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in rule [4,9]: [ERR 101] Line 4:9 no viable alternative at input 'com' in rule package I don't know how it happened, looking forward to your reply! thank you !!! Try adding 'dialect mvel' (no single quotes) after the rule name to the top of each of the rules. I have seen this error before and doing this resolved the issue. hello,everyone!I wrote a rule with Drools,but the error told me that the field Server.Message is not visible, I can't find how it happens. Please help me, I am almost exhausted with it. thank you. the rules are as follows: package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good); #actions 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 ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] help! the field *** is not visible
hello,everyone!I wrote a rule with Drools,but the error told me that the field Server.Message is not visible, I can't find how it happens. Please help me, I am almost exhausted with it. thank you. the rules are as follows: package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good);#actions end ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help! the field *** is not visible
A better approach would be to use:- rule system will execute 'tc' command when Server(message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#execute the tc command end This assumes you insert Server facts into working memory and they have a getMessage property. Normally you'd use eval when you are unable to leverage DRL. Their use is normally discouraged. Also, your usage is incorrect; please read the documentation. With kind regards, Mike 2011/4/12 赵慧 zh...@hpnl.ac.cn hello,everyone!I wrote a rule with Drools,but the error told me that the field Server.Message is not visible, I can't find how it happens. Please help me, I am almost exhausted with it. thank you. the rules are as follows: package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good);#actions 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] help! the field *** is not visible
Try adding 'dialect mvel' (no single quotes) after the rule name to the top of each of the rules. I have seen this error before and doing this resolved the issue. hello,everyone!I wrote a rule with Drools,but the error told me that the field Server.Message is not visible, I can't find how it happens. Please help me, I am almost exhausted with it. thank you. the rules are as follows: package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good); #actions end ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help! the field *** is not visible
Still, accessing the class field com.sample.Server.Message in eval() in this way is almost certainly not a good approach. But note that dialect mvel may be written preceding all the rules it should apply to. -W On 12 April 2011 14:38, John Peterson john.peterson.g...@statefarm.comwrote: Try adding 'dialect mvel' (no single quotes) after the rule name to the top of each of the rules. I have seen this error before and doing this resolved the issue. hello,everyone!I wrote a rule with Drools,but the error told me that the field Server.Message is not visible, I can't find how it happens. Please help me, I am almost exhausted with it. thank you. the rules are as follows: package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good); #actions 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
[rules-users] help! rulerule_key failed to predicate
hi,thank you very much for helping me with the problem.nevertheless,I have got another error. I compile the program and get the errors as follows: [4,0]: [ERR 103] Line 4:0 rule 'rule_key' failed predicate: {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in rule [4,9]: [ERR 101] Line 4:9 no viable alternative at input 'com' in rule package I don't know how it happened, looking forward to your reply! thank you !!! Try adding 'dialect mvel' (no single quotes) after the rule name to the top of each of the rules. I have seen this error before and doing this resolved the issue. hello,everyone!I wrote a rule with Drools,but the error told me that the field Server.Message is not visible, I can't find how it happens. Please help me, I am almost exhausted with it. thank you. the rules are as follows: package com.sample import com.sample.Server; rule system will execute 'tc' command when eval(Server.Message8388608) then System.out.println(The network is so crowd that it needs repairing.); Runtime.getRuntime().exec(tc);#execute the tc command end rule caution when eval(Server.Message==8388608) then System.out.println(caution!The network maybe will get blocked very soon.); end rule fluent network when eval(Server.Message8388608)#conditions then System.out.println(the current network is very good); #actions 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
[rules-users] Help with Accumulate function
Hi, I am having trouble implementing this rule with the accumulate function. My rule requirement is - Aggregate all PnlAttributionAmounts with a type of UNEXPLAINED for all Positions for a given day. Below is the code I have for this - $position : Position(date == $currDate) $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) $totalPnlAttibAmt : BigDecimal() from accumulate( PositionPnlAttributionAmount(positionPnlAmount == $posPnlAmt, attributionAmountType == $attibAmtType, $pnlAttibAmt : financialValue) ,sum($pnlAttibAmt) ) eval ($totalPnlAttibAmt 1000) When I do it this way, the rule gets executed 6 times, basically for every fact that evaluated to true. How do I restrict this? The rule should be executed only if the final eval results in true. Thanks for any help, Dwipin. -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-with-Accumulate-function-tp2789194p2789194.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
Re: [rules-users] Help with Accumulate function
Repeated firing may be due to there being more than one scope for accumulating the sum, as selected by the patterns leading up to the accumulate. If you take only the patterns preceding the accumulate - how often does this fire and for which elements? You need a single combination of $posPnlAm and $attibAmtType. -W On 7 April 2011 08:44, dwipin dwipi...@tcs.com wrote: Hi, I am having trouble implementing this rule with the accumulate function. My rule requirement is - Aggregate all PnlAttributionAmounts with a type of UNEXPLAINED for all Positions for a given day. Below is the code I have for this - $position : Position(date == $currDate) $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) $totalPnlAttibAmt : BigDecimal() from accumulate( PositionPnlAttributionAmount(positionPnlAmount == $posPnlAmt, attributionAmountType == $attibAmtType, $pnlAttibAmt : financialValue) ,sum($pnlAttibAmt) ) eval ($totalPnlAttibAmt 1000) When I do it this way, the rule gets executed 6 times, basically for every fact that evaluated to true. How do I restrict this? The rule should be executed only if the final eval results in true. Thanks for any help, Dwipin. -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-with-Accumulate-function-tp2789194p2789194.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 ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with Accumulate function
Without the accumulate function, following is the fire occurrence- $position : Position() - 2 $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) - 2 ( with all above facts) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) - 2 ( with all above facts) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) - 3 ( with all above facts) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) - 2 (just this fact) All of them together without the accumulate fires it 6 times. Dwipin From: Wolfgang Laun wolfgang.l...@gmail.com To: Rules Users List rules-users@lists.jboss.org Date: 04/07/2011 01:16 PM Subject: Re: [rules-users] Help with Accumulate function Sent by: rules-users-boun...@lists.jboss.org Repeated firing may be due to there being more than one scope for accumulating the sum, as selected by the patterns leading up to the accumulate. If you take only the patterns preceding the accumulate - how often does this fire and for which elements? You need a single combination of $posPnlAm and $attibAmtType. -W On 7 April 2011 08:44, dwipin dwipi...@tcs.com wrote: Hi, I am having trouble implementing this rule with the accumulate function. My rule requirement is - Aggregate all PnlAttributionAmounts with a type of UNEXPLAINED for all Positions for a given day. Below is the code I have for this - $position : Position(date == $currDate) $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) $totalPnlAttibAmt : BigDecimal() from accumulate( PositionPnlAttributionAmount(positionPnlAmount == $posPnlAmt, attributionAmountType == $attibAmtType, $pnlAttibAmt : financialValue) ,sum($pnlAttibAmt) ) eval ($totalPnlAttibAmt 1000) When I do it this way, the rule gets executed 6 times, basically for every fact that evaluated to true. How do I restrict this? The rule should be executed only if the final eval results in true. Thanks for any help, Dwipin. -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-with-Accumulate-function-tp2789194p2789194.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 ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users =-=-= Notice: The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited. If you have received this communication in error, please notify us by reply e-mail or telephone and immediately and permanently delete the message and any attachments. Thank you ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help with Accumulate function
The issue here is that the accumulation has to happen at a higher level in the object hierarchy, Position in this case. However, this is no direct link between Position and PostitionPnlAttributionAmount ( which is being accumulated). How do I tackle such a scenario? Thanks, Dwipin. -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-with-Accumulate-function-tp2789194p2789411.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
Re: [rules-users] Help with Accumulate function
Well, this explains it - you'll have to find the selecting combination of $posPnlAmt and $attibAmtType in a unique way, assuming there is just one such combination. -W 2011/4/7 Dwipin C dwipi...@tcs.com Without the accumulate function, following is the fire occurrence- $position : Position() - 2 $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) - 2 ( with all above facts) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) - 2 ( with all above facts) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) - 3 ( with all above facts) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) - 2 (just this fact) All of them together without the accumulate fires it 6 times. Dwipin From: Wolfgang Laun wolfgang.l...@gmail.com To: Rules Users List rules-users@lists.jboss.org Date: 04/07/2011 01:16 PM Subject: Re: [rules-users] Help with Accumulate function Sent by: rules-users-boun...@lists.jboss.org Repeated firing may be due to there being more than one scope for accumulating the sum, as selected by the patterns leading up to the accumulate. If you take only the patterns preceding the accumulate - how often does this fire and for which elements? You need a single combination of $posPnlAm and $attibAmtType. -W On 7 April 2011 08:44, dwipin dwipi...@tcs.com wrote: Hi, I am having trouble implementing this rule with the accumulate function. My rule requirement is - Aggregate all PnlAttributionAmounts with a type of UNEXPLAINED for all Positions for a given day. Below is the code I have for this - $position : Position(date == $currDate) $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) $totalPnlAttibAmt : BigDecimal() from accumulate( PositionPnlAttributionAmount(positionPnlAmount == $posPnlAmt, attributionAmountType == $attibAmtType, $pnlAttibAmt : financialValue) ,sum($pnlAttibAmt) ) eval ($totalPnlAttibAmt 1000) When I do it this way, the rule gets executed 6 times, basically for every fact that evaluated to true. How do I restrict this? The rule should be executed only if the final eval results in true. Thanks for any help, Dwipin. -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-with-Accumulate-function-tp2789194p2789194.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 ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users =-=-= Notice: The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited. If you have received this communication in error, please notify us by reply e-mail or telephone and immediately and permanently delete the message and any attachments. Thank you ___ 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] Help with Accumulate function
One way to exclude siblings for a fact X is to use a constraint such as there is no other X with an identifying, comparable id than the only one I want. X( $id: id, $interesting: interesting ) not X( id $id ) -W On 7 April 2011 10:37, Wolfgang Laun wolfgang.l...@gmail.com wrote: Well, this explains it - you'll have to find the selecting combination of $posPnlAmt and $attibAmtType in a unique way, assuming there is just one such combination. -W 2011/4/7 Dwipin C dwipi...@tcs.com Without the accumulate function, following is the fire occurrence- $position : Position() - 2 $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) - 2 ( with all above facts) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) - 2 ( with all above facts) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) - 3 ( with all above facts) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) - 2 (just this fact) All of them together without the accumulate fires it 6 times. Dwipin From: Wolfgang Laun wolfgang.l...@gmail.com To: Rules Users List rules-users@lists.jboss.org Date: 04/07/2011 01:16 PM Subject: Re: [rules-users] Help with Accumulate function Sent by: rules-users-boun...@lists.jboss.org Repeated firing may be due to there being more than one scope for accumulating the sum, as selected by the patterns leading up to the accumulate. If you take only the patterns preceding the accumulate - how often does this fire and for which elements? You need a single combination of $posPnlAm and $attibAmtType. -W On 7 April 2011 08:44, dwipin dwipi...@tcs.com wrote: Hi, I am having trouble implementing this rule with the accumulate function. My rule requirement is - Aggregate all PnlAttributionAmounts with a type of UNEXPLAINED for all Positions for a given day. Below is the code I have for this - $position : Position(date == $currDate) $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) $totalPnlAttibAmt : BigDecimal() from accumulate( PositionPnlAttributionAmount(positionPnlAmount == $posPnlAmt, attributionAmountType == $attibAmtType, $pnlAttibAmt : financialValue) ,sum($pnlAttibAmt) ) eval ($totalPnlAttibAmt 1000) When I do it this way, the rule gets executed 6 times, basically for every fact that evaluated to true. How do I restrict this? The rule should be executed only if the final eval results in true. Thanks for any help, Dwipin. -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-with-Accumulate-function-tp2789194p2789194.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 ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users =-=-= Notice: The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited. If you have received this communication in error, please notify us by reply e-mail or telephone and immediately and permanently delete the message and any attachments. Thank you ___ 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] Help with Accumulate function
Thanks Wolfgang. The issue here is that the accumulation has to happen at a higher level in the object hierarchy, Position in this case. However, this is no direct link between Position and PostitionPnlAttributionAmount ( which is being accumulated). How do I tackle such a scenario? $attibAmtType will be just one for the condition given, but there could be multiple $posPnlAmt within a Position. Thanks, Dwipin From: Wolfgang Laun wolfgang.l...@gmail.com To: Rules Users List rules-users@lists.jboss.org Date: 04/07/2011 02:08 PM Subject: Re: [rules-users] Help with Accumulate function Sent by: rules-users-boun...@lists.jboss.org Well, this explains it - you'll have to find the selecting combination of $posPnlAmt and $attibAmtType in a unique way, assuming there is just one such combination. -W 2011/4/7 Dwipin C dwipi...@tcs.com Without the accumulate function, following is the fire occurrence- $position : Position() - 2 $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) - 2 ( with all above facts) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) - 2 ( with all above facts) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) - 3 ( with all above facts) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) - 2 (just this fact) All of them together without the accumulate fires it 6 times. Dwipin From: Wolfgang Laun wolfgang.l...@gmail.com To: Rules Users List rules-users@lists.jboss.org Date: 04/07/2011 01:16 PM Subject: Re: [rules-users] Help with Accumulate function Sent by: rules-users-boun...@lists.jboss.org Repeated firing may be due to there being more than one scope for accumulating the sum, as selected by the patterns leading up to the accumulate. If you take only the patterns preceding the accumulate - how often does this fire and for which elements? You need a single combination of $posPnlAm and $attibAmtType. -W On 7 April 2011 08:44, dwipin dwipi...@tcs.com wrote: Hi, I am having trouble implementing this rule with the accumulate function. My rule requirement is - Aggregate all PnlAttributionAmounts with a type of UNEXPLAINED for all Positions for a given day. Below is the code I have for this - $position : Position(date == $currDate) $posScn : PositionScenario(scenario == 'SCEN-EOD', position == $position ) $posScnGrp : PositionScenarioCurrencyGroup(positionScenario == $posScn, currencyType == CurrencyTypes.TRANSACTIONAL) $posPnlAmt : PositionPnlAmount(pnlAmountType == DTD, positionScenarioCurrencyGroup == $posScnGrp) $attibAmtType : AttributionAmountType(attributionAmountType == UNEXPLAINED/RESIDUALPNL) $totalPnlAttibAmt : BigDecimal() from accumulate( PositionPnlAttributionAmount(positionPnlAmount == $posPnlAmt, attributionAmountType == $attibAmtType, $pnlAttibAmt : financialValue) ,sum($pnlAttibAmt) ) eval ($totalPnlAttibAmt 1000) When I do it this way, the rule gets executed 6 times, basically for every fact that evaluated to true. How do I restrict this? The rule should be executed only if the final eval results in true. Thanks for any help, Dwipin. -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-with-Accumulate-function-tp2789194p2789194.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 ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users =-=-= Notice: The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited. If you have received this communication in error, please notify us by reply e-mail or telephone and immediately and permanently delete the message and any attachments. Thank you ___ 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 =-=-= Notice: The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information. If you are not the intended recipient, any dissemination, use, review
Re: [rules-users] Help needed in configuring drools guvnor with MySql
Hello, and does your procedure work for Postgres ? Thanks Nicolas - Nicolas Héron -- View this message in context: http://drools.46999.n3.nabble.com/Help-needed-in-configuring-drools-guvnor-with-MySql-tp844676p2791862.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] HELP - Problem creating package -validateUniqueRuleNames(PackageBuilder.java:830)
All my rules worked fine with Drools 3. NowI am trying to upgrade to Drools 5. I am using the following jar files to create binary (jar) files for my rules from command line: antlr-runtime.jar, drools-api.jar, drools-compiler.jar, drools-core.jar, drools-decisiontables.jar, drools-jsr94.jar, drools-templates.jar, janino-2.5.15.jar, joda-time.jar, jsr94.jar, jxl.jar, mvel2.jar, xpp3.jar, xpp3_min.jar, xstream.jar, org.eclipse.jdt.core_3.6.1.v_A68_R36x.jar This is my DSLR: package cit.coverage; expander Coverage.dsl rule rrr auto-focus true when He is nice then He is happy end This is my DSL Coverage.dsl: [condition][]He is nice=eval(true) [consequence][]He is happy=eval(System.out.println(HA HA)) I am trying to create binary(jars) using the following code: KnowledgeBuilderConfiguration kbc = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); kbc.setProperty(drools.dialect.java.compiler, JANINO); KnowledgeBuilder builder = null; builder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbc); Reader drlSource = new InputStreamReader(RVEngine.class.getResourceAsStream(ruleset.getDrlSourc e())); //ruleset.getDrlSource() = com/cit/myDrl.dslr Reader dslSource = new InputStreamReader(RVEngine.class.getResourceAsStream(ruleset.getDslSourc e())); builder.add(ResourceFactory.newReaderResource(dslSource), ResourceType.DSL); builder.add(ResourceFactory.newReaderResource(drlSource), ResourceType.DSLR); -- problem KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(builder.getKnowledgePackages()); no matter what I type in my dslr (drl) file I get the following exception on the highlighted line; I have 1 rule or 0 rule it still throws the same exception. Does it have to do with any jar files? Caused by: java.lang.NullPointerException at org.drools.compiler.PackageBuilder.validateUniqueRuleNames(PackageBuilde r.java:830) at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:555) at org.drools.compiler.PackageBuilder.addPackageFromDslr(PackageBuilder.jav a:355) at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.j ava:461) at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.ja va:28) saleem -Original Message- From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Wolfgang Laun Sent: Friday, March 04, 2011 2:14 AM To: Rules Users List Subject: Re: [rules-users] Problem creating package -validateUniqueRuleNames(PackageBuilder.java:830) It could be an error in the DSL file. Check for errors after *each* builder.add(...). -W 2011/3/4 Saleem Lakhani saleem.lakh...@citizensfla.com: Following is my code: KnowledgeBuilderConfiguration kbc = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); kbc.setProperty(drools.dialect.java.compiler, JANINO); KnowledgeBuilder builder = null; builder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbc); Reader drlSource = new InputStreamReader(RVEngine.class.getResourceAsStream(ruleset.getDrlSourc e())); //ruleset.getDrlSource() = com/cit/myDrl.dslr Reader dslSource = new InputStreamReader(RVEngine.class.getResourceAsStream(ruleset.getDslSourc e())); builder.add(ResourceFactory.newReaderResource(dslSource), ResourceType.DSL); builder.add(ResourceFactory.newReaderResource(drlSource), ResourceType.DSLR); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(builder.getKnowledgePackages()); no matter what I type in my dslr (drl) file I get the following exception on the highlighted line; ANY IDEA I have 1 rule or No rule it still throws the same exception. Does it have to do with any jar files? Caused by: java.lang.NullPointerException at org.drools.compiler.PackageBuilder.validateUniqueRuleNames(PackageBuilde r.java:830) at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:555) at org.drools.compiler.PackageBuilder.addPackageFromDslr(PackageBuilder.jav a:355) at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.j ava:461) at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.ja va:28) saleem ___ 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
Re: [rules-users] HELP - Problem creating package -validateUniqueRuleNames(PackageBuilder.java:830)
2011/3/4 Sale This is my DSLR: package cit.coverage; expander Coverage.dsl rule rrr auto-focus true when He is nice then He is happy end *This is my DSL** Coverage.dsl**:* [condition][]He is nice=eval(true) [consequence][]He is happy=eval(System.out.println(HA HA)) This is not a correct Java statement, as it should be for the consequence: - eval() is not valid here - There is no semicolon at the end This would be correct: [consequence][]He is happy=System.out.println(HA HA); The NPE should be gone in 5.2.0. -W ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] HELP - Problem creating package-validateUniqueRuleNames(PackageBuilder.java:830)
Sorry .. no use. I made those changes but nothing different. I'll try 5.2. saleem From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Wolfgang Laun Sent: Friday, March 04, 2011 11:28 AM To: Rules Users List Subject: Re: [rules-users] HELP - Problem creating package-validateUniqueRuleNames(PackageBuilder.java:830) 2011/3/4 Sale This is my DSLR: package cit.coverage; expander Coverage.dsl rule rrr auto-focus true when He is nice then He is happy end This is my DSL Coverage.dsl: [condition][]He is nice=eval(true) [consequence][]He is happy=eval(System.out.println(HA HA)) This is not a correct Java statement, as it should be for the consequence: - eval() is not valid here - There is no semicolon at the end This would be correct: [consequence][]He is happy=System.out.println(HA HA); The NPE should be gone in 5.2.0. -W ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help with diagnosing CEP performance issue
ah, events werent being evicted because RHS was only evaluated during fire(), which was after a batch. i have altered my test code according to your suggestion, to look like this: public void testLargeBatches() { Node node1 = new Node(node 1); node1.setId(1L); s.insert(node1); clock.advanceTime(1L, TimeUnit.DAYS); int batchSize = 4; int daysToRun = 10; ArrayListBackup batch = new ArrayListBackup(batchSize); ArrayListLong nodeIds = new ArrayListLong(); nodeIds.add(1L); DateTime engineTime; long start; long accumulated = 0; long currentTime; long eventTime; long delta; System.err.println(days: +daysToRun+. batch: +batchSize+. rules: +ruleFile); for (int i=0; idaysToRun; i++) { engineTime = new DateTime(clock.getCurrentTime(), DateTimeZone.UTC); batch.clear(); //generate random System.err.println(preparing batch + i); BackupGenerationUtil.fillBackupBatch(batch, nodeIds, engineTime.minusHours(23).minusMinutes(59).minusSeconds(59), engineTime.minusSeconds(1), batchSize); System.err.println(feeding batch +i); start = System.currentTimeMillis(); currentTime = clock.getCurrentTime(); //feed the batch in for (Backup b : batch) { eventTime = b.getFinished().getTime(); delta = (eventTime-currentTime); clock.advanceTime(delta, TimeUnit.MILLISECONDS); currentTime = clock.getCurrentTime(); backupStream.insert(b); s.fireAllRules(); } //advance a day (whats left of it) delta = engineTime.plusDays(1).getMillis()-currentTime; clock.advanceTime(delta, TimeUnit.MILLISECONDS); s.fireAllRules(); accumulated += (System.currentTimeMillis() - start); System.err.println(batch complete +i); } long averageBatchProcessingTime = (long)(accumulated/(double)daysToRun); double perBackupEventTime = ((double)accumulated)/(batchSize*daysToRun); int eventsPerSecond = (int)(1000D/perBackupEventTime); System.err.println(average batch processing time is +averageBatchProcessingTime+ which is +perBackupEventTime+/event or +eventsPerSecond+ events/second); } the batch is now ordered by event end time (inside fillBackupBatch() ), the clock is advanced to the end of each event as it is processed and rules are fired after each insertion. this code will eventually be run inside a j2ee environment so i would rather not use fireUntilHalt() (also, using it maxed-out a single core - does it do busy-waiting internally?!). also, the batch nature is by design. the system will process events in a batch fashion, not truly one by one. in production there will be many such batches per day, but they could be very sizable. for 40K events/day over 10 days, the above code (on my machine) lands me 59K events/sec without the 2nd rule and 5300 events/sec with the second rule. while this is an improvement of x2-x3 compared to my prev. code (24k without the 2nd rule and 1400 with), for which i am very glad, i still cannot understand why the 2nd rule slows me down by x10. anything else i might do to get the performance if the 2 rules close to the performance of the single rule? 2010/12/26 Wolfgang Laun wolfgang.l...@gmail.com You are inserting a day's worth of backup events at a time. In this loop the engine is forced to evaluate both rules, for an ever-increasing number of events. It's the second rule that requires a comparison between any two backup events, and this causes a quadratic increment in processing time. CEP is short for continuous event processing, and that's what you should let the engine do, i.e., not only evaluate the conditions but also the execute the consequences. This is done by calling fireAllRules() after each insertion. Alternatively, consider running fireUntilHalt() in once thread and insert in another thread. Ideally, the test should generate events ordered by time, and the pseudo-clock might be advanced due to the time stamp in the generated events. This would give you a very close approximation to a production run. -W 2010/12/26 radai radai.rosenbl...@gmail.com well, fixed now :-) the benchmark (part of a junit) looks like this: protected void init() { KnowledgeBuilderConfiguration bConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(bConf); builder.add(...); KnowledgeBaseConfiguration kbConf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kbConf.setOption( EventProcessingOption.STREAM ); //todo - turn this on when https://issues.jboss.org/browse/JBRULES-2845 is fixed
Re: [rules-users] help with diagnosing CEP performance issue
well, fixed now :-) the benchmark (part of a junit) looks like this: protected void init() { KnowledgeBuilderConfiguration bConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(bConf); builder.add(...); KnowledgeBaseConfiguration kbConf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kbConf.setOption( EventProcessingOption.STREAM ); //todo - turn this on when https://issues.jboss.org/browse/JBRULES-2845 is fixed //kbConf.setOption( MultithreadEvaluationOption.YES ); kb = KnowledgeBaseFactory.newKnowledgeBase(kbConf); kb.addKnowledgePackages(builder.getKnowledgePackages()); KnowledgeSessionConfiguration sConf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); sConf.setOption(ClockTypeOption.get(pseudo)); Environment env = EnvironmentFactory.newEnvironment(); s = kb.newStatefulKnowledgeSession(sConf ,env); clock = (SessionPseudoClock) s.getSessionClock(); backupStream = s.getWorkingMemoryEntryPoint(Backup Stream); } followed by a test method that looks like this: public void testLargeBatches() { Node node1 = new Node(node 1); node1.setId(1L); s.insert(node1); s.fireAllRules(); clock.advanceTime(1L, TimeUnit.DAYS); s.fireAllRules(); int batchSize = 4; int daysToRun = 1; ArrayListBackup batch = new ArrayListBackup(batchSize); ArrayListLong nodeIds = new ArrayListLong(); nodeIds.add(1L); DateTime engineTime; long start; long accumulated = 0; System.err.println(days: +daysToRun+. batch: +batchSize+. rules: +ruleFile); for (int i=0; idaysToRun; i++) { engineTime = new DateTime(clock.getCurrentTime(), DateTimeZone.UTC); batch.clear(); //generate random BackupGenerationUtil.fillBackupBatch(batch, nodeIds, engineTime.minusHours(23).minusMinutes(59).minusSeconds(59), engineTime.minusSeconds(1), batchSize); start = System.currentTimeMillis(); //feed the batch in for (Backup b : batch) { backupStream.insert(b); } //advance a day and run all rules s.fireAllRules(); clock.advanceTime(1L, TimeUnit.DAYS); s.fireAllRules(); accumulated += (System.currentTimeMillis() - start); } long averageBatchProcessingTime = (long)(accumulated/(double)daysToRun); double perBackupEventTime = ((double)accumulated)/(batchSize*daysToRun); int eventsPerSecond = (int)(1000D/perBackupEventTime); System.err.println(average batch processing time is +averageBatchProcessingTime+ which is +perBackupEventTime+/event or +eventsPerSecond+ events/second); } running this with or without the 2nd trimming rules makes a huge difference. on my machine i can run the non-trimming version in batches of 300K @~2500 events/second @1GB RAM. with the trimming rule i cant get anywhere near that - the above value (40K) is already enough to slow it down to ~1800 events/second, and i dont understand whats so heavy about my attempt to save memory. any help/thoughts/clues would be most welcome. 2010/12/23 Mauricio Salatino sala...@gmail.com hehe yes.. the same happens to me :) 2010/12/23 Wolfgang Laun wolfgang.l...@gmail.com (OT: your nick me is confusing other gmail users. I see your mail as if I had sent it to myself. I was almost binning it.) The delay you see may depend on the way you run the test with 40K events. Please describe the sequence of insertions and calls to fire...(), the session setup (pseudo-clock, etc.) -W 2010/12/23 me radai.rosenbl...@gmail.com Hi. im trying to demo drools-fusion for a system that processes backup events. i have the following 2 CEP rules: rule Backup Not Succeeded For At Least 3 Days @ruleId(1) when Node($id : id) not ( Backup(clientId == $id, $state: state == BackupStateEnum.FINISHED) over window:time( 3d ) from entry-point Backup Stream ) then //nothing for now end rule Prune Previous Successful Backups @ruleId(2) when $prevBackup : Backup($id : clientId, state == BackupStateEnum.FINISHED) from entry-point Backup Stream $newerBackup : Backup(clientId == $id, state == BackupStateEnum.FINISHED, this after $prevBackup) from entry-point Backup Stream then drools.retract($prevBackup); end rule #2 is my attempt to cut down on memory usage. the problem is that rule #2 slows down the processing very very considerably (2 orders of magnitude slower when simulating batches of 40K events/day). what would be my next step in trying to find the reason for it? my intuition tells me that with 2 events in the system at any given time instead of 120K (single node, 40K events/day 3 day window) i
Re: [rules-users] help with diagnosing CEP performance issue
just to be clear, the fixed was only referring to my nick on gmail ... ;-) On Sun, Dec 26, 2010 at 6:24 AM, radai radai.rosenbl...@gmail.com wrote: well, fixed now :-) the benchmark (part of a junit) looks like this: protected void init() { KnowledgeBuilderConfiguration bConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(bConf); builder.add(...); KnowledgeBaseConfiguration kbConf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kbConf.setOption( EventProcessingOption.STREAM ); //todo - turn this on when https://issues.jboss.org/browse/JBRULES-2845 is fixed //kbConf.setOption( MultithreadEvaluationOption.YES ); kb = KnowledgeBaseFactory.newKnowledgeBase(kbConf); kb.addKnowledgePackages(builder.getKnowledgePackages()); KnowledgeSessionConfiguration sConf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); sConf.setOption(ClockTypeOption.get(pseudo)); Environment env = EnvironmentFactory.newEnvironment(); s = kb.newStatefulKnowledgeSession(sConf ,env); clock = (SessionPseudoClock) s.getSessionClock(); backupStream = s.getWorkingMemoryEntryPoint(Backup Stream); } followed by a test method that looks like this: public void testLargeBatches() { Node node1 = new Node(node 1); node1.setId(1L); s.insert(node1); s.fireAllRules(); clock.advanceTime(1L, TimeUnit.DAYS); s.fireAllRules(); int batchSize = 4; int daysToRun = 1; ArrayListBackup batch = new ArrayListBackup(batchSize); ArrayListLong nodeIds = new ArrayListLong(); nodeIds.add(1L); DateTime engineTime; long start; long accumulated = 0; System.err.println(days: +daysToRun+. batch: +batchSize+. rules: +ruleFile); for (int i=0; idaysToRun; i++) { engineTime = new DateTime(clock.getCurrentTime(), DateTimeZone.UTC); batch.clear(); //generate random BackupGenerationUtil.fillBackupBatch(batch, nodeIds, engineTime.minusHours(23).minusMinutes(59).minusSeconds(59), engineTime.minusSeconds(1), batchSize); start = System.currentTimeMillis(); //feed the batch in for (Backup b : batch) { backupStream.insert(b); } //advance a day and run all rules s.fireAllRules(); clock.advanceTime(1L, TimeUnit.DAYS); s.fireAllRules(); accumulated += (System.currentTimeMillis() - start); } long averageBatchProcessingTime = (long)(accumulated/(double)daysToRun); double perBackupEventTime = ((double)accumulated)/(batchSize*daysToRun); int eventsPerSecond = (int)(1000D/perBackupEventTime); System.err.println(average batch processing time is +averageBatchProcessingTime+ which is +perBackupEventTime+/event or +eventsPerSecond+ events/second); } running this with or without the 2nd trimming rules makes a huge difference. on my machine i can run the non-trimming version in batches of 300K @~2500 events/second @1GB RAM. with the trimming rule i cant get anywhere near that - the above value (40K) is already enough to slow it down to ~1800 events/second, and i dont understand whats so heavy about my attempt to save memory. any help/thoughts/clues would be most welcome. 2010/12/23 Mauricio Salatino sala...@gmail.com hehe yes.. the same happens to me :) 2010/12/23 Wolfgang Laun wolfgang.l...@gmail.com (OT: your nick me is confusing other gmail users. I see your mail as if I had sent it to myself. I was almost binning it.) The delay you see may depend on the way you run the test with 40K events. Please describe the sequence of insertions and calls to fire...(), the session setup (pseudo-clock, etc.) -W 2010/12/23 me radai.rosenbl...@gmail.com Hi. im trying to demo drools-fusion for a system that processes backup events. i have the following 2 CEP rules: rule Backup Not Succeeded For At Least 3 Days @ruleId(1) when Node($id : id) not ( Backup(clientId == $id, $state: state == BackupStateEnum.FINISHED) over window:time( 3d ) from entry-point Backup Stream ) then //nothing for now end rule Prune Previous Successful Backups @ruleId(2) when $prevBackup : Backup($id : clientId, state == BackupStateEnum.FINISHED) from entry-point Backup Stream $newerBackup : Backup(clientId == $id, state == BackupStateEnum.FINISHED, this after $prevBackup) from entry-point Backup Stream then drools.retract($prevBackup); end rule #2 is my attempt to cut down on memory usage. the problem is that rule #2 slows down the processing very very considerably (2 orders of magnitude slower when simulating
Re: [rules-users] help with diagnosing CEP performance issue
You are inserting a day's worth of backup events at a time. In this loop the engine is forced to evaluate both rules, for an ever-increasing number of events. It's the second rule that requires a comparison between any two backup events, and this causes a quadratic increment in processing time. CEP is short for continuous event processing, and that's what you should let the engine do, i.e., not only evaluate the conditions but also the execute the consequences. This is done by calling fireAllRules() after each insertion. Alternatively, consider running fireUntilHalt() in once thread and insert in another thread. Ideally, the test should generate events ordered by time, and the pseudo-clock might be advanced due to the time stamp in the generated events. This would give you a very close approximation to a production run. -W 2010/12/26 radai radai.rosenbl...@gmail.com well, fixed now :-) the benchmark (part of a junit) looks like this: protected void init() { KnowledgeBuilderConfiguration bConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(bConf); builder.add(...); KnowledgeBaseConfiguration kbConf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kbConf.setOption( EventProcessingOption.STREAM ); //todo - turn this on when https://issues.jboss.org/browse/JBRULES-2845 is fixed //kbConf.setOption( MultithreadEvaluationOption.YES ); kb = KnowledgeBaseFactory.newKnowledgeBase(kbConf); kb.addKnowledgePackages(builder.getKnowledgePackages()); KnowledgeSessionConfiguration sConf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); sConf.setOption(ClockTypeOption.get(pseudo)); Environment env = EnvironmentFactory.newEnvironment(); s = kb.newStatefulKnowledgeSession(sConf ,env); clock = (SessionPseudoClock) s.getSessionClock(); backupStream = s.getWorkingMemoryEntryPoint(Backup Stream); } followed by a test method that looks like this: public void testLargeBatches() { Node node1 = new Node(node 1); node1.setId(1L); s.insert(node1); s.fireAllRules(); clock.advanceTime(1L, TimeUnit.DAYS); s.fireAllRules(); int batchSize = 4; int daysToRun = 1; ArrayListBackup batch = new ArrayListBackup(batchSize); ArrayListLong nodeIds = new ArrayListLong(); nodeIds.add(1L); DateTime engineTime; long start; long accumulated = 0; System.err.println(days: +daysToRun+. batch: +batchSize+. rules: +ruleFile); for (int i=0; idaysToRun; i++) { engineTime = new DateTime(clock.getCurrentTime(), DateTimeZone.UTC); batch.clear(); //generate random BackupGenerationUtil.fillBackupBatch(batch, nodeIds, engineTime.minusHours(23).minusMinutes(59).minusSeconds(59), engineTime.minusSeconds(1), batchSize); start = System.currentTimeMillis(); //feed the batch in for (Backup b : batch) { backupStream.insert(b); } //advance a day and run all rules s.fireAllRules(); clock.advanceTime(1L, TimeUnit.DAYS); s.fireAllRules(); accumulated += (System.currentTimeMillis() - start); } long averageBatchProcessingTime = (long)(accumulated/(double)daysToRun); double perBackupEventTime = ((double)accumulated)/(batchSize*daysToRun); int eventsPerSecond = (int)(1000D/perBackupEventTime); System.err.println(average batch processing time is +averageBatchProcessingTime+ which is +perBackupEventTime+/event or +eventsPerSecond+ events/second); } running this with or without the 2nd trimming rules makes a huge difference. on my machine i can run the non-trimming version in batches of 300K @~2500 events/second @1GB RAM. with the trimming rule i cant get anywhere near that - the above value (40K) is already enough to slow it down to ~1800 events/second, and i dont understand whats so heavy about my attempt to save memory. any help/thoughts/clues would be most welcome. 2010/12/23 Mauricio Salatino sala...@gmail.com hehe yes.. the same happens to me :) 2010/12/23 Wolfgang Laun wolfgang.l...@gmail.com (OT: your nick me is confusing other gmail users. I see your mail as if I had sent it to myself. I was almost binning it.) The delay you see may depend on the way you run the test with 40K events. Please describe the sequence of insertions and calls to fire...(), the session setup (pseudo-clock, etc.) -W 2010/12/23 me radai.rosenbl...@gmail.com Hi. im trying to demo drools-fusion for a system that processes backup events. i have the following 2 CEP rules: rule Backup Not Succeeded For At Least 3 Days
[rules-users] help with diagnosing CEP performance issue
Hi. im trying to demo drools-fusion for a system that processes backup events. i have the following 2 CEP rules: rule Backup Not Succeeded For At Least 3 Days @ruleId(1) when Node($id : id) not ( Backup(clientId == $id, $state: state == BackupStateEnum.FINISHED) over window:time( 3d ) from entry-point Backup Stream ) then //nothing for now end rule Prune Previous Successful Backups @ruleId(2) when $prevBackup : Backup($id : clientId, state == BackupStateEnum.FINISHED) from entry-point Backup Stream $newerBackup : Backup(clientId == $id, state == BackupStateEnum.FINISHED, this after $prevBackup) from entry-point Backup Stream then drools.retract($prevBackup); end rule #2 is my attempt to cut down on memory usage. the problem is that rule #2 slows down the processing very very considerably (2 orders of magnitude slower when simulating batches of 40K events/day). what would be my next step in trying to find the reason for it? my intuition tells me that with 2 events in the system at any given time instead of 120K (single node, 40K events/day 3 day window) i should have seen either a speedup or reduced memory consumption (if not both) and yet the results im seeing are the exact opposite. is there anything im missing ? i could try adding some sort of LastSuccessfulBackup marker object into main memory and updating it using events from the backup stream, but then how would i express rule #1 ? any help/clues/suggestions would be greatly appreciated, radai. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help with diagnosing CEP performance issue
(OT: your nick me is confusing other gmail users. I see your mail as if I had sent it to myself. I was almost binning it.) The delay you see may depend on the way you run the test with 40K events. Please describe the sequence of insertions and calls to fire...(), the session setup (pseudo-clock, etc.) -W 2010/12/23 me radai.rosenbl...@gmail.com Hi. im trying to demo drools-fusion for a system that processes backup events. i have the following 2 CEP rules: rule Backup Not Succeeded For At Least 3 Days @ruleId(1) when Node($id : id) not ( Backup(clientId == $id, $state: state == BackupStateEnum.FINISHED) over window:time( 3d ) from entry-point Backup Stream ) then //nothing for now end rule Prune Previous Successful Backups @ruleId(2) when $prevBackup : Backup($id : clientId, state == BackupStateEnum.FINISHED) from entry-point Backup Stream $newerBackup : Backup(clientId == $id, state == BackupStateEnum.FINISHED, this after $prevBackup) from entry-point Backup Stream then drools.retract($prevBackup); end rule #2 is my attempt to cut down on memory usage. the problem is that rule #2 slows down the processing very very considerably (2 orders of magnitude slower when simulating batches of 40K events/day). what would be my next step in trying to find the reason for it? my intuition tells me that with 2 events in the system at any given time instead of 120K (single node, 40K events/day 3 day window) i should have seen either a speedup or reduced memory consumption (if not both) and yet the results im seeing are the exact opposite. is there anything im missing ? i could try adding some sort of LastSuccessfulBackup marker object into main memory and updating it using events from the backup stream, but then how would i express rule #1 ? any help/clues/suggestions would be greatly appreciated, radai. ___ 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] help with diagnosing CEP performance issue
hehe yes.. the same happens to me :) 2010/12/23 Wolfgang Laun wolfgang.l...@gmail.com (OT: your nick me is confusing other gmail users. I see your mail as if I had sent it to myself. I was almost binning it.) The delay you see may depend on the way you run the test with 40K events. Please describe the sequence of insertions and calls to fire...(), the session setup (pseudo-clock, etc.) -W 2010/12/23 me radai.rosenbl...@gmail.com Hi. im trying to demo drools-fusion for a system that processes backup events. i have the following 2 CEP rules: rule Backup Not Succeeded For At Least 3 Days @ruleId(1) when Node($id : id) not ( Backup(clientId == $id, $state: state == BackupStateEnum.FINISHED) over window:time( 3d ) from entry-point Backup Stream ) then //nothing for now end rule Prune Previous Successful Backups @ruleId(2) when $prevBackup : Backup($id : clientId, state == BackupStateEnum.FINISHED) from entry-point Backup Stream $newerBackup : Backup(clientId == $id, state == BackupStateEnum.FINISHED, this after $prevBackup) from entry-point Backup Stream then drools.retract($prevBackup); end rule #2 is my attempt to cut down on memory usage. the problem is that rule #2 slows down the processing very very considerably (2 orders of magnitude slower when simulating batches of 40K events/day). what would be my next step in trying to find the reason for it? my intuition tells me that with 2 events in the system at any given time instead of 120K (single node, 40K events/day 3 day window) i should have seen either a speedup or reduced memory consumption (if not both) and yet the results im seeing are the exact opposite. is there anything im missing ? i could try adding some sort of LastSuccessfulBackup marker object into main memory and updating it using events from the backup stream, but then how would i express rule #1 ? any help/clues/suggestions would be greatly appreciated, radai. ___ 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 -- - CTO @ http://www.plugtree.com - MyJourney @ http://salaboy.wordpress.com - Co-Founder @ http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help required for Rule Creation
Hi, I want to create a rule for the following scenario: 1. Event 1 : A file was created under the directory /root/ (Comment: I have implemented this using 'matches' in the rule file) 2. Event 2: If File was created under /root/ then get all the files created within a 30 seconds of Event1. (Comment: Confused! Don't know how to do this!) The dataset I have is of all the files created on the system + time of creation. Thanks in advance! Rgds, Kiran ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help required for Rule Creation
Usually creation times are in seconds (starting at some Epoch) and therefore all you have to do is ascertain that two integers don't differ by more than 30: $first: File( pathname matches ..., $ct: creationTime ) $later: File( creationTime ($ct + 30) ) -W On 14 December 2010 09:37, kiran.n...@rsa.com wrote: Hi, I want to create a rule for the following scenario: 1. Event 1 : A file was created under the directory /root/ (Comment: I have implemented this using 'matches' in the rule file) 2. Event 2: If File was created under /root/ then get all the files created within a 30 seconds of Event1. (Comment: Confused! Don't know how to do this!) The dataset I have is of all the files created on the system + time of creation. Thanks in advance! Rgds, Kiran ___ 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] help
_ SEEBURGER AGVorstand/Seeburger Executive Board: Sitz der Gesellschaft/ Bernd Seeburger, Axel Haas, Michael Kleeberg Registered Office: Edisonstrasse 1 Vorsitzender des Aufsichtsrats/Chairperson of D-75015 Bretten the Seeburger Supervisory Board: Tel.: 07252 / 96-0 Dr. Franz Scherer Fax: 07252 / 96- Internet: http://www.seeburger.de Registergericht/Commercial Register: e-mail: i...@seeburger.de HRB 240708 Mannheim _ Dieses E-Mail ist nur fur den Empfanger bestimmt, an den es gerichtet ist und kann vertrauliches bzw. unter das Berufsgeheimnis fallendes Material enthalten. Jegliche darin enthaltene Ansicht oder Meinungs- au?erung ist die des Autors und stellt nicht notwendigerweise die Sind Sie nicht der Empfanger, so haben Sie diese E-Mail irrtumlich erhalten und jegliche Verwendung, Veroffentlichung, Weiterleitung, Abschrift oder jeglicher Druck dieser E-Mail ist strengstens untersagt. Weder die noch der Absender (Oliver Roess) ubernehmen die Haftung fur Viren; es obliegt Ihrer Verantwortung, die E-Mail und deren Anhange (0) auf Viren zu prufen. The present email addresses only the addressee which it targets and may contain confidential material that may be protected by the professional secret. The opinions reflected herein are not necessarily If you are not the addressee, you have accidentally got this email and are not enabled to use, publish, forward, copy or print it in any way. Neither the , nor the sender (Oliver Roess) are liable for viruses, being your own responsibility to check this email and its attachments (0) for this purpose. _ ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] help
You forgot to put the message in the bottle! ;) Esteban Aliverti - Developer @ http://www.plugtree.com - Blog @ http://ilesteban.wordpress.com 2010/11/15 Roess. Oliver o.ro...@seeburger.de _ SEEBURGER AGVorstand/Seeburger Executive Board: Sitz der Gesellschaft/ Bernd Seeburger, Axel Haas, Michael Kleeberg Registered Office: Edisonstrasse 1 Vorsitzender des Aufsichtsrats/Chairperson of D-75015 Bretten the Seeburger Supervisory Board: Tel.: 07252 / 96-0 Dr. Franz Scherer Fax: 07252 / 96- Internet: http://www.seeburger.de Registergericht/Commercial Register: e-mail: i...@seeburger.de HRB 240708 Mannheim _ Dieses E-Mail ist nur fur den Empfanger bestimmt, an den es gerichtet ist und kann vertrauliches bzw. unter das Berufsgeheimnis fallendes Material enthalten. Jegliche darin enthaltene Ansicht oder Meinungs- au?erung ist die des Autors und stellt nicht notwendigerweise die Sind Sie nicht der Empfanger, so haben Sie diese E-Mail irrtumlich erhalten und jegliche Verwendung, Veroffentlichung, Weiterleitung, Abschrift oder jeglicher Druck dieser E-Mail ist strengstens untersagt. Weder die noch der Absender (Oliver Roess) ubernehmen die Haftung fur Viren; es obliegt Ihrer Verantwortung, die E-Mail und deren Anhange (0) auf Viren zu prufen. The present email addresses only the addressee which it targets and may contain confidential material that may be protected by the professional secret. The opinions reflected herein are not necessarily If you are not the addressee, you have accidentally got this email and are not enabled to use, publish, forward, copy or print it in any way. Neither the , nor the sender (Oliver Roess) are liable for viruses, being your own responsibility to check this email and its attachments (0) for this purpose. _ ___ 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] help
lol 2010/11/15 Esteban Aliverti esteban.alive...@gmail.com You forgot to put the message in the bottle! ;) Esteban Aliverti - Developer @ http://www.plugtree.com - Blog @ http://ilesteban.wordpress.com 2010/11/15 Roess. Oliver o.ro...@seeburger.de _ SEEBURGER AGVorstand/Seeburger Executive Board: Sitz der Gesellschaft/ Bernd Seeburger, Axel Haas, Michael Kleeberg Registered Office: Edisonstrasse 1 Vorsitzender des Aufsichtsrats/Chairperson of D-75015 Bretten the Seeburger Supervisory Board: Tel.: 07252 / 96-0 Dr. Franz Scherer Fax: 07252 / 96- Internet: http://www.seeburger.de Registergericht/Commercial Register: e-mail: i...@seeburger.de HRB 240708 Mannheim _ Dieses E-Mail ist nur fur den Empfanger bestimmt, an den es gerichtet ist und kann vertrauliches bzw. unter das Berufsgeheimnis fallendes Material enthalten. Jegliche darin enthaltene Ansicht oder Meinungs- au?erung ist die des Autors und stellt nicht notwendigerweise die Sind Sie nicht der Empfanger, so haben Sie diese E-Mail irrtumlich erhalten und jegliche Verwendung, Veroffentlichung, Weiterleitung, Abschrift oder jeglicher Druck dieser E-Mail ist strengstens untersagt. Weder die noch der Absender (Oliver Roess) ubernehmen die Haftung fur Viren; es obliegt Ihrer Verantwortung, die E-Mail und deren Anhange (0) auf Viren zu prufen. The present email addresses only the addressee which it targets and may contain confidential material that may be protected by the professional secret. The opinions reflected herein are not necessarily If you are not the addressee, you have accidentally got this email and are not enabled to use, publish, forward, copy or print it in any way. Neither the , nor the sender (Oliver Roess) are liable for viruses, being your own responsibility to check this email and its attachments (0) for this purpose. _ ___ 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 -- - CTO @ http://www.plugtree.com - MyJourney @ http://salaboy.wordpress.com - Co-Founder @ http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help me understand this drools exception
You should enable the option for dump creation with: -Ddrools.dump.dir=yourDirectory so you can take a look at the generated code (Process_com_test_sample_0.java) and maybe debug it. -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-me-understand-this-drools-exception-tp1869650p1881997.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
Re: [rules-users] Help needed in activationCreated and activationCanceled event
Please don't email me direct. I won't reply in the future. All questions and answers are of value to the community as a whole. To quote what I replied to an almost identical request a couple of days ago and posted to the drools-user mailing list. AFAIK, Activation Cancelled events would trigger in reaction to the revocation of a logically inserted fact that caused an activation to trigger in the first place. It would not help identifying which pattern in a rule was not matched causing your rule not to activate. On 4 November 2010 14:41, nku...@objectwave.com wrote: Hi, thanks for helping me out with that code. i have one more question, in activation cancelled event, it never gets executed. @Override public void activationCancelled(ActivationCancelledEvent event) { final Rule rule = event.getActivation().getRule(); final String ruleName = rule.getName(); System.out.println(Activation cancelled -- + ruleName); rules.add(rule); ruleNames.add(ruleName); } @Override public void activationCreated(ActivationCreatedEvent event) { final Rule rule = event.getActivation().getRule(); final String ruleName = rule.getName(); System.out.println(Activation created -- + ruleName); rules.remove(rule); ruleNames.remove(ruleName); } but my output never show this. i only have Activation created printed in console. which rule is not executed, that is not printing at the time when it is not activated. Please have a look on this. My output is Rules not executed - GoodBye-rule - Hello World-rule - Never fires Activation created -- Hello World-rule Hello World Activation created -- GoodBye-rule Goodbye cruel world Rules not executed - Never fires this is the same code which you sent me. Never fires is the rule which never gets executed. we print this from the list of rules we have when we load the rule file. even if i skip that activation canceled it prints the same result. thanks ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help require for web actor related task
Hello Guys, I am able to treat Human Task as web actor. What I did is, I created a new WorkItemHandler and when I submit the jsp, in jsp I wrote code to complete the work item. But conceptually still i have doubts: 1. I can able to register WorkItemHandler with name Human task which by default take WorkItemImpl and DefaultWorkitemmaneger as workItem amd manager respectively. I want to register my own Work Item. How can I register it? Any code snippet will be really helpful. Thank you very much in advance. Ashish zokarkat -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-require-for-web-actor-related-task-tp1572753p1594689.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
[rules-users] Help require for web actor related task
Hello, I am newbie for Drools flow. I am trying to build work flow in which according to condition I have to ask either person properties or user properties. I am trying to embed it in web project. So I created 3 jsps. 1. Ask information about User or Product. 2. According to selection shows different options. 3. Display all the properties. What I am trying is, remove all the forwards from jsp and put them in workflow so that its easily supportable for new object as well. I think I should use Human Task where I am taking user input. Now i have below questions: 1. I am trying to use Human Task. But I can see it supports only Web Service Human task. Is it true??? 2. How can I use Human Task in this situation? In examples, I can see, I require EntityManagerFactory, mina Task which should run on some port. Is these steps really necessary??? 3. I am trying really simple POC where I require kind of web actor which should wait till user click on Submit button and then proceed to next step. Is any similar kind of support Drools have?? If yes how can i use it?? Small code snippets or doc link will be very helpful... Thank you very much in advance.. Ashish Zokarkar -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-require-for-web-actor-related-task-tp1572753p1572753.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
[rules-users] Help : How do I retrieve the repository or uuid of assets from java code?
Hi, I'm trying to construct a url in the format http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/Guvnor.html#asset=4dae7ddf-4d97-4e6b-ab07-b0f5e9d41d9c by replacing the #asset=[uuid] Thus, I would need to know the uuid of each asset in the repository. I have tried to use the following code Repository repository; JCRRepositoryConfigurator configurator = new JackrabbitRepositoryConfigurator(); repository = configurator.getJCRRepository( C:\\Programs\\Drools\\5.1\\jboss-4.2.3.GA\\repository\\ ); Session jcrsession = repository.login(new SimpleCredentials(admin, admin1.toCharArray())); RulesRepository rrepository = new RulesRepository(jcrsession); or RulesRepository rrepository = RepositorySessionUtil.getRepository(); My drools persistence is set to MySQL. So, RepositorySessionUtil.getRepository() kind of work but because it is retrieving from a new repository, so it does not serve the purpose. When I put the code above into a jsp in exploded drools-guvnor.war in jboss, I have the following error. org.drools.repository.RulesRepositoryException: javax.jcr.RepositoryException: The repository home C:\Programs\Drools\5.1\ jboss-4.2.3.GA\bin\repository appears to be in use since the file named .lock is already locked by the current process. org.drools.repository.RepositorySessionUtil.getRepository(RepositorySessionUtil.java:90) org.apache.jsp.test_jsp._jspService(test_jsp.java:105) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.jboss.seam.web.ContextFilter$1.process(ContextFilter.java:42) org.jboss.seam.servlet.ContextualHttpServletRequest.run(ContextualHttpServletRequest.java:53) org.jboss.seam.web.ContextFilter.doFilter(ContextFilter.java:37) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) But, I'm not even sure if what I'm trying to do is correct. What I want to do is to be able to retrieve the uuid of the assets in repository from a web application. Can someone please help in providing a snippet of code or point me in some direction on what should I retrieve in order to query the repository. Thanks. Han Ming ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help needed in Rule flow in Guvnor
Hi, I am using Rule flow in Guvnor for setting some value out of the flow which would be used for my further processing. Below is what I'm trying to achieve, I have two rule groups in the rule flow, out of which the first one would set a key, value pair in a Map which is a field in one of the bean class declared Global for the package when ever each rule is executed in the set of rules in the group and the next rule group would be required to have a set of rules that needs to be executed against this Map which was set in the first rules group and send the final result as output out of the flow. I have defined the rules in the first rule group and set the Map with necessary keys and values, but I was not able to read the Map in this second rule group. I had tried this second rule group as a custom java code in my Java part after the rules execution from guvnor and able to read the map that was set from the first rule group and able set the final decision. I want to know whether reading the Map from the second rule group which was set in the first rule group is possible or not. Or kindly let me know whether I'm missing anything here and needed to add any other logic to achieve the same. Thanks, Vignesh -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Help-needed-in-Rule-flow-in-Guvnor-tp1059410p1059410.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
[rules-users] Help regarding populating values from presentation layer into Fact Typpes in drools
Hi, In drools, I have seen that following functionalities have been implemented : - Creating a fact type which can be used in a rule - Creating rule by declaring functions or by using DSL - Testing the rule using test scenario Here, I had a question regarding decoupling of fact types between my application and drools. I wanted to whether writing a java code for adding values from form/database(i.e. my application) into fact types of drools package which I have created is must or is there any automated way for doing this ? For example, If new rule gets added which will result in changing fact (either modify existing or add new fact). In this case one has to write a code for populating presentation layer values into this newly modified/created fact type. Can this be automated..? From client support perspective -How to manage addition of New Rule to existing Rule base..? Thanks Regards, Swapnil Sawant | iLabs | L T Infotech Plot no. EL - 200,TTC Electronic Zone,Shil-Mahape road,Navi Mumbai - 400 701 Extn: +91 22 6795 4325 Mail: swapnil.saw...@lntinfotech.commailto:swapnil.saw...@lntinfotech.com www.lntinfotech.com This Email may contain confidential or privileged information for the intended recipient (s) If you are not the intended recipient, please do not use or disseminate the information, notify the sender and delete it from your system. _ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help : Enabling Role Base Authorization in Guvnor
Hi Jervis, Thanks for the reply. Yes, this solve the problem. Thanks again. Han Ming On Mon, Aug 2, 2010 at 2:24 PM, Jervis Liu j...@redhat.com wrote: Hi, the rolesProperties file (eg, guvnor-roles.properties) configured in JBoss AS is not used by Guvnor authorization. Before you enable enable-role-based-authorization, you need to login and configure user permissions in Guvnor Administration. For example, you need to give your admin user a full admin permission. Hope this helps, Jervis Han Ming Low wrote: Hi all, I try to enable the Role Base Authorization in Guvnor after it was running fine with the default login mechanism. But, encountered some problem with the attempt. What I did was that in the components.xml, - commented out the default security:identity authenticate-method=#{defaultAuthenticator.authenticate}/ - uncomment the security:identity authenticate-method=#{authenticator.authenticate} jaas-config-name=other/ - change the role base authorization to true, security:role-based-permission-resolver enable-role-based-authorization=true/ And at the login-config.xml I have changed the other application policy to application-policy name = other authentication login-module code = org.jboss.security.auth.spi.UsersRolesLoginModule flag = required module-option name=usersPropertiesprops/guvnor-users.properties/module-option module-option name=rolesPropertiesprops/guvnor-roles.properties/module-option /login-module /authentication /application-policy guvnor-users.properties admin=admin12 krisv=krisv john=john mary=mary guvnor-roles.properties admin=admin krisv=admin,manager,user john=admin,manager,user mary=admin,manager,user After restarting JBoss, I can login based on the user and password defined in the guvnor-users.properties. And, by changing the password in the properties, I verified that it is taking in the value from the file itself. However, when I login as user admin and tried to access the Administration | User Permission or Event Log, I'm prompt Sorry, insufficient permissions to perform this action. The error from the console is 11:15:36,046 INFO [STDOUT] ERROR 29-07 11:15:36,046 (LoggingHelper.java:error:76) Service method 'public abstract java.util.Map org.drools.guvnor.client.rpc.RepositoryService.listUserPermissions() throws org.drools.guvnor.client.rpc.DetailedSerializationException' threw an unexpected exception: org.jboss.seam.security.AuthorizationException: Authorization check failed for permission[org.drools.guvnor.server.security.admint...@bf7a4d,admin] org.jboss.seam.security.AuthorizationException: Authorization check failed for permission[org.drools.guvnor.server.security.admint...@bf7a4d,admin] at org.jboss.seam.security.Identity.checkPermission(Identity.java:581) at org.drools.guvnor.server.ServiceImplementation.listUserPermissions(ServiceImplementation.java:2604) . Checking on the org.drools.guvnor.server.security.RoleTypes code, the available role should be admin analyst analyst.readonly package.admin package.developer package.readonly Can anyone help to let me know what's wrong with my configuration? Thanks. Han Ming ___ 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
Re: [rules-users] Help : Enabling Role Base Authorization in Guvnor
Hi, the rolesProperties file (eg, guvnor-roles.properties) configured in JBoss AS is not used by Guvnor authorization. Before you enable enable-role-based-authorization, you need to login and configure user permissions in Guvnor Administration. For example, you need to give your admin user a full admin permission. Hope this helps, Jervis Han Ming Low wrote: Hi all, I try to enable the Role Base Authorization in Guvnor after it was running fine with the default login mechanism. But, encountered some problem with the attempt. What I did was that in the components.xml, - commented out the default security:identity authenticate-method=#{defaultAuthenticator.authenticate}/ - uncomment the security:identity authenticate-method=#{authenticator.authenticate} jaas-config-name=other/ - change the role base authorization to true, security:role-based-permission-resolver enable-role-based-authorization=true/ And at the login-config.xml I have changed the other application policy to application-policy name = other authentication login-module code = org.jboss.security.auth.spi.UsersRolesLoginModule flag = required module-option name=usersPropertiesprops/guvnor-users.properties/module-option module-option name=rolesPropertiesprops/guvnor-roles.properties/module-option /login-module /authentication /application-policy guvnor-users.properties admin=admin12 krisv=krisv john=john mary=mary guvnor-roles.properties admin=admin krisv=admin,manager,user john=admin,manager,user mary=admin,manager,user After restarting JBoss, I can login based on the user and password defined in the guvnor-users.properties. And, by changing the password in the properties, I verified that it is taking in the value from the file itself. However, when I login as user admin and tried to access the Administration | User Permission or Event Log, I'm prompt Sorry, insufficient permissions to perform this action. The error from the console is 11:15:36,046 INFO [STDOUT] ERROR 29-07 11:15:36,046 (LoggingHelper.java:error:76) Service method 'public abstract java.util.Map org.drools.guvnor.client.rpc.RepositoryService.listUserPermissions() throws org.drools.guvnor.client.rpc.DetailedSerializationException' threw an unexpected exception: org.jboss.seam.security.AuthorizationException: Authorization check failed for permission[org.drools.guvnor.server.security.admint...@bf7a4d,admin] org.jboss.seam.security.AuthorizationException: Authorization check failed for permission[org.drools.guvnor.server.security.admint...@bf7a4d,admin] at org.jboss.seam.security.Identity.checkPermission(Identity.java:581) at org.drools.guvnor.server.ServiceImplementation.listUserPermissions(ServiceImplementation.java:2604) . Checking on the org.drools.guvnor.server.security.RoleTypes code, the available role should be admin analyst analyst.readonly package.admin package.developer package.readonly Can anyone help to let me know what's wrong with my configuration? Thanks. Han Ming ___ 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] Help regarding Guvnor 5.0 integration in secured application (https protocol)
Hi, I am implementing drools 5.0(Guvnor GUI) in my application (protocol for same is https) For this purpose , I have set up drools 5.0 framework code needed to run the rules from my application. Also, I have integrated Guvnor GUi code inside my application itself. While doing implementation, inside changeset.xml file I have written following code : 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 drools-change-set-5.0.xsd' add resource source='https://localhost:8441/drools-guvnor/org.drools.guvnor.Guvnor/package/Payroll_Swapnil/LATEST.drl' type='DRL' ///as I have integrated Guvnor GUI in my secured app /add /change-set I have created a simple rule using Guvnor GUI (GUI code inside my application). When I run the same rule from my business layer, I get following security exception : Message: Service [ruleService] target threw an unexpected exception (javax.net.ssl.SSLHandshakeException: sun.security.va lidator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target) cause - Exception: java.lang.RuntimeException Message: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.s ecurity.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target Then I changed the changeset.xml as follows : resource source='http://localhost:8441/drools-guvnor/org.drools.guvnor.Guvnor/package/Payroll_Swapnil/LATEST.drl' type='DRL' / This time when I run the same rule , I got following error : [2010:08:214 10:08:319:debug] ResourceChangeScanner subcribing notifier=org.drools.io.impl.resourcechangenotifieri...@c40 88a to resource=[UrlResource path='http://localhost:8441/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LA TEST.drl'] [2010:08:214 10:08:319:debug] KnowledgeAgent ChangeSet requires KnowledgeBuilder [2010:08:214 10:08:319:debug] KnowledgeAgent rebuilding KnowledgeBase using ChangeSet 2010-08-02 10:53:34,615 (http-0.0.0.0-8441-2) [ ServiceDispatcher.java:515:INFO ] [[Sync service failed...- total:0.0,si nce last(Begin):0.0]] - 'payroll / ruleService' 2010-08-02 10:53:34,615 (http-0.0.0.0-8441-2) [ TransactionUtil.java:344:INFO ] [TransactionUtil.rollback] transaction rolled back 2010-08-02 10:53:34,615 (http-0.0.0.0-8441-2) [ TransactionUtil.java:269:WARN ] [TransactionUtil.commit] Not committin g transaction, status is No Transaction (6) 2010-08-02 10:53:34,615 (http-0.0.0.0-8441-2) [ServiceEventHandler.java:352:ERROR] exception report -- Service invocation error Exception: org.ofbiz.service.GenericServiceException Message: Service [ruleService] target threw an unexpected exception (java.net.SocketException: Unexpected end of file fro m server) cause - Exception: java.lang.RuntimeException Message: java.net.SocketException: Unexpected end of file from server cause - Exception: java.net.SocketException Message: Unexpected end of file from server stack trace --- java.net.SocketException: Unexpected end of file from server sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:769) sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632) sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:766) sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632) sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1000) Finally, I tried deploying same rule on Guvnor 5.0 GUI on my separate tomcat server(outside my secured app) . When I give the drl path of this codebase on my separate Tomcat inside my changset.xml, things work fine. I have a doubt as to is the error coming as I am trying to access a https url as http ? Can any one pl help me in this regard. Any help of yours would be great help.Thanks in advance. Regards, Swapnil Sawant This Email may contain confidential or privileged information for the intended recipient (s) If you are not the intended recipient, please do not use or disseminate the information, notify the sender and delete it from your system. _ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help regrading branching of call to a rule depending upon date
Hi, I am evaluating Drool Gunvor for to implement Rules for some finance related functionality. I need help from users to implement following scenario is Drools-Guvnor I have created simple Rule to Calculate House Rent Allowance i.e. HRA as HRA = 0.12 * Basic salary .(Basic will come as Input Parameter). This rule is valid from e.g. 01-Jan-2005 to 31-July-2010 as HRA rule is changed from 1st Aug 2010 I will have to create new Rule for HRA Rule with new formula as HRA = 0.15 * Basic salary .(Basic will come as Input Parameter). This rule is valid from 01-Aug-2010 to 01-Aug-2999 From 1st Aug HRA should be calculated using New Rule. But at the same time if any Arrears to be calculated(back dated calculation) depending on the date old HRA rule should be applicable. Can I achieve this in Gunor Drool? I could achieve first half by specifying date-expires . But I am not able to achieve second half i.e. referring old rule depending on the date. I would appreciate help to solve this problem . Thanks in advance. Swapnil Sawant This Email may contain confidential or privileged information for the intended recipient (s) If you are not the intended recipient, please do not use or disseminate the information, notify the sender and delete it from your system. _ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help : Enabling Role Base Authorization in Guvnor
Hi all, I try to enable the Role Base Authorization in Guvnor after it was running fine with the default login mechanism. But, encountered some problem with the attempt. What I did was that in the components.xml, - commented out the default security:identity authenticate-method=#{defaultAuthenticator.authenticate}/ - uncomment the security:identity authenticate-method=#{authenticator.authenticate} jaas-config-name=other/ - change the role base authorization to true, security:role-based-permission-resolver enable-role-based-authorization=true/ And at the login-config.xml I have changed the other application policy to application-policy name = other authentication login-module code = org.jboss.security.auth.spi.UsersRolesLoginModule flag = required module-option name=usersPropertiesprops/guvnor-users.properties/module-option module-option name=rolesPropertiesprops/guvnor-roles.properties/module-option /login-module /authentication /application-policy guvnor-users.properties admin=admin12 krisv=krisv john=john mary=mary guvnor-roles.properties admin=admin krisv=admin,manager,user john=admin,manager,user mary=admin,manager,user After restarting JBoss, I can login based on the user and password defined in the guvnor-users.properties. And, by changing the password in the properties, I verified that it is taking in the value from the file itself. However, when I login as user admin and tried to access the Administration | User Permission or Event Log, I'm prompt Sorry, insufficient permissions to perform this action. The error from the console is 11:15:36,046 INFO [STDOUT] ERROR 29-07 11:15:36,046 (LoggingHelper.java:error:76) Service method 'public abstract java.util.Map org.drools.guvnor.client.rpc.RepositoryService.listUserPermissions() throws org.drools.guvnor.client.rpc.DetailedSerializationException' threw an unexpected exception: org.jboss.seam.security.AuthorizationException: Authorization check failed for permission[org.drools.guvnor.server.security.admint...@bf7a4d,admin] org.jboss.seam.security.AuthorizationException: Authorization check failed for permission[org.drools.guvnor.server.security.admint...@bf7a4d,admin] at org.jboss.seam.security.Identity.checkPermission(Identity.java:581) at org.drools.guvnor.server.ServiceImplementation.listUserPermissions(ServiceImplementation.java:2604) . Checking on the org.drools.guvnor.server.security.RoleTypes code, the available role should be admin analyst analyst.readonly package.admin package.developer package.readonly Can anyone help to let me know what's wrong with my configuration? Thanks. Han Ming ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Help : Can't see process in gwt-console
Hi, I'm trying to start a sample process in the gwt-console by following a video tutorial and list thread http://blog.athico.com/2009/10/drools-51-m1-release-notes.html http://markmail.org/message/y4sae37xvv44shhh What I did was - start h2 - start human task - start jboss It looks to me that all the services are started without error. However, I'm not seeing the process in the gwt-console - Processes view. The process I have loaded in Guvnor is not available in the gwt-console. I have uploaded 2 processes in Guvnor through Eclispe. 1 of them is a .rf file and the other is a bpmn file. And, I also notice that the Settings - System view, the ProcessEnginePlugin is still a red cross. And, the log shows 10:38:00,062 INFO [STDOUT] 10:38:00,062 INFO [PluginMgr] Successfully loaded plugin 'org.jboss.bpm.console.server.plugin.FormDispatcherPlugin': class org.drools.integration.console.forms.FormDispatcherComposite 10:38:00,062 INFO [STDOUT] 10:38:00,062 INFO [PluginMgr] Successfully loaded plugin 'org.jboss.bpm.console.server.plugin.GraphViewerPlugin': class org.drools.integration.console.graph.GraphViewerPluginImpl 10:38:00,078 INFO [STDOUT] 10:38:00,078 WARN [PluginMgr] Unable to load plugin: 'org.jboss.bpm.console.server.plugin.ProcessEnginePlugin' I have upload some screenshots of the different pages to here. http://img826.imageshack.us/g/gwtconsolesystem.jpg/ Thanks for any advice. Han Ming ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Help Needed in Drools Flow
Hi, I have inserted some objects into the process session through ksession.insert(Object arg0) method call in the class file that starts the process.Now I want to access those objects in my workItem on entry action code. Can I do it? If yes please let me know how?? Thanks Santosh Mukherjee. On Wed, Jul 14, 2010 at 4:37 PM, Chris Raschl c.raschl-mailingli...@dyless.com wrote: Am 14.07.2010 12:05, schrieb santosh mukherjee: Hi, I want to add some of my own customized components to Drools Flow components pannel. How can this be done. Is there some API available to do so ?? Hi, i guess you want to add domain specific work items to use them in the process designer in eclispe. There is no API, to do that you just have to add a drools.rulebase.conf file and your own work item definition to your META-INF directory. There is an example in the drools flow manual: http://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/docs/drools-flow/html_single/index.html#d4e1033 Remind: You'll have to re-open the process to make the work items appear. Hope this helps, chris ___ 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] Help Needed in Drools Flow
This is the code that I am using in the OnEntryActions part of my workItem. System.out.println(context.getProcessInstance().getWorkingMemory()); FactHandle fac=context.getProcessInstance().getWorkingMemory().insert(new Name(santosh)); System.out.println(fac); org.drools.runtime.rule.WorkingMemory wrk=context.getProcessInstance().getWorkingMemory(); System.out.println(wrk); System.out.println(wrk.getObject(fac)); But it gives this error: Process Compilation error : org.drools.lang.descr.processde...@1ecfe07 com/sample/Process_com_sample_0.java (20:933) : Type mismatch: cannot convert from org.drools.WorkingMemory to org.drools.runtime.rule.WorkingMemory Process Compilation error : org.drools.lang.descr.processde...@1ecfe07 com/sample/Process_com_sample_0.java (20:933) : Type mismatch: cannot convert from org.drools.WorkingMemory to org.drools.runtime.rule.WorkingMemory Process Compilation error : org.drools.lang.descr.processde...@1ecfe07 com/sample/Process_com_sample_0.java (20:933) : Type mismatch: cannot convert from org.drools.WorkingMemory to org.drools.runtime.rule.WorkingMemory java.lang.IllegalArgumentException: Could not parse knowledge. at com.sample.ProcessTest.readKnowledgeBase(ProcessTest.java:47) at com.sample.ProcessTest.main(ProcessTest.java:24) Can anyone help how to get around this error??? Thank You. Santosh Mukherjee On Thu, Jul 15, 2010 at 5:33 PM, santosh mukherjee sam.sensat...@gmail.comwrote: Hi, I have inserted some objects into the process session through ksession.insert(Object arg0) method call in the class file that starts the process.Now I want to access those objects in my workItem on entry action code. Can I do it? If yes please let me know how?? Thanks Santosh Mukherjee. On Wed, Jul 14, 2010 at 4:37 PM, Chris Raschl c.raschl-mailingli...@dyless.com wrote: Am 14.07.2010 12:05, schrieb santosh mukherjee: Hi, I want to add some of my own customized components to Drools Flow components pannel. How can this be done. Is there some API available to do so ?? Hi, i guess you want to add domain specific work items to use them in the process designer in eclispe. There is no API, to do that you just have to add a drools.rulebase.conf file and your own work item definition to your META-INF directory. There is an example in the drools flow manual: http://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/docs/drools-flow/html_single/index.html#d4e1033 Remind: You'll have to re-open the process to make the work items appear. Hope this helps, chris ___ 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