[rules-users] Streaming mode

Wolfgang Laun wolfgang.laun at gmail.com
Sat Mar 3 05:23:01 EST 2012


I think that Drools doesn't use any threads except for timers and for the
Knowledge Agent. So you should check where these other threads come from.
Code in ExpertVS.java appears to be running in several threads?

To learn more about fact retractions: attach a WM event listener and log
the org.drools.runtim.rule.PropagationContext.

-W


2012/3/2 Matteo Cusmai <cusmaimatteo at gmail.com>

> Hi Wolfgang,
> i think that have to study more in deed some manuals, because there are
> some aspects not very clear, in particular the threads behavior.
> For example, i have a class running in a container (thread A) that launch
> the session as follow:
> ......
>         ksession = kbase.newStatefulKnowledgeSession();
> ......
>         Thread t = new Thread(new Runnable() { public void run() {
> ksession.fireUntilHalt();}});
>         t.setName("ExpertSystem");
>         t.start();
>
> the same thread A insert event into a stream:
> .....
>         entryPoint = ksession.getWorkingMemoryEntryPoint(entryPointName);
> .....
>         entryPoint.insert(obs);
>
> i have a rule some rules such as these:
>
> rule "gas1-event"
>     salience 10
>     no-loop
>     when
>         $obs    : GasObservation( $obsLocation : location, gasname == "UN
> 1017", value > 60 ) over window:length(1) from entry-point
> lowLevelSensorStream
>         not GasEvent( gasname == "UN 1017", this meets[50s] $obs, location
> geoIntersects $obsLocation )
>     then
>         insert(new GasEvent( $obs, "UN 1017 value > threshold[60]",
> Event.THREAT_HIGH, $obsLocation, $obs.getSensor()));
> end
> rule "gas1-event-update"
>     salience 5
>     no-loop
>     when
>         $obs    : GasObservation( $obsLocation : location, gasname == "UN
> 1017", value > 60 ) over window:length(1) from entry-point
> lowLevelSensorStream
>         $event     : GasEvent( gasname == "UN 1017", this meets[50s] $obs,
> location geoIntersects $obsLocation )
>     then
>         Event e = Event.clone($event);
>         insert( e );
>         retract($event);
>         retract($obs);
> end
>
> i see that there are some other threads that insert new event and some
> others retract them.
> How is the thread model?
>
> Thanks a lot,
> Matteo.
>
> 2012/3/2 Wolfgang Laun <wolfgang.laun at gmail.com>
>
>> What's the declare for the Event type? What does rule gas2-event do?
>> -W
>>
>>
>> 2012/3/2 Matteo Cusmai <cusmaimatteo at gmail.com>
>>
>>> Hi all,
>>> i have a big problem with drools fusion.
>>>
>>> I insert some new event (pojo object) into Working Memory, but another
>>> thread retract it after a few ms.
>>>
>>> Someone could tell me why?
>>>
>>> Thanks a lot,
>>>
>>>
>>>
>>> [java] gas2-event: 1330701201208
>>>      [java] INFO  [2012-03-02 16:13:21,261] [ExpertSystem]
>>> (ExpertVS.java:141)     - **** eventRetracted: 1330701201232/30/32/0/100
>>>      [java] INFO  [2012-03-02 16:13:31,224] [Thread-19]
>>> (ExpertVS.java:135)     - objectInserted
>>> org.dfms.model.observation.GasObservation at 1a30ef85
>>>      [java] INFO  [2012-03-02 16:13:31,225] [Thread-19]
>>> (ExpertVS.java:135)     - objectInserted
>>> org.dfms.model.observation.GasObservation at 2bd1232
>>>      [java] INFO  [2012-03-02 16:13:31,226] [Thread-19]
>>> (ExpertVS.java:135)     - objectInserted
>>> org.dfms.model.observation.GasObservation at 4045acb5
>>>      [java] INFO  [2012-03-02 16:13:31,227] [Thread-19]
>>> (ExpertVS.java:135)     - objectInserted
>>> org.dfms.model.observation.TemperatureObservation at 1e4dc00a
>>>      [java] INFO  [2012-03-02 16:13:31,227] [Thread-19]
>>> (ExpertVS.java:135)     - objectInserted
>>> org.dfms.model.observation.HumidityObservation at 27ae011
>>> *     [java] INFO  [2012-03-02 16:13:31,227] [pool-1-thread-1]
>>> (ExpertVS.java:124)     - **** eventInserted: 1330701211226/30/32/0/100*
>>>      [java] INFO  [2012-03-02 16:13:31,240] [Thread-19]
>>> (ExpertVS.java:135)     - objectInserted
>>> org.dfms.model.observation.RadiationObservation at 510c7d5c
>>>      [java] INFO  [2012-03-02 16:13:31,251] [pool-1-thread-1]
>>> (ExpertVS.java:143)     - objectRetracted ==>[ObjectRetractedEventImpl:
>>> getFactHandle()=1:105:45945394:45945394:105:lowLevelSensorStream,
>>> getOldObject()=org.dfms.model.observation.GasObservation at 2bd1232,
>>> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl at 7224e11c,
>>> getPropagationContext()=PropagationContextImpl [activeActivations=0,
>>> dormantActivations=0, entryPoint=EntryPoint::lowLevelSensorStream,
>>> factHandle=1:105:45945394:45945394:105:lowLevelSensorStream,
>>> leftTuple=1:105:45945394:45945394:105:lowLevelSensorStream
>>>      [java] [fact
>>> 0:0:124232201:1306428912:0:DEFAULT:org.drools.reteoo.InitialFactImpl at 4dde85f0
>>> ]
>>>      [java] , originOffset=-1, propagationNumber=220, rule=[Rule
>>> name=gas2-event, agendaGroup=MAIN, salience=10, no-loop=true], type=1]]
>>>      [java] gas2-event: 1330701211203
>>> *     [java] INFO  [2012-03-02 16:13:31,261] [ExpertSystem]
>>> (ExpertVS.java:141)     - **** eventRetracted: 1330701211226/30/32/0/100
>>> *
>>>      [java] INFO  [2012-03-02 16:13:31,262] [ExpertSystem]
>>> (ExpertVS.java:143)     - objectRetracted ==>[ObjectRetractedEventImpl:
>>> getFactHandle()=1:101:1512664237:1512664237:101:lowLevelSensorStream,
>>> getOldObject()=org.dfms.model.observation.TemperatureObservation at 5a296cad,
>>> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl at 7224e11c,
>>> getPropagationContext()=PropagationContextImpl [activeActivations=0,
>>> dormantActivations=0, entryPoint=EntryPoint::lowLevelSensorStream,
>>> factHandle=1:101:1512664237:1512664237:101:lowLevelSensorStream,
>>> leftTuple=null, originOffset=-1, propagationNumber=224, rule=null, type=1]]
>>>      [java] INFO  [2012-03-02 16:13:31,262] [ExpertSystem]
>>> (ExpertVS.java:143)     - objectRetracted ==>[ObjectRetractedEventImpl:
>>> getFactHandle()=1:102:1436418073:1436418073:102:lowLevelSensorStream,
>>> getOldObject()=org.dfms.model.observation.HumidityObservation at 559e0019,
>>> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl at 7224e11c,
>>> getPropagationContext()=PropagationContextImpl [activeActivations=0,
>>> dormantActivations=0, entryPoint=EntryPoint::lowLevelSensorStream,
>>> factHandle=1:102:1436418073:1436418073:102:lowLevelSensorStream,
>>> leftTuple=null, originOffset=-1, propagationNumber=226, rule=null, type=1]]
>>>      [java] INFO  [2012-03-02 16:13:31,263] [ExpertSystem]
>>> (ExpertVS.java:143)     - objectRetracted ==>[ObjectRetractedEventImpl:
>>> getFactHandle()=1:103:2014876984:2014876984:103:lowLevelSensorStream,
>>> getOldObject()=org.dfms.model.observation.RadiationObservation at 78189538,
>>> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl at 7224e11c,
>>> getPropagationContext()=PropagationContextImpl [activeActivations=0,
>>> dormantActivations=0, entryPoint=EntryPoint::lowLevelSensorStream,
>>> factHandle=1:103:2014876984:2014876984:103:lowLevelSensorStream,
>>> leftTuple=null, originOffset=-1, propagationNumber=228, rule=null, type=1]]
>>>      [java] INFO  [2012-03-02 16:13:41,228] [ExpertSystem]
>>> (ExpertVS.java:143)     - objectRetracted ==>[ObjectRetractedEventImpl:
>>> getFactHandle()=1:108:508411914:508411914:108:lowLevelSensorStream,
>>> getOldObject()=org.dfms.model.observation.TemperatureObservation at 1e4dc00a,
>>> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl at 7224e11c,
>>> getPropagationContext()=PropagationContextImpl [activeActivations=0,
>>> dormantActivations=0, entryPoint=EntryPoint::lowLevelSensorStream,
>>> factHandle=1:108:508411914:508411914:108:lowLevelSensorStream,
>>> leftTuple=null, originOffset=-1, propagationNumber=230, rule=null, type=1]]
>>>      [java] INFO  [2012-03-02 16:13:41,230] [ExpertSystem]
>>> (ExpertVS.java:143)     - objectRetracted ==>[ObjectRetractedEventImpl:
>>> getFactHandle()=1:109:41607185:41607185:109:lowLevelSensorStream,
>>> getOldObject()=org.dfms.model.observation.HumidityObservation at 27ae011,
>>> getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl at 7224e11c,
>>> getPropagationContext()=PropagationContextImpl [activeActivations=0,
>>> dormantActivations=0, entryPoint=EntryPoint::lowLevelSensorStream,
>>> factHandle=1:109:41607185:41607185:109:lowLevelSensorStream,
>>> leftTuple=null, originOffset=-1, propagationNumber=232, rule=null, type=1]]
>>>
>>>
>>> _______________________________________________
>>> 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/20120303/9420ebab/attachment.html 


More information about the rules-users mailing list