[rules-users] Drools Ruleflow: java.lang.OutOfMemoryError!

2011-12-07 Thread victorC
Hi folks,

I am getting java.lang.OutOfMemoryError while running very simple process
containing just one HumanTask node.

I cannot get what I am doing wrong. I've setup everything according the docs
(http://downloads.jboss.com/drools/docs/5.1.1.34858.FINAL/drools-flow/html/ch06.html)

My setup is: 
JBoss 4.2.3.GA 
Hibernate 3.2.4.sp1 
JBoss Seam 2.2.0.GA 
Drools 5.1.1 
MySQL 5.1.41 / mysql-connector 5.0.7
Drools Ruleflow persistence: JPAKnowledgeService, MySQL,
JBossTransactionManager

The stacktrace is as follows:
javax.persistence.PersistenceException: java.lang.RuntimeException:
java.lang.OutOfMemoryError: Java heap space
at
org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:527)
at
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
at
com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
at
org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(ServerVMClientUserTransaction.java:140)
at 
org.jboss.seam.transaction.UTTransaction.commit(UTTransaction.java:52)
at
org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:613)
at
org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:604)
at
org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:345)
at
org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:245)
at
org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:196)
at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at

Re: [rules-users] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread MarcoMojana

laune wrote
 
 A virtual (pseudo) clock is indicated. The timestamp of the facts
 should control the advancement of the clock.
 

When the window is moved, does Drools consider all the intermediate
positions? (Since my rule considers events depending only if they are
included or not in the window, obviously it's not needed to consider all the
infinite positions, but only those that affect the rule activation)

What about my third point?

--
MM

--
View this message in context: 
http://drools.46999.n3.nabble.com/Sliding-window-behavior-in-stream-mode-and-realtime-clock-tp3564950p3566708.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] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread Wolfgang Laun
On 07/12/2011, MarcoMojana marco.moj...@exmachina.ch wrote:

 laune wrote

 A virtual (pseudo) clock is indicated. The timestamp of the facts
 should control the advancement of the clock.


 When the window is moved, does Drools consider all the intermediate
 positions? (Since my rule considers events depending only if they are
 included or not in the window, obviously it's not needed to consider all the
 infinite positions, but only those that affect the rule activation)

It should work if you fireAllRules() after each nudge of the clock and insertion
of the next fact.


 What about my third point?

Does it still happen when you use a pseudo clock?

-W


 --
 MM

 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Sliding-window-behavior-in-stream-mode-and-realtime-clock-tp3564950p3566708.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] Planner 5.3.Final - presumedScore is corrupted when using update on the rules working memory = shadow proxies problems?

2011-12-07 Thread Geoffrey De Smet



Op 07-12-11 02:18, Patrik Dufresne schreef:
I'm still experimenting with Drools Planner and I also have the exact 
same issue :


java.lang.IllegalStateException: The presumedScore (0hard/-1soft)
is corrupted because it is not the realScore  (0hard/0soft).
Presumed workingMemory:
  Score rule (soft-ReduceNullAssignment) has count (1) and weight
total (1).
Real workingMemory:
at

org.drools.planner.core.solution.director.DefaultSolutionDirector.assertWorkingScore(DefaultSolutionDirector.java:157)
at

org.drools.planner.core.solver.DefaultSolverScope.assertWorkingScore(DefaultSolverScope.java:105)
at

org.drools.planner.core.phase.AbstractSolverPhaseScope.assertWorkingScore(AbstractSolverPhaseScope.java:132)
at

org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:69)
at

org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:166)
at
org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:138)
...

I've read this (https://issues.jboss.org/browse/JBRULES-3301), but it 
didn't help :


* I'm using IntConstraintOccurrence
* I double check the soft constraint named
  soft-ReduceNullAssignment -- it's include all the cause.
* I'm using Drools 5.3

After more digging, I think something is missing in 
DefaultSolutionDirector.java:153. The facts are added, but the 
planningEntity are not added.

They are added:

 for (Object fact : getWorkingFacts()) {
tmpWorkingMemory.insert(fact);
}

public CollectionObject getWorkingFacts() {
return solutionDescriptor.getAllFacts(workingSolution); // 
returns the problem facts + the initiliazed planningEntity's

}

So when the score calculation is running, there is two different 
result. I'v place a breakpoint at DefaultSolutionDirector.java:157 and 
looking 
in tmpWorkingMemory-defaultEntryPoint-objectStore-identifyMap-table, 
I don't see the planningEntity.

That's weird.

Could you try this with the latest drools-planner-core 5.4.0.SNAPSHOT 
from the jboss nexus repository too?

You'll have to branch and upgrade your local code:
   
https://github.com/droolsjbpm/drools-planner/blob/master/drools-planner-distribution/src/main/assembly/filtered-resources/UpgradeFromPreviousVersionRecipe.txt


As a side affect, you'll notice that the exception message will be much 
much clearer too, which will help in discovering the problem.


Here is the my rule :

rule soft-ReduceNullAssignment
when
$planif : PlanifEventAssignment( employee == null )
then
insertLogical(new
IntConstraintOccurrence(soft-ReduceNullAssignment,
ConstraintType.NEGATIVE_SOFT,
1,
$planif));
end


Thanks

On Tue, Dec 6, 2011 at 11:12 AM, Geoffrey De Smet 
ge0ffrey.s...@gmail.com mailto:ge0ffrey.s...@gmail.com wrote:




Op 06-12-11 05:38, guyramirez schreef:
 Still the same issue, starting with the construction heuristic
phase. Please
 let me know if you need more explanations in what I am trying to do.

 Here is the error. Please note that there is only one planning
entity
 (ShiftAssignment) object instance in this test.

 Total Staffing required: 8
 2011-12-05 22:21:49,627 [main] INFO  Solver started: time spend
(0), score
 (null), new best score (null), random seed (0).
 ShiftAssignment: emp. id: 10 [st: 100, dur: 3]
 ShiftAssignment: emp. id: 10 [st: 100, dur: 2]
 ShiftAssignment: emp. id: 10 [st: 100, dur: 4]
 ShiftAssignment: emp. id: 10 [st: 100, dur: 1]
 2011-12-05 22:21:49,678 [main] TRACE Building
ConstraintOccurrence summary
 2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
 (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement:
interval:
 101, position id: 1, staffingRequired: 2, [ShiftAssignment: emp.
id: 10 [st:
 100, dur: 1]]]=1)
 2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
 (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement:
interval:
 103, position id: 1, staffingRequired: 2, []]=2)
 2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
 (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement:
interval:
 102, position id: 1, staffingRequired: 2, []]=2)
 2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
 (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement:
interval:
 100, position id: 1, staffingRequired: 2, [ShiftAssignment: emp.
id: 10 [st:
 100, dur: 1], ShiftAssignment: emp. id: 10 [st: 100, dur: 1]]]=0)
 2011-12-05 22:21:49,678 [main] TRACE Building
ConstraintOccurrence summary
 2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
 

Re: [rules-users] Planner 5.3.Final - presumedScore is corrupted when using update on the rules working memory = shadow proxies problems?

2011-12-07 Thread Geoffrey De Smet


Op 07-12-11 05:50, guyramirez schreef:
 Patrik: thx for your feedback. Did you get the chance to run your rule using
 Expert only without Planner? I just did that (wrote a test program to change
 my planning entity values and update the StatefulKnowledgeSession few times
 in row) and I came up with the same currupted result.
Patrik's problem maybe won't apply on you:
Notice how the count is the same, just the weight is different:

Presumed workingMemory:
   Score rule (intervalRequirementCovered) has count (4) and weight total
(5).
Real workingMemory:
   Score rule (intervalRequirementCovered) has count (4) and weight total
(7).

That means that the planning entities envolved is maybe the same.

