[jboss-jira] [JBoss JIRA] Issue Comment Edited: (JBRULES-2715) Ability to add AgendaFilter to a stateless session

Tihomir Surdilovic (JIRA) jira-events at lists.jboss.org
Wed Sep 29 18:07:40 EDT 2010


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

Tihomir Surdilovic edited comment on JBRULES-2715 at 9/29/10 6:07 PM:
----------------------------------------------------------------------

Ugh this was hidden, but yes you can actually do this now. Here is small example:

StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
Person p = new Person(); // some dummy fact for this test
RuleNameEndsWithAgendaFilter filter = new RuleNameEndsWithAgendaFilter("TEST");

@SuppressWarnings("rawtypes")
List<Command> cmds = new ArrayList<Command>();
cmds.add(CommandFactory.newInsert(p));
cmds.add(new FireAllRulesCommand(filter));

ExecutionResults results = ksession.execute(CommandFactory.newBatchExecution(cmds));

This will only execute rules that end with "TEST"



The Agenda Filter is defined as:

private static class RuleNameEndsWithAgendaFilter implements AgendaFilter {
		private final String suffix;

		private final boolean accept;

		public RuleNameEndsWithAgendaFilter(final String suffix) {
			this(suffix, true);
		}

		public RuleNameEndsWithAgendaFilter(final String suffix,
				final boolean accept) {
			this.suffix = suffix;
			this.accept = accept;
		}

		public boolean accept(final Activation activation) {
			if (activation.getRule().getName().endsWith(this.suffix)) {
				return this.accept;
			} else {
				return !this.accept;
			}
		}
	}

      was (Author: tsurdilovic):
    Ugh this was hidden, but yes you can actually do this now. Here is small example:

StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
Person p = new Person(); // some dummy fact for this test
RuleNameEndsWithAgendaFilter filter = new RuleNameEndsWithAgendaFilter("TEST");

@SuppressWarnings("rawtypes")
List<Command> cmds = new ArrayList<Command>();
cmds.add(CommandFactory.newInsert(p));
//cmds.add(new FireAllRulesCommand(filter));

ExecutionResults results = ksession.execute(CommandFactory.newBatchExecution(cmds));

This will only execute rules that end with "TEST"



The Agenda Filter is defined as:

private static class RuleNameEndsWithAgendaFilter implements AgendaFilter {
		private final String suffix;

		private final boolean accept;

		public RuleNameEndsWithAgendaFilter(final String suffix) {
			this(suffix, true);
		}

		public RuleNameEndsWithAgendaFilter(final String suffix,
				final boolean accept) {
			this.suffix = suffix;
			this.accept = accept;
		}

		public boolean accept(final Activation activation) {
			if (activation.getRule().getName().endsWith(this.suffix)) {
				return this.accept;
			} else {
				return !this.accept;
			}
		}
	}
  
> Ability to add AgendaFilter to a stateless session 
> ---------------------------------------------------
>
>                 Key: JBRULES-2715
>                 URL: https://jira.jboss.org/browse/JBRULES-2715
>             Project: Drools
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: drools-api
>    Affects Versions: 5.1.1.FINAL
>            Reporter: Arnaud Simon
>            Assignee: Tihomir Surdilovic
>
> It is currently not possible to use AgendaFilter with a  stateless session. It would be nice if the stateless session execute method would also be able to take in the agendafilter argument just like fireAllRules does. 
>  

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list