[jboss-jira] [JBoss JIRA] (JBRULES-3144) undo-then: when rule becomes no longer true execute a callback"
Geoffrey De Smet (Updated) (JIRA)
jira-events at lists.jboss.org
Fri Dec 16 04:57:09 EST 2011
[ https://issues.jboss.org/browse/JBRULES-3144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
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
More information about the jboss-jira
mailing list