I presume that going from solution A to solution B,
the same IntervalRequirement is still broken, but 
$matchingShiftAssignmentSize changes (and that change isn't forward 
chained somehow).
The Planner examples do this all the time (although it was an issue 
before drools 5.1, it's been fixed for ages).
Because IntConstraintOccurrence also adds the weight to the equals and 
hashcode functions, that change should be done.
 Geoffrey: thx for looking at my stuff. I still have the same issue with the
 rule modified not to use collect (that's how it was actually written
 originally. I later used Collect to be able to add the collection itself as
 a cause to the logical insert, thinking that would solve my issue).

 I am still wondering: the nurse example is far more complicated that what I
 am trying to accomplish with my simple test case, and still it runs fine.
Yes, it doesn't make sense. All the other examples work without problems 
in environmentMode DEBUG,
we even got tests on hudson running them.
Try to break any of those.
 --
 View this message in context: 
 http://drools.46999.n3.nabble.com/Planner-5-3-Final-presumedScore-is-corrupted-when-using-update-on-the-rules-working-memory-tp3546932p3566474.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


-- 
With kind regards,
Geoffrey De Smet


___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread MarcoMojana
I have set the session clock type to pseudo, the processing mode is still
stream and I have added the following rule:

rule SingleEvent 
dialect mvel
when
$e0 : TriggerEvent() over window:time(1h) from entry-point 
EventStream
then
System.err.println(SingleEvent  + $e0);
end

And I have changed the code in the following way:

eventStream.insert(new InhibitEvent(new GregorianCalendar(2011,
Calendar.DECEMBER, 6, 12,  0, 0).getTime()));
eventStream.insert(new TriggerEvent(new GregorianCalendar(2011,
Calendar.DECEMBER, 6, 13,  0, 0).getTime()));
eventStream.insert(new InhibitEvent(new GregorianCalendar(2011,
Calendar.DECEMBER, 6, 14,  0, 0).getTime()));
eventStream.insert(new TriggerEvent(new GregorianCalendar(2011,
Calendar.DECEMBER, 6, 14, 10, 0).getTime()));
EventFactHandle lastEventHandle = (EventFactHandle) eventStream.insert(new
InhibitEvent(new GregorianCalendar(2011, Calendar.DECEMBER, 6, 14, 20,
0).getTime()));

System.err.println(The session clock is set to:  + new
Date(pseudoClock.getCurrentTime()));
ksession.fireAllRules();
System.err.println(The session clock is set to:  + new
Date(pseudoClock.getCurrentTime()));

It prints:

The session clock is set to: Thu Jan 01 01:00:00 CET 1970
SingleEvent TriggerEvent [timestamp=Tue Dec 06 14:10:00 CET 2011]
SingleEvent TriggerEvent [timestamp=Tue Dec 06 13:00:00 CET 2011]
The session clock is set to: Thu Jan 01 01:00:00 CET 1970

This means that, with a pseudo clock, even if you don't update it,
drools will consider also the events happening after it (The events are 
inserted in the entry-point, not as facts). In my opinion this doesn't
make any sense.

Adding others fireAllRules() and clock updates doesn't change the output.
What am I doing wrong?

Now I would like to trigger also the EventNotInhibited rule. I have
defined a method that updates the session clock in one big step:

private static void advanceSessionClock(StatefulKnowledgeSession ksession,
long time) {

final SessionPseudoClock pseudoClock = ksession.getSessionClock();

final long advance = time - pseudoClock.getCurrentTime();
if(advance  0)
pseudoClock.advanceTime(advance, TimeUnit.MILLISECONDS);
ksession.fireAllRules();

}

The event insertion is done like this:

lastEventHandle = (EventFactHandle) eventStream.insert(new InhibitEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 12,  0, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());
lastEventHandle = (EventFactHandle) eventStream.insert(new TriggerEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 13,  0, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());
lastEventHandle = (EventFactHandle) eventStream.insert(new InhibitEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 14,  0, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());
lastEventHandle = (EventFactHandle) eventStream.insert(new TriggerEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 14, 10, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());
lastEventHandle = (EventFactHandle) eventStream.insert(new InhibitEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 14, 20, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());

This works as expected, but the rule is triggered after inserting the event
at 13:00:00, so it could also be that drools has already removed the event
at 12:00:00 (the 1h window is strict) and it triggers the event, so I have
modified the timestamps like this:

lastEventHandle = (EventFactHandle) eventStream.insert(new InhibitEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 12, 10, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());
lastEventHandle = (EventFactHandle) eventStream.insert(new TriggerEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 13,  0, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());
lastEventHandle = (EventFactHandle) eventStream.insert(new InhibitEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 13, 50, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());
lastEventHandle = (EventFactHandle) eventStream.insert(new TriggerEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 14,  0, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());
lastEventHandle = (EventFactHandle) eventStream.insert(new InhibitEvent(new
GregorianCalendar(2011, Calendar.DECEMBER, 6, 14, 10, 0).getTime()));
advanceSessionClock(ksession, lastEventHandle.getStartTimestamp());

The rule should still be triggered, for example considering a 1h window
betweeen 12:30:00 and 13:30:00. It is not, even changing the clock
update method as follows:

private static void advanceSessionClock(StatefulKnowledgeSession ksession,

Re: [rules-users] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread Wolfgang Laun
See below.

On 07/12/2011, MarcoMojana marco.moj...@exmachina.ch wrote:
 I have set the session clock type to pseudo, the processing mode is still
 stream and I have added the following rule:

 rule SingleEvent
   dialect mvel
   when
   $e0 : TriggerEvent() over window:time(1h) from entry-point 
 EventStream
   then
   System.err.println(SingleEvent  + $e0);
 end

 And I have changed the code in the following way:

 eventStream.insert(new InhibitEvent(new GregorianCalendar(2011,
 Calendar.DECEMBER, 6, 12,  0, 0).getTime()));
 eventStream.insert(new TriggerEvent(new GregorianCalendar(2011,
 Calendar.DECEMBER, 6, 13,  0, 0).getTime()));
 eventStream.insert(new InhibitEvent(new GregorianCalendar(2011,
 Calendar.DECEMBER, 6, 14,  0, 0).getTime()));
 eventStream.insert(new TriggerEvent(new GregorianCalendar(2011,
 Calendar.DECEMBER, 6, 14, 10, 0).getTime()));
 EventFactHandle lastEventHandle = (EventFactHandle) eventStream.insert(new
 InhibitEvent(new GregorianCalendar(2011, Calendar.DECEMBER, 6, 14, 20,
 0).getTime()));

 System.err.println(The session clock is set to:  + new
 Date(pseudoClock.getCurrentTime()));
 ksession.fireAllRules();
 System.err.println(The session clock is set to:  + new
 Date(pseudoClock.getCurrentTime()));

 It prints:

 The session clock is set to: Thu Jan 01 01:00:00 CET 1970
 SingleEvent TriggerEvent [timestamp=Tue Dec 06 14:10:00 CET 2011]
 SingleEvent TriggerEvent [timestamp=Tue Dec 06 13:00:00 CET 2011]
 The session clock is set to: Thu Jan 01 01:00:00 CET 1970

 This means that, with a pseudo clock, even if you don't update it,
 drools will consider also the events happening after it (The events are
 inserted in the entry-point, not as facts). In my opinion this doesn't
 make any sense.

With the pseudo clock set to the begin of the epoch you run Drools as
if we had 1970. Drools refuses to believe that it is fed events that are
in the future; asking it to locate events that have happened not earlier
than one hour ago includes those with a timestamp that is in the future.



 Adding others fireAllRules() and clock updates doesn't change the output.
 What am I doing wrong?

Do you really set the pseudo clock to the values in the timestamps?
  set the clock
  insert the event
  fire all rules



 Now I would like to trigger also the EventNotInhibited rule. I have
 defined a method that updates the session clock in one big step:

 private static void advanceSessionClock(StatefulKnowledgeSession ksession,
 long time) {
   
   final SessionPseudoClock pseudoClock = ksession.getSessionClock();
   
   final long advance = time - pseudoClock.getCurrentTime();
   if(advance  0)
   pseudoClock.advanceTime(advance, TimeUnit.MILLISECONDS);
   ksession.fireAllRules();
   

I would not call fireAllRules here - see the pseudo-code above. The arrival
of an event with timestamp T should happen when the clock points at T.

-W
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread MarcoMojana

laune wrote
 
 Do you really set the pseudo clock to the values in the timestamps?
   set the clock
   insert the event
   fire all rules
 

Now, if I do:
  set the clock
  fire all rules
  insert the event

i.e., something like this:

nextEventTime = new GregorianCalendar(2011, Calendar.DECEMBER, 6, 12, 10,
0).getTime();
advanceSessionClock(ksession, nextEventTime.getTime());
System.err.println(Firing rules);
ksession.fireAllRules();
System.err.println(Inserting event);
eventStream.insert(new InhibitEvent(nextEventTime));

everything works unexpectedly correctly. It works even when the clock is
updated in one single step (instead of once per second). Doing the three
steps in the sequence you suggested, i.e.

nextEventTime = new GregorianCalendar(2011, Calendar.DECEMBER, 6, 12, 10,
0).getTime();
advanceSessionClock(ksession, nextEventTime.getTime());
System.err.println(Inserting event);
eventStream.insert(new InhibitEvent(nextEventTime));
System.err.println(Firing rules);
ksession.fireAllRules();

never triggers the rule. Have you an idea why this happens?
Does it exists a configuration option that implicitly updates the session
clock with that of the last inserted event if the latter is in the future?

--

MM


--
View this message in context: 
http://drools.46999.n3.nabble.com/Sliding-window-behavior-in-stream-mode-and-realtime-clock-tp3564950p3567049.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] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread Wolfgang Laun
With the rules you gave, in STREAM mode and with a pseudo clock and
running 5.2.0:

SessionPseudoClock clock;

private void advance( Date eventDate ){
long currentTime = clock.getCurrentTime();
long eventTime = eventDate.getTime();
clock.advanceTime( eventTime - currentTime, TimeUnit.MILLISECONDS );
}

private void makeFacts(){
clock = kSession.getSessionClock();
WorkingMemoryEntryPoint eventStream =
kSession.getWorkingMemoryEntryPoint( EventStream );
InhibitEvent inhibit;
TriggerEvent trigger;

inhibit = new InhibitEvent( new GregorianCalendar(2011,
Calendar.DECEMBER, 6,
 12,  0, 0).getTime() );
advance( inhibit.getTimestamp() );
eventStream.insert( inhibit );
kSession.fireAllRules();

// proceed likewise with events at 1300, 1400, 1410, 1420

Output:
SingleEvent TriggerEvent [timestamp=Tue Dec 06 13:00:00 CET 2011]
Found TriggerEvent [timestamp=Tue Dec 06 13:00:00 CET 2011]
SingleEvent TriggerEvent [timestamp=Tue Dec 06 14:10:00 CET 2011]



On 07/12/2011, MarcoMojana marco.moj...@exmachina.ch wrote:

 laune wrote

 Do you really set the pseudo clock to the values in the timestamps?
   set the clock
   insert the event
   fire all rules


 Now, if I do:
   set the clock
   fire all rules
   insert the event

 i.e., something like this:

 nextEventTime = new GregorianCalendar(2011, Calendar.DECEMBER, 6, 12, 10,
 0).getTime();
 advanceSessionClock(ksession, nextEventTime.getTime());
 System.err.println(Firing rules);
 ksession.fireAllRules();
 System.err.println(Inserting event);
 eventStream.insert(new InhibitEvent(nextEventTime));

 everything works unexpectedly correctly. It works even when the clock is
 updated in one single step (instead of once per second). Doing the three
 steps in the sequence you suggested, i.e.

 nextEventTime = new GregorianCalendar(2011, Calendar.DECEMBER, 6, 12, 10,
 0).getTime();
 advanceSessionClock(ksession, nextEventTime.getTime());
 System.err.println(Inserting event);
 eventStream.insert(new InhibitEvent(nextEventTime));
 System.err.println(Firing rules);
 ksession.fireAllRules();

 never triggers the rule. Have you an idea why this happens?
 Does it exists a configuration option that implicitly updates the session
 clock with that of the last inserted event if the latter is in the future?

 --

 MM


 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Sliding-window-behavior-in-stream-mode-and-realtime-clock-tp3564950p3567049.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] cron timer not running

2011-12-07 Thread ollem
Hi!

I have a problem with getting cron based timers to start running.
The rules compiles just fine it's just that the timer never executes the
rule.
When I use timer ( int: 1m ) it works fine but not with cron timers.
My rule looks like the following:

rule whatever
timer(cron:* 0/1 * * * ?)
when
 ..

--
View this message in context: 
http://drools.46999.n3.nabble.com/cron-timer-not-running-tp3567205p3567205.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] cron timer not running

2011-12-07 Thread Wolfgang Laun
When do you expect this to fire? Is the condition true?
-W


On 07/12/2011, ollem olle.martens...@digitalroute.com wrote:
 Hi!

 I have a problem with getting cron based timers to start running.
 The rules compiles just fine it's just that the timer never executes the
 rule.
 When I use timer ( int: 1m ) it works fine but not with cron timers.
 My rule looks like the following:

 rule whatever
   timer(cron:* 0/1 * * * ?)
 when
  ..

 --
 View this message in context:
 http://drools.46999.n3.nabble.com/cron-timer-not-running-tp3567205p3567205.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] cron timer not running

2011-12-07 Thread Wolfgang Laun
I think that the entry should be written

   cron: * 0-59/1 ...

-W


On 07/12/2011, Olle Martensson olle.martens...@digitalroute.com wrote:
 Thanks for answering.

 I expect the condition of the rule to be evaluated every minute by the
 cron timer.
 Yes the condition is true, that's why I'm puzzled. Maybe I have just
 misunderstood the way that timers work.

 What I want to achieve is:

 I want an event to represent a window in time and every minute that window
 is replaced by a new one. I want to be able to track a certain type of
 event that has happened during this window in time.
 I'm not looking for sliding windows.

 BR // Olle

 On 12/7/11 1:42 PM, Wolfgang Laun wolfgang.l...@gmail.com wrote:

When do you expect this to fire? Is the condition true?
-W


On 07/12/2011, ollem olle.martens...@digitalroute.com wrote:
 Hi!

 I have a problem with getting cron based timers to start running.
 The rules compiles just fine it's just that the timer never executes the
 rule.
 When I use timer ( int: 1m ) it works fine but not with cron timers.
 My rule looks like the following:

 rule whatever
 timer(cron:* 0/1 * * * ?)
 when
  ..

 --
 View this message in context:

http://drools.46999.n3.nabble.com/cron-timer-not-running-tp3567205p356720
5.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 mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] 'else' in rule

2011-12-07 Thread Spyros Sakellariou
I fully agree with Jim K.  

Writing good business rules (and in my opinion good business rules are loosely 
coupled) is not straightforward and intuitive at the beginning and requires 
from software engineers to develop a different mindset.

Having an ELSE statement could be a deterrent from writing loosely coupled 
rules which is a good practice IMHO.  It reminds me of my early BASIC 
programming days (in the 80's :) where I would end up with horrible spaghetti 
code because of my misuse of the infamous GOTO statement.

I also vote against the ELSE statement.

Spyros 

-Original Message-
From: rules-users-boun...@lists.jboss.org 
[mailto:rules-users-boun...@lists.jboss.org] On Behalf Of JimK
Sent: Tuesday, December 06, 2011 9:08 PM
To: rules-users@lists.jboss.org
Subject: Re: [rules-users] 'else' in rule

My $.02
I'm early in my use of Drools and Rules and struggled at first with the lack
of ELSE.  At first I would frequently feel an ELSE would be prefect here. 
After awhile I believe that NOT having Else is a good thing.   As I get
better with writing rules I find that most of the times when I think I need
an Else it usually means I should take a closer look at the rule.  

If I have a true Else situation for me I put the two rules one right after
another. In these situations I think it is better to have to write the
ELSE rule as effectively a NOT of the WHEN rule then having an ELSE fall
through. Isn't that much extra coding and usually gives me pause to give it
one more evaluation to see if this is a true ELSE or a new rule with similar
criteria from the When.

Many times the ELSE covers too many possibilities that should be explicitly
checked and for me at least tells me I might not have fully broken the
requirements down.  As another posting indicates the complexity of
implementing it I also wonder about the performance hit the logic to allow
for an ELSE would add.

With my current understanding of business rules and drools I would vote
against an ELSE.

Jim K.

--
View this message in context: 
http://drools.46999.n3.nabble.com/else-in-rule-tp3264337p3565278.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] XSD resource type

2011-12-07 Thread Radovan Synek
Hello,

I am trying Spring - Drools integration and in the documentation I found this 
line:
drools:resource source=classpath:org/drools/container/spring/model.xsd /
(section 2.1.1.4. Define a KnowledgeBase, example 2.2)

I also realized that XSD resource type is present in the resourceTypeEnum 
(drools-spring.xsd).

Could I ask you where to find more information about this resource type?

Best regards,

Radovan Synek
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Planner 5.3.Final - presumedScore is corrupted when using update on the rules working memory = shadow proxies problems?

2011-12-07 Thread guyramirez
Adding to your analysis:
when looking at the Building ConstraintOccurrence summary for the presumed
working memory we can see what is wrong (the cause includes the collection
of matching ShiftAssignment to IntervalRequirement). Also keep in mind that
there is only one instance of a ShiftAssignment (starting at 100 and going
from 1 to 4 in duration), versus 4 instances of IntervalRequirement
(interval # from 100 to 103):

2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
(intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement: interval:
101, position id: 1, staffingRequired: 2, [ShiftAssignment: emp. id: 10 [st:
100, dur: 1]]]=1) 

Here it matched wrongly the ShiftAssignment. Nothink should have been
matched since the ShiftAssignment covers only interval 100. Weight should
have been 2 instead of 1.



2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
(intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement: interval:
100, position id: 1, staffingRequired: 2, [ShiftAssignment: emp. id: 10 [st:
100, dur: 1], ShiftAssignment: emp. id: 10 [st: 100, dur: 1]]]=0) 

Here that's the oddest. The ShiftAssignment should be matched, however the
cause shows that it matched *twice* the same and only one ShiftAdjustment.
Weight should have been 1 instead of 0.

Maybe this odd behavior would ring some bells?

--
View this message in context: 
http://drools.46999.n3.nabble.com/Planner-5-3-Final-presumedScore-is-corrupted-when-using-update-on-the-rules-working-memory-tp3546932p3567517.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] Planner 5.3.Final - presumedScore is corrupted when using update on the rules working memory = shadow proxies problems?

2011-12-07 Thread Geoffrey De Smet


Op 07-12-11 15:12, guyramirez schreef:
 Adding to your analysis:
 when looking at the Building ConstraintOccurrence summary for the presumed
 working memory we can see what is wrong (the cause includes the collection
 of matching ShiftAssignment to IntervalRequirement). Also keep in mind that
 there is only one instance of a ShiftAssignment (starting at 100 and going
 from 1 to 4 in duration), versus 4 instances of IntervalRequirement
 (interval # from 100 to 103):

 2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
 (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement: interval:
 101, position id: 1, staffingRequired: 2, [ShiftAssignment: emp. id: 10 [st:
 100, dur: 1]]]=1)

 Here it matched wrongly the ShiftAssignment. Nothink should have been
 matched since the ShiftAssignment covers only interval 100. Weight should
 have been 2 instead of 1.



 2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
 (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement: interval:
 100, position id: 1, staffingRequired: 2, [ShiftAssignment: emp. id: 10 [st:
 100, dur: 1], ShiftAssignment: emp. id: 10 [st: 100, dur: 1]]]=0)

 Here that's the oddest. The ShiftAssignment should be matched, however the
 cause shows that it matched *twice* the same and only one ShiftAdjustment.
 Weight should have been 1 instead of 0.

 Maybe this odd behavior would ring some bells?
Bugs in your Solution.cloneSolution() function? Or in it's equals or 
hashcode function?
Compare it with the implementation from the examples.
It's odd indeed that the tmp working memory is incorrect, instead of the 
real one.


This is how I 'd write the rule btw:

when
 $intervalReq : IntervalRequirement($interval : interval,
$position : position, $staffingRequired : staffingRequired)
  $matchingShiftAssignmentSize : Number(intValue=
$staffingRequired) from accumulate(
  $x : ShiftAssignment(shiftStartTime= $interval,
shiftEndTime  $interval, position == $position),
  count($x)
  )
then
insertLogical(new 
IntConstraintOccurrence(intervalRequirementCovered,
ConstraintType.NEGATIVE_HARD,
$staffingRequired - 
$matchingShiftAssignmentSize,
$intervalReq)) // No  
$matchingShiftAssignments in causes



 --
 View this message in context: 
 http://drools.46999.n3.nabble.com/Planner-5-3-Final-presumedScore-is-corrupted-when-using-update-on-the-rules-working-memory-tp3546932p3567517.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


-- 
With kind regards,
Geoffrey De Smet


___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Planner 5.3.Final - presumedScore is corrupted when using update on the rules working memory = shadow proxies problems?

2011-12-07 Thread Patrik Dufresne
During my debugging, I notice the call to getWorkingFacts() doesn't include
the planning entities. To make sure, I've run the NQueens example (that use
the same construction heuristic) : the call to getWorkingFacts() include
the planning entities.

