On 26 July 2011 21:42, Edson Tirelli <ed.tirelli@gmail.com> wrote:

   Hi all,

   As you all know, we use "entry-points" 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'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.

   Event Streams in general can have a much more specialized implementation. For instance, as events are immutable,

"Immutable" certainly not by a Drools definition? Something with @role(event) is just a fact, and I can modify an event as required by my application.
 
there is no need for truth maintenance;

A fact derived from events could be managed by the TMS - why not? Or do you mean s.th. else?

 
streams should be 100% parallelizable (does this word exist?);

If it didn't exist before, it exists now ;-)
 
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. 

   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. 

It's difficult (for me) to see what a "stream" should imply. Can you provide a concise definition? A "stream" should be for  role event only, and its facts should be immutable (?) - what else?
 
Are there any good use cases for these "streams" that cannot be readily dealt with using events?


   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

Most of the time, the confusion of Drools users stems from the lack of clear documentation - not from the complexitiy of features.

Cheers
Wolfgang
 
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).

   Thoughts?
    Edson


--
  Edson Tirelli
  JBoss Drools Core Development
  JBoss by Red Hat @ www.jboss.com

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