[jboss-svn-commits] JBL Code SVN: r17285 - in labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools: base and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Dec 17 09:35:42 EST 2007
Author: mgroch
Date: 2007-12-17 09:35:42 -0500 (Mon, 17 Dec 2007)
New Revision: 17285
Modified:
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/WorkingMemory.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
Log:
JBRULES-1374
addition of an alternative insert() method which takes a duration as additional parameter in order to support durative events => adaptation of associated classes
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/WorkingMemory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/WorkingMemory.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/WorkingMemory.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -214,6 +214,21 @@
* If a RuntimeException error occurs.
*/
FactHandle insert(Object object) throws FactException;
+
+ /**
+ * Assert a fact with inherent duration.
+ *
+ * @param object
+ * The fact object.
+ * @param duration
+ * The duration of the fact.
+ *
+ * @return The new fact-handle associated with the object.
+ *
+ * @throws FactException
+ * If a RuntimeException error occurs.
+ */
+ FactHandle insert(Object object, long duration) throws FactException;
/**
* Retrieve the QueryResults of the specified query.
@@ -264,6 +279,29 @@
*/
FactHandle insert(Object object,
boolean dynamic) throws FactException;
+
+ /**
+ * Insert a fact with inherent duration registering JavaBean
+ * <code>PropertyChangeListeners</code> on the Object to
+ * automatically trigger <code>update</code> calls
+ * if <code>dynamic</code> is <code>true</code>.
+ *
+ * @param object
+ * The fact object.
+ * @param duration
+ * The duration of the fact.
+ * @param dynamic
+ * true if Drools should add JavaBean
+ * <code>PropertyChangeListeners</code> to the object.
+ *
+ * @return The new fact-handle associated with the object.
+ *
+ * @throws FactException
+ * If a RuntimeException error occurs.
+ */
+ FactHandle insert(Object object,
+ long duration,
+ boolean dynamic) throws FactException;
/**
* Retract a fact.
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -52,31 +52,70 @@
public void insert(final Object object) throws FactException {
insert( object,
+ 0,
false );
}
+ public void insert(final Object object,
+ final long duration) throws FactException {
+ insert( object,
+ duration,
+ false );
+ }
+
public void insert(final Object object,
final boolean dynamic) throws FactException {
this.workingMemory.insert( object,
+ 0,
dynamic,
false,
this.rule,
this.activation );
}
+
+ public void insert(final Object object,
+ final long duration,
+ final boolean dynamic) throws FactException {
+ this.workingMemory.insert( object,
+ duration,
+ dynamic,
+ false,
+ this.rule,
+ this.activation );
+ }
public void insertLogical(final Object object) throws FactException {
insertLogical( object,
+ 0,
false );
}
+ public void insertLogical(final Object object, final long duration) throws FactException {
+ insertLogical( object,
+ duration,
+ false );
+ }
+
public void insertLogical(final Object object,
final boolean dynamic) throws FactException {
this.workingMemory.insert( object,
+ 0,
dynamic,
true,
this.rule,
this.activation );
}
+
+ public void insertLogical(final Object object,
+ final long duration,
+ final boolean dynamic) throws FactException {
+ this.workingMemory.insert( object,
+ duration,
+ dynamic,
+ true,
+ this.rule,
+ this.activation );
+ }
public void update(final FactHandle handle,
final Object newObject) throws FactException {
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -56,17 +56,33 @@
public void insert(final Object object) throws FactException {
}
+
+ public void insert(final Object object, final long duration) throws FactException {
+ }
public void insert(final Object object,
final boolean dynamic) throws FactException {
}
+
+ public void insert(final Object object,
+ final long duration,
+ final boolean dynamic) throws FactException {
+ }
public void insertLogical(final Object object) throws FactException {
}
+
+ public void insertLogical(final Object object, final long duration) throws FactException {
+ }
public void insertLogical(final Object object,
final boolean dynamic) throws FactException {
}
+
+ public void insertLogical(final Object object,
+ final long duration,
+ final boolean dynamic) throws FactException {
+ }
public void update(final FactHandle handle,
final Object newObject) throws FactException {
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -45,15 +45,36 @@
return newFactHandle( this.factHandlePool.pop(),
object,
isEvent,
+ 0,
workingMemory );
}
return newFactHandle( this.id++,
object,
isEvent,
+ 0,
workingMemory );
}
+
+ /* (non-Javadoc)
+ * @see org.drools.reteoo.FactHandleFactory#newFactHandle()
+ */
+ public final InternalFactHandle newFactHandle( final Object object, final boolean isEvent, long duration, final WorkingMemory workingMemory ) {
+ if ( !this.factHandlePool.isEmpty() ) {
+ return newFactHandle( this.factHandlePool.pop(),
+ object,
+ isEvent,
+ duration,
+ workingMemory );
+ }
+ return newFactHandle( this.id++,
+ object,
+ isEvent,
+ duration,
+ workingMemory );
+ }
+
/* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
*/
@@ -65,8 +86,25 @@
object,
this.counter++,
isEvent,
+ 0,
workingMemory );
}
+
+ /* (non-Javadoc)
+ * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
+ */
+ protected final InternalFactHandle newFactHandle(final long id,
+ final Object object,
+ final boolean isEvent,
+ final long duration,
+ final WorkingMemory workingMemory ) {
+ return newFactHandle( id,
+ object,
+ this.counter++,
+ isEvent,
+ duration,
+ workingMemory );
+ }
/* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
@@ -76,6 +114,16 @@
final long recency,
final boolean isEvent,
final WorkingMemory workingMemory );
+
+ /* (non-Javadoc)
+ * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
+ */
+ protected abstract InternalFactHandle newFactHandle(final long id,
+ final Object object,
+ final long recency,
+ final boolean isEvent,
+ final long duration,
+ final WorkingMemory workingMemory );
/* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#increaseFactHandleRecency(org.drools.FactHandle)
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -684,7 +684,18 @@
* @see WorkingMemory
*/
public FactHandle insert(final Object object) throws FactException {
+ return insert( object, /* Not-Dynamic */
+ 0,
+ false,
+ false,
+ null,
+ null );
+ }
+
+ public FactHandle insert(final Object object,
+ final long duration) throws FactException {
return insert( object, /* Not-Dynamic */
+ duration,
false,
false,
null,
@@ -695,30 +706,65 @@
* @see WorkingMemory
*/
public FactHandle insertLogical(final Object object) throws FactException {
+ return insert( object, //Not-Dynamic
+ 0,
+ false,
+ true,
+ null,
+ null );
+ }
+
+ public FactHandle insertLogical(final Object object,
+ final long duration) throws FactException {
return insert( object, /* Not-Dynamic */
+ duration,
false,
true,
null,
null );
}
- public FactHandle insert(final Object object,
+ public FactHandle insert(final Object object,
final boolean dynamic) throws FactException {
return insert( object,
+ 0,
dynamic,
false,
null,
null );
}
+
+ public FactHandle insert(final Object object,
+ final long duration,
+ final boolean dynamic) throws FactException {
+ return insert( object,
+ duration,
+ dynamic,
+ false,
+ null,
+ null );
+ }
public FactHandle insertLogical(final Object object,
final boolean dynamic) throws FactException {
return insert( object,
+ 0,
dynamic,
true,
null,
null );
}
+
+ public FactHandle insertLogical(final Object object,
+ final long duration,
+ final boolean dynamic) throws FactException {
+ return insert( object,
+ duration,
+ dynamic,
+ true,
+ null,
+ null );
+ }
public FactHandle insert(final Object object,
final boolean dynamic,
@@ -727,15 +773,47 @@
final Activation activation) throws FactException {
return this.insert( EntryPoint.DEFAULT,
object,
+ 0,
dynamic,
logical,
rule,
activation );
}
+
+ public FactHandle insert(final Object object,
+ final long duration,
+ final boolean dynamic,
+ boolean logical,
+ final Rule rule,
+ final Activation activation) throws FactException {
+ return this.insert( EntryPoint.DEFAULT,
+ object,
+ duration,
+ dynamic,
+ logical,
+ rule,
+ activation );
+ }
protected FactHandle insert(final EntryPoint entryPoint,
+ final Object object,
+ final boolean dynamic,
+ boolean logical,
+ final Rule rule,
+ final Activation activation) throws FactException {
+ return this.insert(entryPoint,
+ object,
+ 0,
+ dynamic,
+ logical,
+ rule,
+ activation);
+ }
+
+ protected FactHandle insert(final EntryPoint entryPoint,
final Object object,
+ final long duration,
final boolean dynamic,
boolean logical,
final Rule rule,
@@ -753,6 +831,7 @@
if ( isSequential() ) {
handle = this.handleFactory.newFactHandle( object,
typeConf.isEvent(),
+ duration,
this );
addHandleToMaps( handle );
insert( entryPoint,
@@ -808,6 +887,7 @@
// assert
handle = this.handleFactory.newFactHandle( object,
typeConf.isEvent(),
+ duration,
this );
addHandleToMaps( handle );
@@ -864,6 +944,7 @@
key.setStatus( EqualityKey.STATED );
handle = this.handleFactory.newFactHandle( object,
typeConf.isEvent(),
+ duration,
this );
handle.setEqualityKey( key );
key.addFactHandle( handle );
@@ -874,6 +955,7 @@
} else {
handle = this.handleFactory.newFactHandle( object,
typeConf.isEvent(),
+ duration,
this );
addHandleToMaps( handle );
key.addFactHandle( handle );
@@ -903,6 +985,7 @@
}
handle = this.handleFactory.newFactHandle( object,
typeConf.isEvent(),
+ duration,
this );
addHandleToMaps( handle );
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -35,14 +35,25 @@
Rule rule,
Activation activation) throws FactException;
- FactHandle insert(Object object,
+ /*FactHandle insert(Object object,
boolean dynamic,
boolean logical,
Rule rule,
- Activation activation) throws FactException;
+ Activation activation) throws FactException;*/
+
+ FactHandle insert(Object object,
+ long duration,
+ boolean dynamic,
+ boolean logical,
+ Rule rule,
+ Activation activation) throws FactException;
+ /*public FactHandle insertLogical(Object object,
+ boolean dynamic) throws FactException;*/
+
public FactHandle insertLogical(Object object,
- boolean dynamic) throws FactException;
+ long duration,
+ boolean dynamic) throws FactException;
public void modifyRetract(final FactHandle factHandle,
final Rule rule,
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -373,7 +373,7 @@
// First alpha node filters
boolean isAllowed = true;
- final InternalFactHandle createdHandle = workingMemory.getFactHandleFactory().newFactHandle( result, false, workingMemory ); // so far, result is not an event
+ final InternalFactHandle createdHandle = workingMemory.getFactHandleFactory().newFactHandle( result, false, 0, workingMemory ); // so far, result is not an event
for ( int i = 0, length = this.resultConstraints.length; i < length; i++ ) {
if ( !this.resultConstraints[i].isAllowed( createdHandle,
workingMemory ) ) {
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -50,6 +50,29 @@
recency );
}
}
+
+ /* (non-Javadoc)
+ * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
+ */
+ protected final InternalFactHandle newFactHandle(final long id,
+ final Object object,
+ final long recency,
+ final boolean isEvent,
+ final long duration,
+ final WorkingMemory workingMemory ) {
+ if ( isEvent ) {
+ SessionClock clock = ((TemporalSession) workingMemory).getSessionClock();
+ return new EventFactHandle( id,
+ object,
+ recency,
+ clock.getCurrentTime(),
+ duration ); // primitive events have 0 duration
+ } else {
+ return new DefaultFactHandle( id,
+ object,
+ recency );
+ }
+ }
/* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#newInstance()
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -89,7 +89,7 @@
public QueryResults getQueryResults(final String query, final Object[] arguments) {
Object object = new DroolsQuery( query, arguments );
- InternalFactHandle handle = this.handleFactory.newFactHandle( object, false, this );
+ InternalFactHandle handle = this.handleFactory.newFactHandle( object, false, 0, this );
insert( EntryPoint.DEFAULT, // query dummy objects always use default entry point
handle,
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -33,12 +33,19 @@
public interface FactHandleFactory
extends
Serializable {
- /**
+ /**
* Construct a handle with a new id.
*
* @return The handle.
*/
InternalFactHandle newFactHandle(Object object, boolean isEvent, WorkingMemory workingMemory );
+
+ /**
+ * Construct a handle with a new id and a duration.
+ *
+ * @return The handle.
+ */
+ InternalFactHandle newFactHandle(Object object, boolean isEvent, long duration, WorkingMemory workingMemory );
/**
* Increases the recency of the FactHandle
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java 2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java 2007-12-17 14:35:42 UTC (rev 17285)
@@ -53,6 +53,17 @@
* returned as a FactException
*/
void insert(Object object) throws FactException;
+
+ /**
+ * Asserts an object, notice that it does not return the FactHandle
+ *
+ * @param object -
+ * the object to be asserted
+ * @throws FactException -
+ * Exceptions can be thrown by conditions which are wrapped and
+ * returned as a FactException
+ */
+ void insert(Object object, long duration) throws FactException;
/**
* Asserts an object specifying that it implement the onPropertyChange
@@ -68,11 +79,33 @@
*/
void insert(Object object,
boolean dynamic) throws FactException;
+
+ /**
+ * Asserts an object specifying that it implement the onPropertyChange
+ * listener, notice that it does not return the FactHandle.
+ *
+ * @param object -
+ * the object to be asserted
+ * @param dynamic -
+ * specifies the object implements onPropertyChangeListener
+ * @throws FactException -
+ * Exceptions can be thrown by conditions which are wrapped and
+ * returned as a FactException
+ */
+ void insert(Object object,
+ long duration,
+ boolean dynamic) throws FactException;
public void insertLogical(Object object) throws FactException;
+
+ public void insertLogical(Object object, long duration) throws FactException;
public void insertLogical(Object object,
boolean dynamic) throws FactException;
+
+ public void insertLogical(Object object,
+ long duration,
+ boolean dynamic) throws FactException;
void update(FactHandle handle,
Object newObject) throws FactException;
More information about the jboss-svn-commits
mailing list