The reason why I've activated the logging was that some rules are not fired
after inserting a special
amount of facts - in my case exactly 20.
Some more details here:
I work on an Event Correlation & Analysis OSS solution that's based on
Grails & Drools 5.5.0-Final.
I'm using a stateful knowledge session and only call dispose() when the app
is stopped - but all facts
are retracted. The functional testing works fine but as I've mentioned it
before when I run the integration
testing it fails, because rules are not fired ('ClearAlertRule' is not
fired) when I insert more than 20 facts.
I saw the errors in the drools log but I didn't know if they were relevant
for my problem here.
I've attached two picts which document the right and the wrong behavior of
the rule processing
- also I've listed the rules of my rulebase.
Has anybody an idea?
Cheers,
-markus
//------------------------------
rule 'UpdateAlertRule'
//------------------------------
dialect 'mvel'
salience 900
no-loop
when
_event : Event(eventClass == "Event",
_name:catalog['name'],
_category:catalog['category'],
_severity:catalog['severity'],
_state:catalog['state'],
_source:catalog['source'],
_subSource:catalog['subSource'],
_origin:catalog['origin'],
_subOrigin:catalog['subOrigin'],
_owner:catalog['owner'],
_description:catalog['description'],
_selector:("from Alert where " +
"name='" + catalog['name'] + "' "
+
"and severity='" + catalog['severity'] +
"' " +
"and not state='Closed'"
)
)
eval(isDuplicate(_event,"UpdateAlertRule",_selector) == true)
then
System.out.println("UpdateAlertRule is processed.")
EntityBuilder entityBuilder = new EntityBuilder();
entityBuilder.addProperty("modifiedBy","UpdateAlertRule");
entityBuilder.addProperty("counter",1);
AlertHandler alertHandler = new
AlertHandler(entityBuilder.getProperties(),_selector);
alertHandler.update();
RuleLogHandler ruleLogHandler = new RuleLogHandler();
ruleLogHandler.create("UpdateAlertRule",_name);
end
//------------------------------
rule 'ClearAlertRule'
//------------------------------
dialect 'mvel'
salience 800
no-loop
when
_event : Event(eventClass == "Event",
_name:catalog['name'] contains 'Info',
_category:catalog['category'],
_severity:catalog['severity'] == 'Harmless',
_state:catalog['state'],
_source:catalog['source'],
_subSource:catalog['subSource'],
_origin:catalog['origin'],
_subOrigin:catalog['subOrigin'],
_owner:catalog['owner'],
_description:catalog['description'],
_selector:("from Alert where " +
"name like '%Error'" +
"and not severity='Harmless'" +
"and not state='Closed'"
)
)
then
System.out.println("ClearAlertRule is processed.")
EntityBuilder entityBuilder = new EntityBuilder();
entityBuilder.addProperty("modifiedBy","ClearAlertRule")
entityBuilder.addProperty("state","Closed");
AlertHandler alertHandler = new
AlertHandler(entityBuilder.getProperties(),_selector);
alertHandler.update();
RuleLogHandler ruleLogHandler = new RuleLogHandler();
ruleLogHandler.create("ClearAlertRule",_name);
end
//------------------------------
rule 'CreateAlertRule'
//------------------------------
dialect 'mvel'
salience 700
no-loop
when
_event : Event(eventClass == "Event",
_name:catalog['name'],
_category:catalog['category'],
_severity:catalog['severity'],
_priority:catalog['priority'],
_state:catalog['state'],
_source:catalog['source'],
_subSource:catalog['subSource'],
_origin:catalog['origin'],
_subOrigin:catalog['subOrigin'],
_owner:catalog['owner'],
_description:catalog['description'],
_selector:("from Alert where " +
"name='" + catalog['name'] + "' "
+
"and severity='" + catalog['severity'] +
"' " +
"and not state='Closed'"
)
)
eval(isDuplicate(_event,"CreateAlertRule",_selector) == false)
then
System.out.println("CreateAlertRule is processed.");
EntityBuilder entityBuilder = new EntityBuilder();
entityBuilder.addProperty("modifiedBy","CreateAlertRule");
entityBuilder.addProperty("name",_name);
entityBuilder.addProperty("category",_category);
entityBuilder.addProperty("severity",_severity);
entityBuilder.addProperty("priority",_priority);
entityBuilder.addProperty("state",_state);
entityBuilder.addProperty("source",_source);
entityBuilder.addProperty("subSource",_subSource);
entityBuilder.addProperty("origin",_origin);
entityBuilder.addProperty("subOrigin",_subOrigin);
entityBuilder.addProperty("owner",_owner);
entityBuilder.addProperty("description",_description);
AlertHandler alertHandler = new
AlertHandler(entityBuilder.getProperties(),_selector);
alertHandler.create();
RuleLogHandler ruleLogHandler = new RuleLogHandler();
ruleLogHandler.create("CreateAlertRule",_name);
end
//------------------------------
rule 'EventRetractionRule'
//------------------------------
dialect 'mvel'
salience 1
no-loop
when
_event : Event(eventClass == "Event",
_name:catalog['name'] not contains 'Timer'
)
then
System.out.println("EventRetractionRule is processed.");
retract(_event);
RuleLogHandler ruleLogHandler = new RuleLogHandler();
ruleLogHandler.create("EventRetractionRule",_name);
end
2014-02-25 14:00 GMT+01:00 Markus Schneider <markus.schneider73(a)gmail.com>:
Hi Davide,
thank you for the fast response. I've defined an DebugAgendaEventListener
as it's described here:
Drools Docu 5.5.0-Final/Section 7.2/HelloWorld example.
http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html/...
Where can I find any docu about the config of the DebugAgendaEventListener?
Cheers,
-markus
2014-02-25 12:59 GMT+01:00 Davide Sottara <dsotty(a)gmail.com>:
You likely have configured a DebugAgendaEventListener, which logs agenda
> events (rules activated, fired, etc..)
> on the standard error rather than the standard output. If you want a
> different behavior, remove the listener
> and implement one of your own.
> These are not errors anyway.
> Davide
>
>
> On 02/25/2014 09:40 AM, Markus Schneider wrote:
>
> Hi list,
>
> I see the following error msg in my drools log but I don't know how to
> interpret this.
> Do I have a serious problem here?
>
> Has anybody a clue?
>
> Thanks in advance.
>
> Cheers,
>
> -markus
>
> | Error ==>[AfterActivationFiredEvent: getActivation()=[Activation
> rule=UpdateAlertRule, act#=37, salience=900, tuple=[fact
> 0:19:184363445:184363445:19:DEFAULT:rapideca.plugins.rbm.entity.Event : 19]
> ],
> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@6dd4ab87
> ]
> | Error ==>[BeforeActivationFiredEvent: getActivation()=[Activation
> rule=EventRetractionRule, act#=36, salience=1, tuple=[fact
> 0:19:184363445:184363445:19:DEFAULT:rapideca.plugins.rbm.entity.Event : 19]
> ],
> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@6dd4ab87
> ]
> EventRetractionRule is processed.
> | Error ==>[ObjectRetractedEventImpl: getFactHandle()=[fact
> 0:19:184363445:184363445:19:DEFAULT:rapideca.plugins.rbm.entity.Event :
> 19], getOldObject()=rapideca.plugins.rbm.entity.Event : 19,
> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@6dd4ab87,
> getPropagationContext()=PropagationContextImpl [activeActivations=0,
> dormantActivations=2, entryPoint=EntryPoint::DEFAULT, factHandle=[fact
> 0:19:184363445:184363445:19:DEFAULT:rapideca.plugins.rbm.entity.Event :
> 19], leftTuple=[fact
> 0:19:184363445:184363445:19:DEFAULT:rapideca.plugins.rbm.entity.Event : 19]
> , originOffset=-1, propagationNumber=40, rule=[Rule
> name=EventRetractionRule, agendaGroup=MAIN, salience=1, no-loop=true],
> type=1]]
> 2014-02-25 08:59:03,524 [eventQueueReceiverJmsListenerContainer-1] INFO
> log.RuleLogHandler - RuleLog with id: 38 was successfully saved.
> | Error ==>[AfterActivationFiredEvent: getActivation()=[Activation
> rule=EventRetractionRule, act#=36, salience=1, tuple=[fact
> 0:-1:184363445:184363445:19:null:null]
> ],
> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@6dd4ab87
> ]
>
>
> _______________________________________________
> rules-users mailing
listrules-users@lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>