After more debugging, I figure out the problem. The ValueRange of my
PlanningEntity include 'null'. I use null for un-assigned shift. In
PlanningVariableDescriptor.java:149, the check for initialized variable
return False if the value is null. Then my planning entity is wrongly
identify as not initialized and the SolutionDescriptor.java:135 doesn't
include it in the facts list.

So how do I fix it ?

2011/12/7 Geoffrey De Smet ge0ffrey.s...@gmail.com

 **


 Op 07-12-11 02:18, Patrik Dufresne schreef:

 I'm still experimenting with Drools Planner and I also have the exact same
 issue :

   java.lang.IllegalStateException: The presumedScore (0hard/-1soft) is
 corrupted because it is not the realScore  (0hard/0soft).
Presumed workingMemory:
  Score rule (soft-ReduceNullAssignment) has count (1) and weight
 total (1).
Real workingMemory:
   at
 org.drools.planner.core.solution.director.DefaultSolutionDirector.assertWorkingScore(DefaultSolutionDirector.java:157)
  at
 org.drools.planner.core.solver.DefaultSolverScope.assertWorkingScore(DefaultSolverScope.java:105)
  at
 org.drools.planner.core.phase.AbstractSolverPhaseScope.assertWorkingScore(AbstractSolverPhaseScope.java:132)
  at
 org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:69)
  at
 org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:166)
  at
 org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:138)
   ...

  I've read this (https://issues.jboss.org/browse/JBRULES-3301), but it
 didn't help :

