<div><br></div><div>   Hi all,</div><div><br></div><div>   As you all know, we use &quot;entry-points&quot; to represent streams in Drools, but in fact, entry points are a much more general abstraction than just streams. For instance, they create partitions in the RETE&#39;s alpha network, they support all Rete concepts like truth maintenance, they share a centralized fact handle factory (that is possibly a contention point), etc.</div>
<div><br></div><div>   Event Streams in general can have a much more specialized implementation. For instance, as events are immutable, there is no need for truth maintenance; streams should be 100% parallelizable (does this word exist?); some algorithms like event sequencing can be run before injecting events into the main engine instead of injecting and then coordinating back with the sequencing algorithm. </div>
<div><br></div><div>   Because of things like the ones above, I was considering creating an explicit concept for streams in Drools. They would be a first class concept in the engine and would be handled appropriately. They would be orthogonal to entry-points, and be used exclusively for events. </div>
<div><br></div><div>   The other option that we have would be to continue to hide the implementation behind the concept of entry-points and to select algorithm details by compile time analysis. Although it seems like a simpler solution, it has the potential of confusing users that would not know exactly when something is being executed as a regular entry point (with TMS, and all the stuff mentioned above) or as a specific stream (that has features that would be specific for events).</div>
<div><br></div><div>   Thoughts?</div><div>    Edson</div><br clear="all"><br>-- <br>  Edson Tirelli<br>  JBoss Drools Core Development<br>  JBoss by Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>