2011-08-11 3 views
2

규칙 이름별로 잠결 파일에서 규칙을 실행할 수 있습니까? 내 요구 사항은 내 규칙 파일에 모든 규칙 목록이 포함됩니다 (S). 하지만 해고 될 규칙 이름 목록을 포함하는 별도의 구성 (A)이 있습니다. 참고 (A)는 (S)의 하위 집합입니다. 런타임에는 (S)에서 이름 (A)이있는 규칙 만 실행하고 싶습니다.잠김 파일에서 선택 규칙 실행

감사합니다.

답변

7

여기에 AgendaFilters를 사용할 수 있습니다. 여기

당신이 그것을 설정하는 방법입니다

StatelessSession session = ruleBase.newStatelessSesssion(); 

session.setAgendaFilter(new RuleNameMatches("<regexp to your rule name here>")); 

이 단 하나의 규칙 발사 지정된 이름을 가진 수 있습니다. 귀하의 경우에는

당신이 당신의 자신의 AgendaFilter 작성해야합니다 : 또한 규칙은 HTTP를 발사 할 수있는 제어 할 수 Drools가 규칙을 사용하는 것이 가능해야한다 Drools가의 향후 버전에서는

public class CustomAgendaFilter extends AgendaFilter{ 

    private final Set<String> ruleNamesThatAreAllowedToFire; 

    public CustomAgendaFilter(Set<String> ruleNamesThatAreAllowedToFire){ 
    this.ruleNamesThatAreAllowedToFire=ruleNamesThatAreAllowedToFire; 
    } 

    boolean accept(Activation activation){ 
    return ruleNamesThatAreAllowedToFire.contains(activation.getRule().getName()); 
    } 
} 
+1

을 : //blog.athico .com/2011/08/declarative-agenda-and-control-rules.html –

+0

나는 확실히 시험해 볼 것입니다. 이것은 내 문제를 해결해야합니다. 감사. –