- I'm using IntConstraintOccurrence
- I double check the soft constraint named soft-ReduceNullAssignment
-- it's include all the cause.
- I'm using Drools 5.3

 After more digging, I think something is missing in
 DefaultSolutionDirector.java:153. The facts are added, but the
 planningEntity are not added.

 They are added:

  for (Object fact : getWorkingFacts()) {
 tmpWorkingMemory.insert(fact);
 }

 public CollectionObject getWorkingFacts() {
 return solutionDescriptor.getAllFacts(workingSolution); // returns
 the problem facts + the initiliazed planningEntity's

 }

  So when the score calculation is running, there is two different result.
 I'v place a breakpoint at DefaultSolutionDirector.java:157 and looking
 in tmpWorkingMemory-defaultEntryPoint-objectStore-identifyMap-table, I
 don't see the planningEntity.

 That's weird.

 Could you try this with the latest drools-planner-core 5.4.0.SNAPSHOT from
 the jboss nexus repository too?
 You'll have to branch and upgrade your local code:

 https://github.com/droolsjbpm/drools-planner/blob/master/drools-planner-distribution/src/main/assembly/filtered-resources/UpgradeFromPreviousVersionRecipe.txt

 As a side affect, you'll notice that the exception message will be much
 much clearer too, which will help in discovering the problem.


  Here is the my rule :

  rule soft-ReduceNullAssignment
  when
 $planif : PlanifEventAssignment( employee == null )
 then
  insertLogical(new
 IntConstraintOccurrence(soft-ReduceNullAssignment,
  ConstraintType.NEGATIVE_SOFT,
  1,
  $planif));
  end


  Thanks

 On Tue, Dec 6, 2011 at 11:12 AM, Geoffrey De Smet ge0ffrey.s...@gmail.com
  wrote:



 Op 06-12-11 05:38, guyramirez schreef:
   Still the same issue, starting with the construction heuristic phase.
 Please
  let me know if you need more explanations in what I am trying to do.
 
  Here is the error. Please note that there is only one planning entity
  (ShiftAssignment) object instance in this test.
 
  Total Staffing required: 8
  2011-12-05 22:21:49,627 [main] INFO  Solver started: time spend (0),
 score
  (null), new best score (null), random seed (0).
  ShiftAssignment: emp. id: 10 [st: 100, dur: 3]
  ShiftAssignment: emp. id: 10 [st: 100, dur: 2]
  ShiftAssignment: emp. id: 10 [st: 100, dur: 4]
  ShiftAssignment: emp. id: 10 [st: 100, dur: 1]
  2011-12-05 22:21:49,678 [main] TRACE Building ConstraintOccurrence
 summary
  2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
  (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement:
 interval:
  101, position id: 1, staffingRequired: 2, [ShiftAssignment: emp. id: 10
 [st:
  100, dur: 1]]]=1)
  2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
  (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement:
 interval:
  103, position id: 1, staffingRequired: 2, []]=2)
  2011-12-05 22:21:49,678 [main] TRACE Adding ConstraintOccurrence
  (intervalRequirementCovered/NEGATIVE_HARD:[IntervalRequirement:
 interval:
  102, position id: 1, 

Re: [rules-users] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread MarcoMojana

laune wrote
 
 With the rules you gave, in STREAM mode and with a pseudo clock and
 running 5.2.0:
 
 Output:
 SingleEvent TriggerEvent [timestamp=Tue Dec 06 13:00:00 CET 2011]
 Found TriggerEvent [timestamp=Tue Dec 06 13:00:00 CET 2011]
 SingleEvent TriggerEvent [timestamp=Tue Dec 06 14:10:00 CET 2011]
 

I cannot reproduce your output with 5.3.0 final. A possible explanation is
that if you fireAllRules when the inhibit event @ 13:50:00 is already in the
entry-point, the sliding window moves from 13:00:00, but it already sees the
event in the future (if I have correctly understood, a 1h window sees the
past 1h and all the future). The event @ 13:50:00 is of type Inhibit, so
it blocks the rule.

--
MM

--
View this message in context: 
http://drools.46999.n3.nabble.com/Sliding-window-behavior-in-stream-mode-and-realtime-clock-tp3564950p3567750.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] target directory checked in?

2011-12-07 Thread Laird Nelson
(I found a reply to this on Nabble; it never came through the email
gateway, and Nabble won't let me reply directly using its interface.
Anyhow, the replier wanted to know what Git URL I used since he said that
drools-ruleml was not under the droolsjbpm umbrella.)

I am a hopeless git newbie.  Here's what I did to attempt to come up with
that information:

Laird-Nelsons-MacBook-Pro:drools-ruleml ljnelson$ git remote -v
origingit://github.com/droolsjbpm/drools.git (fetch)
origingit://github.com/droolsjbpm/drools.git (push)

I hope that helps.

Best,
Laird

On Tue, Dec 6, 2011 at 1:16 PM, Laird Nelson ljnel...@gmail.com wrote:

 I just did a git pull on the drools repositories and noticed that at
 least one of the projects has the target directory checked in.  Was this
 intentional?

 My apologies if this is a known issue or deliberate.  It just struck me as
 odd, that's all.

 Arbitrary excerpt:

  create mode 100644
 drools-ruleml/target/test-classes/ruleml/translator/TestDataModel$Sell.class
  create mode 100644
 drools-ruleml/target/test-classes/ruleml/translator/TestDataModel.class
  create mode 100644
 drools-ruleml/target/test-classes/ruleml/translator/TestDrools2RuleML.class
  create mode 100644
 drools-ruleml/target/test-classes/ruleml/translator/TestRuleML2Drools.class
  create mode 100644
 drools-ruleml/target/test-classes/ruleml/translator/Util.class

 Best,
 Laird

 --
 http://about.me/lairdnelson




-- 
http://about.me/lairdnelson
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] How to let a rule run only one time

2011-12-07 Thread Zhao Yi
This is my code:

 session.getAgenda().getAgendaGroup(add).setFocus();
 try {
int rule=session.fireAllRules();
System.out.println(rule+ rules fired);
} catch (Exception e) {
e.printStackTrace();
}

The rule doesn't print the message and the code print 0 rules fired. I am
using drools 5.1.1. Is this the version you are using?

My rule file is:

rule add2
agenda-group add
dialect java 
lock-on-active
when 
eval(true)
then 
System.out.println(add2);
end

--
View this message in context: 
http://drools.46999.n3.nabble.com/How-to-let-a-rule-run-only-one-time-tp3550555p356.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] Planner 5.3.Final - presumedScore is corrupted when using update on the rules working memory = shadow proxies problems?

2011-12-07 Thread guyramirez
Yes I am getting the same results with your recommended rule.

Also I wrote a Drools program that does not use Planner but instead performs
the initial insert of the ShiftAdjustment, then the 3 updates with the
firing of the rules at each insert/update, all in sequence, with the display
of the score after each firing (so no use of the Solution class). And I get
exactly the same erroneous results.

I agree with you, it could be in the hashCode and/or equals methods. I will
check them again against the examples. I have done it so many times already.
:)

 It's odd indeed that the tmp working memory is incorrect, instead of the 
