how to get first and last element of list of facts?
by Michiel Vermandel
Hi,
I need to plan some tasks within a nr of timeslots.
Until now a task was always done within the period of one timeslot and I could validate my rules since a task has a planning variablegetTimeSlot/ setTimeSlot.
Now requirements have changed and a task can take more than one timeslot to complete.
What is the best way to validate that the task is not started in a timeslot that would end the task after the last timeslot?
- Timeslots are always equally long (for example a week).
- All timeslots in the list of timeslots are sequential (no gaps).
So if I have a list of timeslots W18, W19, W20, W21 and I have a task taking 3 TimeSlots to complete, it should start in W18 or W19.
Should I create a single planningRange fact, holding the first and last slot?
Any directions would be appreciated.
Regards,
Michiel Vermandel
-----------------
http://www.codessentials.com - Your essential software, for free!
Follow us at http://twitter.com/#!/Codessentials
13 years
To access at the fact object
by Mister Nono
Hi,
I have the drools rule (made in guvnor server) :
1. | rule "driverRule"
2. | salience 10
3. | dialect "mvel"
4. | when
5. | Driver( driverAge : age > 18 && < 65 )
6. | then
7. | Driver fact0 = new Driver();
8. | fact0.setName( "TOTO" );
9. | insert( fact0 );
10. | end
... and the java code source :
KnowledgeAgent agent =
KnowledgeAgentFactory.newKnowledgeAgent("/Guvnor.properties");
KnowledgeBase ruleBase = agent.getKnowledgeBase();
StatefulKnowledgeSession workingMemory =
ruleBase.newStatefulKnowledgeSession();
Driver d = new Driver("Jack", 28, null);
workingMemory.insert(d);
workingMemory.fireAllRules();
for(Iterator i = workingMemory.getObjects().iterator(); i.hasNext();)
{
Object obj = i.next();
System.out.println(obj.getClass().getCanonicalName());
if (obj instanceof Driver)
{
System.out.println("Driver name => " + ((Driver)obj).getName());
System.out.println("Driver age => " + ((Driver)obj).getAge());
}
}
But the drools rule changes the driver name "Jack" by "TOTO", but in the
console the initial name "Jack" is always displayed.
How to access at the objet who is in knowledge base (the modified objet) ?
Thank. ;)
--
View this message in context: http://drools.46999.n3.nabble.com/To-access-at-the-fact-object-tp4021064....
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
Different results with same fact base
by raffi
Hi,
I have a strange behavior with the Drools Expert 5.5.0. After running the
main class few times in a row, the results suddenly differ from the ones
before it. That means there are somtimes 3, 4 or 5 results shown in console.
I am using a statefulknowledgesession. Inserting of all facts is done with
normal java lists. For my last type of facts I insert one, call
fireAllRules(), and retract it again. Showing in console is solved with
queries. At the end I'm calling the dispose()-method. I added it to see if
there is a change in behavior. But with or without it there is the same
problem with different results after few directly runnings.
Rules and queries are defined in a drl-file and loaded via
knowledgebuilder's add()-method. I am working with eclipse and of course the
plugin for it.
Could it be a problem with something memory like (in a way like a cache or
similar to the garbage collection)?
I hope with this short explanation you can give me a feedback. If not its
not problem to describe in a more detailed way.
Thank you.
--
View this message in context: http://drools.46999.n3.nabble.com/Different-results-with-same-fact-base-t...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
Drools Courses
by Matteo Cusmai
Hi all,
i and my company are interested on some Drools+JBPM courses?
Are there any courses from Red Hat or other companies?
Best Regards,
Mattteo.
13 years
drools grid or other high availability solution?
by Justin Case
Hello all,
I noticed there's not much fuss about drools-grid (anymore?). Is there something still going on there? Is it recommendable for something reliable?
Or if not, do you have any hints/links/experience on how to achieve a certain high availability level with DRools servers?
Many thanks,
JC
13 years
DROOLs 'Guarded entry/block' tactics for Rules synchronization and ordinality?
by Cotton, Ben
Hi,
I have finally gained a tiny bit of control (and maybe even some competency) in using the DROOLs language operators 'no-loop' and 'lock-on-active' as a basis for controlling rule set firing behavior in response to Fact mutation events (during consequence processing).
I now want to (competently!) use DROOLs language tactics that give me ever finer grained control over managing rule set firing behavior on Fact mutation events. Specifically, I want to be able to implement some form of 'Guarded entry/block' controls.
E.g. let's say I have a Fact (InsertedFactPOJO) that I insert into the KS and want to have its 'fireAllRules()' AgendaSet(s) renedered in exact incremental ordinal stages and in perfect isolation. To do this, I am testing the inclusion of a 'countdownLatch' Semaphore reference as a Fact member (initialized to N=`total rule count` value). I then use this to 'Guard' individual rule entry, by generating an explicit predicate participant
(InsertedFactPOJO(countdownLatch == i) )
@ each ith Rule producedby my template.
Is this approach a valid/sound/complete way to implement 'Guarded entry/block' controls in DROOLs? Is there a better way?
As always, my sincerest gratitude to this community for its generosity (and its genius).
Ben
package com.ms.fast.triclear.eligibility.rules.drools_community.questions.posted;
import com.ms.fast.triclear.eligibility.InsertedFactPOJO;
//fact:(backed by Class 'InsertedFactPOJO' has
//- 'countdownLatch' (Semaphore) member
//- 'aList' (List)member
rule "RULE_ALL_RULES_HAVE_FIRED_ONCE_ORDINALLY"
when
fact:InsertedFactPOJO()
InsertedFactPOJO(countdownLatch == 0)
then
System.out.format("\tALL RULES have fired *EXACTLY* once, *EXACTLY* ordinally. "+
" fact.countdownLatch=%d \n\t fact.aList=%s\n\n",
fact.countdownLatch,
fact.aList.toString());
end
rule "RULE_3"
when
fact:InsertedFactPOJO()
InsertedFactPOJO(countdownLatch == 3)
//bunch of other L-Value PREDICATES
then
System.out.format("\t %20.20s"+
" \t(DROOLS agenda: consequence fired for L-value predicate match @RULE="+
"3"+" -- fact.countDownLatch=%d)\n", "Rule 3",fact.countdownLatch);
modify (fact) {
countdownLatch = fact.countdownLatch - 1,
aList.add("Rule 3 pattern-match event added to POJO 'aList' field");
}
end
rule "RULE_2"
when
fact:InsertedFactPOJO()
InsertedFactPOJO(countdownLatch == 2)
//bunch of other L-Value PREDICATES
then
System.out.format("\t %20.20s"+
" \t(DROOLS agenda: consequence fired for L-value predicate match @RULE="+
"2"+" -- fact.countDownLatch=%d)\n", "Rule 2",fact.countdownLatch);
modify (fact) {
countdownLatch = fact.countdownLatch - 1,
aList.add("Rule 2 pattern-match event added to POJO 'aList' field");
}
end
rule "RULE_1"
when
fact:InsertedFactPOJO()
InsertedFactPOJO(countdownLatch == 1)
//bunch of other L-Value PREDICATES
then
System.out.format("\t %20.20s"+
" \t(DROOLS agenda: consequence fired for L-value predicate match @RULE="+
"1"+" -- fact.countDownLatch=%d)\n", "Rule 1",fact.countdownLatch);
modify (fact) {
countdownLatch = fact.countdownLatch - 1,
aList.add("Rule 1 pattern-match event added to POJO 'aList' field");
}
end
Ben D Cotton III
Morgan Stanley & Co.
OTC Derivatives Clearing Technology
1221 AOTA Rockefeller Ctr - Flr 27
New York, NY 10020
(212)762.9094
ben.cotton(a)ms.com<mailto:ben.cotton@ms.com>
________________________________
NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers If you cannot access these links, please notify us by reply message and we will send the contents to you. By messaging with Morgan Stanley you consent to the foregoing.
13 years