[rules-users] How to Capture the rule which does not get executed

Wolfgang Laun wolfgang.laun at gmail.com
Thu Oct 14 12:48:10 EDT 2010


2010/10/14 Navdeep Kumar <nkumar at objectwave.com>

> Thanks for your reply...could you please tell me what is this myGlobal?
>
>
java.util.Set<Rule> myGlobal



> 2010/10/13 Michael Anstis <michael.anstis at gmail.com>
>
>> You could store all rules in a global and remove those that execute in an
>> AgendaEventListener's activtionCreated event (re-adding those that get
>> retracted by Truth Maintenance in the AgendaEventListeners
>> activationCancelled event).
>>
>> //Loads rules
>> KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
>> kbuilder.add(ResourceFactory.newClassPathResource("myrules.drl"),
>> ResourceType.DRL);
>> KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
>> Collection<KnowledgePackage> kpackages = kbuilder.getKnowledgePackages();
>> kbase.addKnowledgePackages(kpackages);
>>
>> //Get all rules
>> for(KnowledgePackage kpackage : kpackages) {
>>     for(Rule rule : kpackage.getRules()) {
>>         myGlobal.add(rule);
>>     }
>> }
>>
>> //The usual suspects
>> StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
>> ksession.addEventListener(new DefaultAgendaEventListener() {
>>     @Override
>>     void activationCreated(ActivationCreatedEvent event) {
>>         myGlobal.remove(event.getActivation().getRule());
>>     }
>>
>>     @Override
>>     void activationCancelled(ActivationCancelledEvent event) {
>>         myGlobal.add(event.getActivation().getRule());
>>     }
>> });
>>
>> ksession.fireAllRules();
>>
>> You could also use an AgendaEventListener to better manage the contents of
>> the Rule collection for more complex scenarios where Truth Maintenance could
>> retract an activation - that the simpler solution above wold
>>
>>
>>
>> 2010/10/13 Navdeep Kumar <nkumar at objectwave.com>
>>
>>>  Hi All,
>>>
>>> I am new to Drools. I am working on a project where nature of rules are
>>> dynamic. I want to capture that rule which does not get executed. i need to
>>> store that rule because i have to display that rule in the UI.
>>>
>>> Here is my rule file
>>>
>>> rule "FrontAxle:Capacity|FrontSuspension:Capacity"
>>>
>>> when
>>>  b:Feature(featureClass.name=="FrontSuspension")
>>> c:Feature(featureClass.name=="FrontAxle")
>>>  //eval(b.getCapacity() >= c.getCapacity())
>>>  then
>>>  System.out.println("These are compatible");
>>> System.out.println(b.getFeatureClass().getName());
>>>
>>> availablity.put(b.getFeatureClass().getName()+"-"+c.getFeatureClass().getName(),"12.35");
>>> //availablity.put(b.getName()+"-"+c.getName(),new
>>> Double(b.getCapacity()));
>>>  insert(availablity);
>>> end
>>>  rule "FrontSuspension:Type|FrontAxle:Type"
>>>  when
>>>  b:Feature(featureClass.name=="FrontSuspension")
>>> c:Feature(featureClass.name=="FrontAxle")
>>>  not Feature(b.attributes.Type=="I Beam" && c.attributes.Type=="Multi
>>> Link Air")
>>> //NOT (FrontAxle.type = "I-Beam" AND FrontSuspension.type = "Multi-link
>>> Air") - mounting restriction
>>>  then
>>> System.out.println("I am in  2");
>>> end
>>>  rule "FrontAxle:FeatureCode|FrontSuspension:Type"
>>> when
>>>  b:Feature(featureClass.name=="FrontSuspension")
>>> Feature(featureClass.name=="FrontAxle" && code=="002ASW")and not
>>> Feature(b.attributes.Type=="Multi Link Air" || b.attributes.Type=="Monoleaf
>>> Spring")
>>>  //FrontAxle.featureCode = "002ASW" AND NOT (FrontSuspension.type =
>>> "Multi-link  Air" OR FrontSuspension.type = "Monoleaf Spring")
>>>  then
>>> System.out.println("I am in 3");
>>> end
>>>
>>>
>>>
>>>
>>>
>>>
>>> now if these two objects named FrontAxle and FrontSuspension are
>>> compatible then it has to meet all the 3 rules, but if any combination of
>>> these objects does not meet one of the rule listed above then i have to
>>> store the rule for the displaying purpose that this combination didn't meet
>>> this rule thats why they are not compatible. any kind of help will be
>>> appreciated.
>>>
>>>
>>>
>>> Thanks.
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20101014/aaee841c/attachment.html 


More information about the rules-users mailing list