real one. 
The real working memory is created everytime from scratch to check against
the presumed score, right? Somehow the update of a fact (planning entity in
this case) does not yield the same result as a retract and then insert (or
plain insert in the case of the real working memory).

We looked at the planning entity code earlier. Here is some code for the
IntervalRequirement class that is being used to match against the
ShiftAssignment:

public class IntervalRequirement implements ComparableIntervalRequirement
{
private int dayAppliesTo;
private int interval;
private int intervalMinutes;
private Position position;
private int staffingRequired;

@Override
public int compareTo(IntervalRequirement other) {
return this.interval - other.interval;
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
} else if (o instanceof IntervalRequirement) {
IntervalRequirement other = (IntervalRequirement) o;
return new EqualsBuilder()
.append(this.interval, other.interval)
.append(this.position, other.position)
.append(this.staffingRequired, other.staffingRequired)
.isEquals();
} else {
return false;
}

@Override
public int hashCode() {
return new HashCodeBuilder()
.append(getClass())
.append(this.interval)
.append(this.position)
   
.append(this.staffingRequired)
.toHashCode();
}
...
}

--
View this message in context: 
http://drools.46999.n3.nabble.com/Planner-5-3-Final-presumedScore-is-corrupted-when-using-update-on-the-rules-working-memory-tp3546932p3567779.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] Statefull working memory corruption in Drools 5.3.Final - Was [Planner] presumedScore is corrupted

