[
https://issues.jboss.org/browse/JBRULES-3144?page=com.atlassian.jira.plug...
]
Geoffrey De Smet updated JBRULES-3144:
--------------------------------------
Comment: was deleted
(was: Here's what I'd like to be able to do:
{code}
rule "serviceConflict"
when
$leftProcessAssignment : MrProcessAssignment($service : service, $machine :
machine, $leftId : id)
$rightProcessAssignment : MrProcessAssignment(service == $service, machine ==
$machine, id > $leftId)
then
scoreCalculator.addToHardScore(1); // No insertLogical or accumulate of those
ConstraintOccurence's needed
undo-then
scoreCalculator.substractFromHardScore(1);
end
{code}
And here's a more complex example where the weight isn't a static "1":
{code}
rule "serviceLocationSpread"
when
$service : MrService($locationSpread : locationSpread)
$spreadCount : Number(intValue < $locationSpread) from accumulate(
$location : MrLocation()
and exists MrProcessAssignment(service == $service, location ==
$location),
count($location)
)
then
scoreCalculator.addToHardScore($locationSpread - $spreadCount.intValue());
undo-then
scoreCalculator.substractFromHardScore($locationSpread -
$spreadCount.intValue());
// $spreadCount should still be the same as it used to be
end
{code})
undo-then: when rule becomes no longer true execute a callback"
---------------------------------------------------------------
Key: JBRULES-3144
URL:
https://issues.jboss.org/browse/JBRULES-3144
Project: Drools
Issue Type: Task
Security Level: Public(Everyone can see)
Components: drools-core (expert), drools-planner
Reporter: Geoffrey De Smet
Assignee: Geoffrey De Smet
Here's what I'd like to be able to do:
{code}
rule "serviceConflict"
when
$leftProcessAssignment : MrProcessAssignment($service : service, $machine :
machine, $leftId : id)
$rightProcessAssignment : MrProcessAssignment(service == $service, machine ==
$machine, id > $leftId)
then
scoreCalculator.addToHardScore(1); // No insertLogical or accumulate of those
ConstraintOccurence's needed
undo-then
scoreCalculator.substractFromHardScore(1);
end
{code}
And here's a more complex example where the weight isn't a static "1":
{code}
rule "serviceLocationSpread"
when
$service : MrService($locationSpread : locationSpread)
$spreadCount : Number(intValue < $locationSpread) from accumulate(
$location : MrLocation()
and exists MrProcessAssignment(service == $service, location ==
$location),
count($location)
)
then
scoreCalculator.addToHardScore($locationSpread - $spreadCount.intValue());
undo-then
scoreCalculator.substractFromHardScore($locationSpread -
$spreadCount.intValue());
// $spreadCount should still be the same as it used to be
end
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira