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@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@gmail.com>
What's the declare for the Event type? What does rule gas2-event do?
-W


2012/3/2 Matteo Cusmai <cusmaimatteo@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@1a30ef85
     [java] INFO  [2012-03-02 16:13:31,225] [Thread-19] (ExpertVS.java:135)     - objectInserted org.dfms.model.observation.GasObservation@2bd1232
     [java] INFO  [2012-03-02 16:13:31,226] [Thread-19] (ExpertVS.java:135)     - objectInserted org.dfms.model.observation.GasObservation@4045acb5
     [java] INFO  [2012-03-02 16:13:31,227] [Thread-19] (ExpertVS.java:135)     - objectInserted org.dfms.model.observation.TemperatureObservation@1e4dc00a
     [java] INFO  [2012-03-02 16:13:31,227] [Thread-19] (ExpertVS.java:135)     - objectInserted org.dfms.model.observation.HumidityObservation@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@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@2bd1232, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@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@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@5a296cad, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@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@559e0019, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@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@78189538, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@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@1e4dc00a, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@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@27ae011, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@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@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users