2011-12-07 Thread Geoffrey De Smet


Op 07-12-11 16:44, guyramirez schreef:
 Yes I am getting the same results with your recommended rule.

 Also I wrote a Drools program that does not use Planner but instead performs
 the initial insert of the ShiftAdjustment, then the 3 updates with the
 firing of the rules at each insert/update, all in sequence, with the display
 of the score after each firing (so no use of the Solution class). And I get
 exactly the same erroneous results.
Then it's a bug in Drools Expert,
   please create a jira at
   issues.jboss.org/browse/JBRULES
and attach code to reproduce (or even better, create a pull request at 
github.com/droolsjbpm with a regression test).
Also try running with the drools-core/compiler 5.4.0-SNAPSHOT's to see 
if they have it too and report it in the issue.
 I agree with you, it could be in the hashCode and/or equals methods. I will
 check them again against the examples. I have done it so many times already.
 :)

 It's odd indeed that the tmp working memory is incorrect, instead of the
 real one.
 The real working memory is created everytime from scratch to check against
 the presumed score, right?
in environment mode TRACE: yes
in environment mode DEBUG: yes, but not every move, but every step (it's 
too slow otherwise)
   Somehow the update of a fact (planning entity in
 this case) does not yield the same result as a retract and then insert (or
 plain insert in the case of the real working memory).
yes, there is statefull working memory corruption.
 We looked at the planning entity code earlier. Here is some code for the
 IntervalRequirement class that is being used to match against the
 ShiftAssignment:

 public class IntervalRequirement implements ComparableIntervalRequirement
 {
   private int dayAppliesTo;
   private int interval;
   private int intervalMinutes;
   private Position position;
   private int staffingRequired;

 @Override
   public int compareTo(IntervalRequirement other) {
   return this.interval - other.interval;
   }

 @Override
   public boolean equals(Object o) {
  if (this == o) {
  return true;
  } else if (o instanceof IntervalRequirement) {
   IntervalRequirement other = (IntervalRequirement) o;
  return new EqualsBuilder()
  .append(this.interval, other.interval)
  .append(this.position, other.position)
  .append(this.staffingRequired, other.staffingRequired)
  .isEquals();
  } else {
  return false;
  }

   @Override
   public int hashCode() {
   return new HashCodeBuilder()
   .append(getClass())
   .append(this.interval)
   .append(this.position)

 .append(this.staffingRequired)
   .toHashCode();
   }
 ...
 }
Looks good, but I am talking about the cloneSolution() of the class that 
implements Solution, not the planning entity.
 --
 View this message in context: 
 http://drools.46999.n3.nabble.com/Planner-5-3-Final-presumedScore-is-corrupted-when-using-update-on-the-rules-working-memory-tp3546932p3567779.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


-- 
With kind regards,
Geoffrey De Smet


___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread Wolfgang Laun
I didn't use an event with time stamp 1350. See the times in my
previous mail; data was taken from your original post.

-W


On 07/12/2011, MarcoMojana marco.moj...@exmachina.ch wrote:

 laune wrote

 With the rules you gave, in STREAM mode and with a pseudo clock and
 running 5.2.0:

 Output:
 SingleEvent TriggerEvent [timestamp=Tue Dec 06 13:00:00 CET 2011]
 Found TriggerEvent [timestamp=Tue Dec 06 13:00:00 CET 2011]
 SingleEvent TriggerEvent [timestamp=Tue Dec 06 14:10:00 CET 2011]


 I cannot reproduce your output with 5.3.0 final. A possible explanation is
 that if you fireAllRules when the inhibit event @ 13:50:00 is already in the
 entry-point, the sliding window moves from 13:00:00, but it already sees the
 event in the future (if I have correctly understood, a 1h window sees the
 past 1h and all the future). The event @ 13:50:00 is of type Inhibit, so
 it blocks the rule.

 --
 MM

 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Sliding-window-behavior-in-stream-mode-and-realtime-clock-tp3564950p3567750.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] Is this an appropriate approach

2011-12-07 Thread ronalbury
As an alternative - can I use ruleflow-group without using .rf files?  Can I
put the regular expression evaluations in one rule-flow group and the
semantic evaluations in a different rule-flow group, and then control the
ruleflow-group activations programatically?

If this is doable - is it a better or worse idea than making two separate
runs thru two separate knowledge bases?

--
View this message in context: 
http://drools.46999.n3.nabble.com/Is-this-an-appropriate-approach-tp3567852p3567870.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] Does drools generate document from drl files?

2011-12-07 Thread Zhao Yi
I want to add some comments on drl files and get a document from that. I know
that guvnor can do this for me but it simply copy all the drl file content
into a pdf file. What I want is that we can write some comments in a
specified format provided by drools and generate a document like, html. Can
I do this in drools or not?

--
View this message in context: 
http://drools.46999.n3.nabble.com/Does-drools-generate-document-from-drl-files-tp3567875p3567875.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] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread MarcoMojana

laune wrote
 
 I didn't use an event with time stamp 1350. See the times in my
 previous mail; data was taken from your original post.
 

With the data taken from the original post I can reproduce your output.
Setting the timestamps to:
12:10 - 13:00 - 13:50 - 14:00 - 14:10
It still doesn't work.

--
MM

--
View this message in context: 
http://drools.46999.n3.nabble.com/Sliding-window-behavior-in-stream-mode-and-realtime-clock-tp3564950p3567891.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] DroolsjBPM at ICAART 4th International Conference on Agents and Artificial Intelligence

2011-12-07 Thread Mark Proctor
We have a tentative full day tutorial for Droosl  jBPM in Portugal, 
Algarve, in Febuary 6 - 8. I'm just waiting for internal confirmations, 
but I wanted to start getting prelimary communication out there.

http://www.icaart.org/tutorials.asp

Mark
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] [rules-dev] DroolsjBPM at ICAART 4th International Conference on Agents and Artificial Intelligence

2011-12-07 Thread Mauricio Salatino
WOW, that sounds great!
Let me know if I can help with something, I'm not sure how far away is
Esteban from there.. but we can start planning to assist :)
Cheers!

On Wed, Dec 7, 2011 at 1:46 PM, Mark Proctor mproc...@codehaus.org wrote:
 We have a tentative full day tutorial for Droosl  jBPM in Portugal,
 Algarve, in Febuary 6 - 8. I'm just waiting for internal confirmations,
 but I wanted to start getting prelimary communication out there.

 http://www.icaart.org/tutorials.asp

 Mark
 ___
 rules-dev mailing list
 rules-...@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-dev



-- 
 - CTO @ http://www.plugtree.com
 - MyJourney @ http://salaboy.wordpress.com
 - Co-Founder @ http://www.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] Need clarification on how event expiration offset is calculated in 5.3.0.FINAL

2011-12-07 Thread Scott Embler
Hi,

I've recently started using some of the temporal operators that drools
supports (coincides, starts, finishes, during) and have had trouble with
events not being expired, causing severe memory consumption.
I'd first like to make sure that I'm using these operators appropriately,
so as a test case I have rules like:

declare A
  @role( event )
  @timestamp( timestamp )
  @duration( duration )
end

declare B
  @role( event )
  @timestamp( timestamp )
  @duration( duration )
end

rule coincides events
when
  $a: A() from entry-point a
  $b: B(this coincides $a) from entry-point b
then insert(coincides); end

With classes like:

public class A{
public final long timestamp;
public final long duration;
public A(long timestamp, long duration){
this.timestamp = timestamp;
this.duration = duration;
}
}

//B is identical to A.

Using a knowledge base configured with stream mode, and a knowledge session
with a pseudo clock I'd run this test:

A a = new A(0, 1000);
B b = new B(0, 1000);

