Hi Wolfgang,<br>this is an extract of drl file:<br><br>declare GasObservation<br>    @role(event)<br>    @startTimestamp(timestamp)<br>    @expires( 10s )<br>    @duration(duration)<br>end<br><br>declare GasEvent<br>    @startTimestamp(timestampDate)<br>
    @role(event)<br>    @duration(duration)<br>end<br><br>rule &quot;gas1-event&quot;<br>    no-loop<br>    when<br>        $obs    : GasObservation( $obsLocation : location, gasname == &quot;UN 1017&quot;, value &gt; 60 ) over window:length(1) from entry-point lowLevelSensorStream<br>
        not GasEvent( location geoIsWithinDistance[ 5m ] $obsLocation, gasname == &quot;UN 1017&quot;, this before[1s, 25s] $obs )<br>    then<br>        insert(new GasEvent( $obs, &quot;UN 1017 value &gt; threshold[60]&quot;, Event.THREAT_HIGH, $obsLocation, $obs.getSensor()));<br>
end<br>rule &quot;gas1-event-update&quot;<br>    no-loop<br>    when<br>        $obs    : GasObservation( $obsLocation : location, gasname == &quot;UN 1017&quot;, value &gt; 60 ) over window:length(1) from entry-point lowLevelSensorStream<br>
        $event     : GasEvent( location geoIsWithinDistance[ 5m ] $obsLocation, gasname == &quot;UN 1017&quot;, this before[1s, 25s] $obs )<br>    then<br>        modify($event) { <br>            updateDuration(),<br>            addObservation($obs) <br>
        }<br>end<br><br>and these are abstract Observation class and abstract Event<br><br>public abstract class Observation implements Serializable {<br><br>    /**<br>     * <br>     */<br>    private static final long serialVersionUID = 3483256523801072709L;<br>
    private long timestamp;<br>    private long duration;<br>    <br>    private Geometry location;<br>    private Sensor sensor;<br>    <br>    public long getTimestamp() { return timestamp; }<br>    public void setTimestamp(long timestamp) { this.timestamp = timestamp; }<br>
    <br>    public long getDuration() { return duration; }<br>    public void setDuration(long duration) { this.duration = duration; }<br><br>    public Sensor getSensor() { return sensor; }<br>    public void setSensor(Sensor sensor) { this.sensor = sensor; }<br>
<br>    public Geometry getLocation() { return location; }<br>    public void setLocation(Geometry location) { this.location = location; }<br>    <br>    /**<br>     * @param newTimeStamp<br>     * this methods allows to update the duration of event by setting the timestamp of new observation.<br>
     */<br>    public void updateDuration(long newTimeStamp) {<br>        setDuration(newTimeStamp - getTimestamp());<br>    }<br>    <br>    public Date getTimestampDate() {  return new Date(timestamp);  }<br>    public void setTimestampDate(Date timestamp) {  this.timestamp = timestamp.getTime();  }<br>
<br>    public Observation(Sensor sensor, Geometry location, long timestamp) {<br>        this.setLocation(location);<br>        this.setTimestamp( timestamp );<br>        this.setSensor( sensor );<br>    }<br>    <br>    /**<br>
     * @return identification by servicename:timestamp<br>     */<br>    public String getServiceIdentification() { <br>        return getSensor().getServiceName() + &quot;:&quot; + getTimestamp() ;<br>    }<br>    <br>    <br>
}<br><br><br><br><br>public  abstract class Event implements Serializable {<br><br>   .....<br>    <br>    <br>    /**<br>     * <br>     */<br>    private static final long serialVersionUID = 1L;<br>    <br>    /**<br>     * The timestamp of event.<br>
     */<br>    private long timestamp;<br>    <br>    <br>    /**<br>     * The level of threat of the event.<br>     */<br>    private int threat_level;<br>    <br>    /**<br>     * The description of event.<br>     */<br>
    private String description;<br>    <br>    /**<br>     * The location of event.<br>     */<br>    private Geometry location;<br>    <br>    /**<br>     * Duration of event.<br>     */<br>    private long duration;<br>
        <br>    /**<br>     * Id of sensor.<br>     */<br>    private Sensor sensor;<br>    <br>    /**<br>     * The map feature involved into Event.<br>     */<br>    private MapFeature feature;<br>    <br>    /**<br>     * link to the timestamp of parent event.<br>
     */<br>    private long parent;<br>    <br>    private Collection&lt;Observation&gt; observations;<br>    private Collection&lt;Event&gt; relatedEvents;<br>    <br>    public abstract int getType();<br>    <br>    public Collection&lt;Observation&gt; getObservations() { return observations; }<br>
    public void addObservation(Observation obs) { observations.add(obs); }<br><br>    public Collection&lt;Event&gt; getRelatedEvents() { return relatedEvents; }<br>    public void addRelatedEvent(Event evnt) { relatedEvents.add(evnt); }<br>
    <br>    public Sensor getSensor() { return sensor; }<br>    public void setSensor(Sensor sensorId) { this.sensor = sensorId; }<br>    <br>    public long getDuration() { return duration; }<br>    public void setDuration(long duration) { this.duration = duration; }<br>
    <br>    public int getThreat_level() { return threat_level; }<br>    public void setThreat_level(int threatLevel) { threat_level = threatLevel; }<br>    <br>    /**<br>     * @param newTimeStamp<br>     * this methods allows to update the duration of event by setting the timestamp of new observation.<br>
     */<br>    public void updateDuration() {<br>        setDuration(System.currentTimeMillis() - getTimestamp());<br>    }<br>    <br>    public long getTimestamp() { return timestamp; }<br>    public void setTimestamp(long timestamp) { this.timestamp = timestamp; }<br>
    <br>    public Date getTimestampDate() {  return new Date(timestamp);  }<br>    public void setTimestampDate(Date timestamp) {  this.timestamp = timestamp.getTime();  }<br>    <br>    public String getDescription() { return description; }<br>
    public void setDescription(String description) { this.description = description; }<br>    <br>    public Geometry getLocation() { return location; }<br>    public void setLocation(Geometry location) { this.location = location; }<br>
    <br>    /*<br>    public int getType() { return type; }<br>    public void setType(int type) { this.type = type; }<br>    */<br>    <br>    public MapFeature getFeature() { return feature; }<br>    public void setFeature(MapFeature feature) { this.feature = feature; }<br>
    <br>    public long getParent() { return parent; }<br>    public void setParent(long timestamp) { parent = timestamp; }<br>    <br>    /**<br>     * @param description        description of event<br>     * @param threat_level        threat level of timestamp<br>
     * @param location                location of event<br>     * @param sensor                sensor related to this event<br>     * @param feature                map feature related to event<br>     */<br>    protected Event(String description, int threat_level, Geometry location, Sensor sensor, MapFeature feature) {<br>
        this.setTimestamp(System.currentTimeMillis());<br>        this.observations = new ArrayList&lt;Observation&gt;();<br>        this.relatedEvents = new ArrayList&lt;Event&gt;();<br>        this.setTimestamp( timestamp );<br>
        this.setDescription( description );<br>        this.setThreat_level( threat_level );<br>        this.setLocation( location );<br>        this.setSensor(sensor);<br>        this.setFeature( feature );<br>    }<br>    <br>
    public String getServiceIdentification() {<br>        return &quot;events:&quot; + this.timestamp;<br>    }<br>      <br>}<br><br><br>Thanks a lot in advance.<br><br><div class="gmail_quote">2012/2/22 Wolfgang Laun <span dir="ltr">&lt;<a href="mailto:wolfgang.laun@gmail.com">wolfgang.laun@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">A minimum but complete set of *.java and *.drl files would help.<div>-W<br><br><div class="gmail_quote">2012/2/22 Matteo Cusmai <span dir="ltr">&lt;<a href="mailto:cusmaimatteo@gmail.com" target="_blank">cusmaimatteo@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><br>Hi all,
<br>i am using Drools Fusion in multi sensor data fusion system.

I have some rules that generate a new event when some situations occur.
But from the other hand, i would like to update the event, when i 
understand that new sensor observation is referring to the same event.
I have my Event clazz with duration field, i try to update it in modify 
clause, but i have concern about it, because when i use temporal 
operator (such as before, meets, so on) it seems that Drools manage them
 as event with duration null.

I could post the code too.

<br>Bye bye,
<br>Matteo.
        
<br></div></div>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br>