[jboss-jira] [JBoss JIRA] (JBRULES-3144) UnMatch Listener for Compensation Actions

Mark Proctor (JIRA) jira-events at lists.jboss.org
Mon Apr 23 22:36:18 EDT 2012


    [ https://issues.jboss.org/browse/JBRULES-3144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12686931#comment-12686931 ] 

Mark Proctor commented on JBRULES-3144:
---------------------------------------

see AgendaTest:
{code}
                AgendaItem item = ( AgendaItem ) knowledgeHelper.getActivation();
                final Cheese cheese = ( Cheese ) item.getTuple().getHandle().getObject();
                final int oldPrice = cheese.getPrice();
                cheese.setPrice( 100 );
                
                item.setActivationUnMatchListener( new ActivationUnMatchListener() {
                    
                    public void unMatch(org.drools.runtime.rule.WorkingMemory wm,
                                        org.drools.runtime.rule.Activation activation) {
                        cheese.setPrice( oldPrice );
                    }
                } );
{code}
                
> UnMatch Listener for Compensation Actions
> -----------------------------------------
>
>                 Key: JBRULES-3144
>                 URL: https://issues.jboss.org/browse/JBRULES-3144
>             Project: Drools
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: drools-core  (expert)
>            Reporter: Geoffrey De Smet
>            Assignee: Mark Proctor
>            Priority: Critical
>
> 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