entryPointA.insert(a);
entryPointB.insert(b);
clock.advanceTime(1000, TimeUnit.MILLISECONDS);
ksession.fireAllRules();

In this test I'm expecting that the rule will fire to insert coincides
and expire both A and B.  But instead, coincides is inserted, B is
expired, but A remains in memory permanently.  If I use jvisualvm to
inspect the expirationOffset for A, I see that it is the Long.MAX value of
9223372036854775807.  This behavior persists even after adding an explicit
expiration to A.  I was under the impression that the offset would be zero
(of close to it) since Drools would only need to retain A until the clock
reaches A's endTimestamp.  The documentation does not cover the calculation
of event expiration in great detail, so have I missed something?  Thanks in
advance.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] DroolsjBPM at ICAART 4th International Conference on Agents and Artificial Intelligence

2011-12-07 Thread Mark Proctor
On 07/12/2011 16:49, Mauricio Salatino wrote:
 WOW, that sounds great!
 Let me know if I can help with something, I'm not sure how far away is
 Esteban from there.. but we can start planning to assist :)
 Cheers!
I'm still waiting for internal confirmation at RHT, but assuming that 
goes ahead, the more help the better :)

icaart have said they will cancel the event if attendance is not high 
enough, so if you are thinking of going, make sure you register quickly, 
and help get the word out.

Mark

 On Wed, Dec 7, 2011 at 1:46 PM, Mark Proctormproc...@codehaus.org  wrote:
 We have a tentative full day tutorial for Droosl  jBPM in Portugal,
 Algarve, in Febuary 6 - 8. I'm just waiting for internal confirmations,
 but I wanted to start getting prelimary communication out there.

 http://www.icaart.org/tutorials.asp

 Mark
 ___
 rules-dev mailing list
 rules-...@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-dev



___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Sliding window behavior in stream mode and realtime clock

2011-12-07 Thread Wolfgang Laun
inhibit 12:10 - trigger 13:00 - inhibit 13:50 - trigger 14:00 -
inhibit 14:10

This should not print Found..., right? And it doesn't.

-W

On 07/12/2011, MarcoMojana marco.moj...@exmachina.ch wrote:

 laune wrote

 I didn't use an event with time stamp 1350. See the times in my
 previous mail; data was taken from your original post.


 With the data taken from the original post I can reproduce your output.
 Setting the timestamps to:
 12:10 - 13:00 - 13:50 - 14:00 - 14:10
 It still doesn't work.

 --
 MM

 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Sliding-window-behavior-in-stream-mode-and-realtime-clock-tp3564950p3567891.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] Hard constraints to enforce employee seniority

2011-12-07 Thread Patrik Dufresne
Hi all,

I'm trying to create rules to model my problem. So far, I didn't manage to
create rules to make Drools converge to a solution because of score traps.
I don't see any way to avoid it (as I'm not an expert with Drools). I can
express the rule as follow : a senior employee should work before a less
senior employee.

I've implement it as a hard constraint :
rule hard-Seniority
when
$employee : Employee()
 $assignment : PlanifEventAssignment( $planifEmployee : employee )
not PlanifEventAssignment( employee == $employee )
 eval(Helper.compareEmployee($employee, $planifEmployee)  0)
then
insertLogical(new IntConstraintOccurrence(hard-Seniority,
ConstraintType.NEGATIVE_HARD,
 1,
 $employee, $assignment));
end

The function Helper.compareEmployee(e1, e2) return -1 if e1 is more senior
then e2 (mostly based on hire date and other boolean fields).

This way, the rule make sure a senior employee is working. But it's a score
trap since, many moves are required to resolve the constraint. e.g:

PlanifEventAssignment1 = e2
PlanifEventAssignment2 = e3
PlanifEventAssignment3 = e4
PlanifEventAssignment4 = e5

e1 is not working. Multiple move are require to reach the best solution :
PlanifEventAssignment1 = e1
PlanifEventAssignment2 = e2
PlanifEventAssignment3 = e3
PlanifEventAssignment4 = e4

So I'm asking you. What is the best way to make Drools converge ? Do I need
to change my rule, or should I create a BigMove ?

-- 
Patrik Dufresne
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Need clarification on how event expiration offset is calculated in 5.3.0.FINAL

2011-12-07 Thread Edson Tirelli
   Scott,

   The event expiration algorithm in Drools works with compile time
analysis of temporal constraints. It calculates the transitive closure on
the temporal intervals created by each temporal constraint and from that it
infers the required time for an event to stay in memory, expiring them
after that. Some interactions are pretty hard to calculate manually, but as
you already realized, you can enable the Drools MBeans and use jconsole (or
visualvm as you mentioned) to inspect them.

In your case, first things first, I assume you are running the engine
in STREAM mode? the default is CLOUD mode, and in CLOUD mode there is no
expiration of events. Second, there was a bug in one of the released
versions of Drools (I think 5.2 or 5.3) that was fixed after where the
calculation was wrong if the events were in different packages. Finally,
you are using external timestamps for the events (on its attributes), so
make sure your clock is in line with the externally timestamped events.

If everything I mentioned is working as expected and your events are
still not being expired, please try adding an explicit expiration policy
(e.g., @expires( 1m ) ), and submit a bug (JIRA) with your findings.

Edson

2011/12/7 Scott Embler stemb...@gmail.com

 Hi,

 I've recently started using some of the temporal operators that drools
 supports (coincides, starts, finishes, during) and have had trouble with
 events not being expired, causing severe memory consumption.
 I'd first like to make sure that I'm using these operators appropriately,
 so as a test case I have rules like:

 declare A
   @role( event )
   @timestamp( timestamp )
   @duration( duration )
 end

 declare B
   @role( event )
   @timestamp( timestamp )
   @duration( duration )
 end

 rule coincides events
 when
   $a: A() from entry-point a
   $b: B(this coincides $a) from entry-point b
 then insert(coincides); end

 With classes like:

 public class A{
 public final long timestamp;
 public final long duration;
 public A(long timestamp, long duration){
 this.timestamp = timestamp;
 this.duration = duration;
 }
 }

 //B is identical to A.

 Using a knowledge base configured with stream mode, and a knowledge
 session with a pseudo clock I'd run this test:

 A a = new A(0, 1000);
 B b = new B(0, 1000);

 entryPointA.insert(a);
 entryPointB.insert(b);
 clock.advanceTime(1000, TimeUnit.MILLISECONDS);
 ksession.fireAllRules();

 In this test I'm expecting that the rule will fire to insert coincides
 and expire both A and B.  But instead, coincides is inserted, B is
 expired, but A remains in memory permanently.  If I use jvisualvm to
 inspect the expirationOffset for A, I see that it is the Long.MAX value of
 9223372036854775807.  This behavior persists even after adding an explicit
 expiration to A.  I was under the impression that the offset would be zero
 (of close to it) since Drools would only need to retain A until the clock
 reaches A's endTimestamp.  The documentation does not cover the calculation
 of event expiration in great detail, so have I missed something?  Thanks in
 advance.
 ___
 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] This (ordered) record validation approach is working

2011-12-07 Thread ronalbury
I didn't get any feedback when I posted earlier today, so I went ahead and
implemented what I thought would work ... and I figured I should share it
here since it seems to be working pretty well.

I created a Rule Flow as follows:
   A Rule-Flow-Group that validates the arrays.  Unfortunately I sometimes
get multiple related arrays of records instead of a single array of records. 
I confirm that records with mandatory values have arrays with at least one
element, and confirm that the related arrays are of equal length.  Errors
are logged.

   A subsequent Rule-Flow-Group that manages inserts.  The data actually
comes to me as one data structure comprised of sub-records of various types,
and I have DRL files for each record type.  Some of the sub-records are
optional, and since subsequent rules would erroneously flag empty
sub-records as errors I have rules here which only allow optional records
containing values to be inserted into the system.  I am currently using
for-loops in the THEN section of some rules to deal with the array problem
and would like to know if there is a better way.  No errors are generated
here.

   A subsequent Rule-Flow-Group that validates data.  The data is all sent
to me as Strings, even though many of the values are numbers, dates, etc. 
This Rule-Flow group tests the various fields using regular expressions, and
if a regular expression fails then the record is flagged as having an error. 
Optional fields are dealt with by the regular expression allowing a blank. 
Errors are logged.

   A Diverging Gateway that splits the data into two ... records without
validation errors are allowed to progress to the value-checking Rule-Flow
group ... those with errors have nothing more done to them.  I realize that
I could, for instance, let records with bogus numbers thru as long as my
string-to-integer routine is robust, however I don't want to flag the same
record multiple times (once by reg-ex and then again by the next
Rule-Flow-Group).

   A subsequent Rule-Flow-Group that checks the values and ranges of the
numbers, dates, etc, and does other types of validation (e.g. if fieldA has
a value greater than 20 then fieldB must be set to XYZ).  Errors are
logged.


This Rule-Flow approach currently seems to be solving all of my problems,
and it allows me to keep the rules simple and well structured such that most
of them are reusable in other parts of our system.

I'm interested in getting feedback on this approach ... it seems to be
working pretty well for me.  It allows me to deal with ordering issues and
many of the if/else issues, while keeping the rules simple enough for our
non-technical analysts to review without needing a developer to sit next to
them.

I realize this is a pretty mundane application for a powerful rules system,
but it seems like a good fit nonetheless.

Thanks
   Ron

--
View this message in context: 
http://drools.46999.n3.nabble.com/This-ordered-record-validation-approach-is-working-tp3568933p3568933.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] Can Drools supply large Knowledge Base?

2011-12-07 Thread WangRamon




Hi All  I'm new to Drools, I will build a very large Knowledge Base, let's say 
it will be larger than 100GB, the files will be stored in a distribute 
database, so can Droools supply this large Knowledge Base? Any solution? Thank 
you very much.   CheersRamon ___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] newStatefuleSession take a long time to run

2011-12-07 Thread Zhao Yi
I did a test. I create a knowledge base and create a statefuleSession. Then I
call newStatulSession 1000 times with 5 minutes sleep during each time.
There will be some times the newStatefulSession take 5 seconds. I wander why
it takes such a long time to run.

--
View this message in context: 
http://drools.46999.n3.nabble.com/newStatefuleSession-take-a-long-time-to-run-tp3569412p3569412.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] guvnor deploy on AS7 times out

2011-12-07 Thread rquinn
Deploying govnor-5.3.0.Final-jboss-as-7.0.war (renamed as guvnor.war) on
jboss-as-7.1.0.Beta1b standalone on Windows XP w/java build 1.6.0_29-b11.

First attempt was dropping the war into deployments

it seems to start fine
  - I do get some WARN ... does not point to a valid jar for a Class-Path
reference
  - and a couple of EJB get deployed

but ultimately I get - JBAS015052: Did not receive a response to the
deployment operation within the allowed timeout period [60 seconds]. Check
the server configuration file and the server logs to find more about the
status of the deployment.

Second attempt was via the content deployer in admin console but that even
less successful... content was deployed but enable produces no results,
error message or anything.  

any help appreciated...  i've seen another posting in the forum regarding
problems with guvnor deployments and AS7 but that was 5.2 and symptoms were
different.  response on that was an indication that 5.4 would refactor the
seam impl and solve some issues.

any help appreciated

thanx



--
View this message in context: 
http://drools.46999.n3.nabble.com/guvnor-deploy-on-AS7-times-out-tp3569468p3569468.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] How to use single Model in different rules across different packages

2011-12-07 Thread srinivasasanda
Hi All,

   I'm using Drools 5.0.1.I've declared two packages in Drools Guvnor
Package1 and Package2.I declared one Model named as TestModel in Package1.

Now,I created a business rule named as testrule in Package2.Now,while adding
conditions to this rule in when clause,I need to get the TestModel from
Package1.How it is possible?

It means I should use the same Model across different rules in different
packages.How it is possible.Please help me.I'm struggling in this..

Thanks 

--
View this message in context: 
http://drools.46999.n3.nabble.com/How-to-use-single-Model-in-different-rules-across-different-packages-tp3569485p3569485.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] How to use REST API

2011-12-07 Thread srinivasasanda
How can i use REST API in my drools application.Should i need to include any
jars in my application?where can i find REST API avaliable jars?Could you
please suggest me..

Thanks in Advance



--
View this message in context: 
http://drools.46999.n3.nabble.com/How-to-use-REST-API-tp3569493p3569493.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] This (ordered) record validation approach is working

2011-12-07 Thread Wolfgang Laun
In my Rules Fest 2011 boot camp Rule-Based Programming Design
Patterns I presented a generic solution using linked rule engines for
this and similar problems.
-W


On 08/12/2011, ronalbury ronalb...@gmail.com wrote:
 I didn't get any feedback when I posted earlier today, so I went ahead and
 implemented what I thought would work ... and I figured I should share it
 here since it seems to be working pretty well.

 I created a Rule Flow as follows:
A Rule-Flow-Group that validates the arrays.  Unfortunately I sometimes
 get multiple related arrays of records instead of a single array of records.
 I confirm that records with mandatory values have arrays with at least one
 element, and confirm that the related arrays are of equal length.  Errors
 are logged.

A subsequent Rule-Flow-Group that manages inserts.  The data actually
 comes to me as one data structure comprised of sub-records of various types,
 and I have DRL files for each record type.  Some of the sub-records are
 optional, and since subsequent rules would erroneously flag empty
 sub-records as errors I have rules here which only allow optional records
 containing values to be inserted into the system.  I am currently using
 for-loops in the THEN section of some rules to deal with the array problem
 and would like to know if there is a better way.  No errors are generated
 here.

A subsequent Rule-Flow-Group that validates data.  The data is all sent
 to me as Strings, even though many of the values are numbers, dates, etc.
 This Rule-Flow group tests the various fields using regular expressions, and
 if a regular expression fails then the record is flagged as having an error.
 Optional fields are dealt with by the regular expression allowing a blank.
 Errors are logged.

A Diverging Gateway that splits the data into two ... records without
 validation errors are allowed to progress to the value-checking Rule-Flow
 group ... those with errors have nothing more done to them.  I realize that
 I could, for instance, let records with bogus numbers thru as long as my
 string-to-integer routine is robust, however I don't want to flag the same
 record multiple times (once by reg-ex and then again by the next
 Rule-Flow-Group).

A subsequent Rule-Flow-Group that checks the values and ranges of the
 numbers, dates, etc, and does other types of validation (e.g. if fieldA has
 a value greater than 20 then fieldB must be set to XYZ).  Errors are
 logged.


 This Rule-Flow approach currently seems to be solving all of my problems,
 and it allows me to keep the rules simple and well structured such that most
 of them are reusable in other parts of our system.

 I'm interested in getting feedback on this approach ... it seems to be
 working pretty well for me.  It allows me to deal with ordering issues and
 many of the if/else issues, while keeping the rules simple enough for our
 non-technical analysts to review without needing a developer to sit next to
 them.

 I realize this is a pretty mundane application for a powerful rules system,
 but it seems like a good fit nonetheless.

 Thanks
Ron

 --
 View this message in context:
 http://drools.46999.n3.nabble.com/This-ordered-record-validation-approach-is-working-tp3568933p3568933.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] How to retrieve Fact names in Declarative Model

2011-12-07 Thread srinivasasanda
Hi,

How to retrieve factnames in declarative model present in guvnor.Please help
me by suggesting some classes and methods to retrieve.Please..I'm strucked
here..

Thanks

--
View this message in context: 
http://drools.46999.n3.nabble.com/How-to-retrieve-Fact-names-in-Declarative-Model-tp3569634p3569634.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