 <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: CEP vs. BRE - A TIBCO TTL (Top Ten List)</title>
	<atom:link href="http://tibcoblogs.com/cep/index.php/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/feed/" rel="self" type="application/rss+xml" />
	<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/</link>
	<description>Complex Event Processing (CEP)</description>
	<pubDate>Sat, 11 Feb 2012 17:17:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Paul Vincent</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-1192</link>
		<dc:creator>Paul Vincent</dc:creator>
		<pubDate>Wed, 22 Sep 2010 21:54:54 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-1192</guid>
		<description>Hi Riaz - good qu, but BE4's new extensions are not very common to what we know as BREs. Consider things like the event pattern language, and the built-in verification tools in the decision table editor - these are not so much features of the BE rule engine but alternative paradigms for representing problems better...

I guess the biggest "feature" in BE4 is the multi-threaded rule engine capability. Can give a very useful performance boost on multi-core systems and can be simpler than going multi-engine...

Cheers</description>
		<content:encoded><![CDATA[<p>Hi Riaz - good qu, but BE4&#8217;s new extensions are not very common to what we know as BREs. Consider things like the event pattern language, and the built-in verification tools in the decision table editor - these are not so much features of the BE rule engine but alternative paradigms for representing problems better&#8230;</p>
<p>I guess the biggest &#8220;feature&#8221; in BE4 is the multi-threaded rule engine capability. Can give a very useful performance boost on multi-core systems and can be simpler than going multi-engine&#8230;</p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Riaz Mohamed</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-1191</link>
		<dc:creator>Riaz Mohamed</dc:creator>
		<pubDate>Wed, 22 Sep 2010 21:39:02 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-1191</guid>
		<description>Paul
Comming back to the point between BRE's and BE , could you elaborate on BE 4.0 and a BRE .. im sure BE 4 has a lot more features attached to it. :)</description>
		<content:encoded><![CDATA[<p>Paul<br />
Comming back to the point between BRE&#8217;s and BE , could you elaborate on BE 4.0 and a BRE .. im sure BE 4 has a lot more features attached to it. <img src='http://tibcoblogs.com/cep/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Vincent</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-962</link>
		<dc:creator>Paul Vincent</dc:creator>
		<pubDate>Fri, 22 Jan 2010 00:53:55 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-962</guid>
		<description>Hi Arun - depends what are you expecting business users to do - developing CEP applications is probably out of scope, but maintaining then (such as certain event patterns or decsision rules) can make sense. Hence BusinessEvents Decision Manager makes perfect sense - although as a RCP client it is aimed more at the business analyst types who would also download and use BusinessStudio... more on this topic in a few weeks...</description>
		<content:encoded><![CDATA[<p>Hi Arun - depends what are you expecting business users to do - developing CEP applications is probably out of scope, but maintaining then (such as certain event patterns or decsision rules) can make sense. Hence BusinessEvents Decision Manager makes perfect sense - although as a RCP client it is aimed more at the business analyst types who would also download and use BusinessStudio&#8230; more on this topic in a few weeks&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: V.Arun</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-960</link>
		<dc:creator>V.Arun</dc:creator>
		<pubDate>Thu, 21 Jan 2010 15:38:24 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-960</guid>
		<description>Whether we like it or not, unfortunately BE does not have competetive UI which can be used by business users easily.</description>
		<content:encoded><![CDATA[<p>Whether we like it or not, unfortunately BE does not have competetive UI which can be used by business users easily.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-858</link>
		<dc:creator>Hans</dc:creator>
		<pubDate>Tue, 25 Aug 2009 03:51:20 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-858</guid>
		<description>Ken, I just happened to be browsing the comments and I saw your question about state models. To save the TIBCO guys from having to respond about their competitors capabilities, I will respond.

Amazingly, BusinessEvents is the only product to offer good state models for tracking entity states. I have never understood why.

SQL-like vendors offer something that Esper calls patterns. This is a way of expressing something like "event A before event B but not before event C". This kind of thing is very useful,  but provides only limited control over states.

No other CEP product allows you to define a state model for an order (for example) and have the system track the order through the states.

Some vendors let you code your own state machine in a script-like language, but I would not consider this to be the same thing.</description>
		<content:encoded><![CDATA[<p>Ken, I just happened to be browsing the comments and I saw your question about state models. To save the TIBCO guys from having to respond about their competitors capabilities, I will respond.</p>
<p>Amazingly, BusinessEvents is the only product to offer good state models for tracking entity states. I have never understood why.</p>
<p>SQL-like vendors offer something that Esper calls patterns. This is a way of expressing something like &#8220;event A before event B but not before event C&#8221;. This kind of thing is very useful,  but provides only limited control over states.</p>
<p>No other CEP product allows you to define a state model for an order (for example) and have the system track the order through the states.</p>
<p>Some vendors let you code your own state machine in a script-like language, but I would not consider this to be the same thing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ken Cottrell</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-857</link>
		<dc:creator>Ken Cottrell</dc:creator>
		<pubDate>Tue, 25 Aug 2009 02:29:47 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-857</guid>
		<description>Here's a question for the CEP industry experts.... how many of the other vendor CEP packages offer state models? I would think that state models that provide deep context of the real world are one of the most important sources of events, if not the most important. Your comments please.</description>
		<content:encoded><![CDATA[<p>Here&#8217;s a question for the CEP industry experts&#8230;. how many of the other vendor CEP packages offer state models? I would think that state models that provide deep context of the real world are one of the most important sources of events, if not the most important. Your comments please.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter lin</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-276</link>
		<dc:creator>peter lin</dc:creator>
		<pubDate>Thu, 04 Sep 2008 16:14:23 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-276</guid>
		<description>Thanks for taking time to respond. I appreciate it. The information is quite useful.

I look forward to see where Tibco BE heads in the future.</description>
		<content:encoded><![CDATA[<p>Thanks for taking time to respond. I appreciate it. The information is quite useful.</p>
<p>I look forward to see where Tibco BE heads in the future.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vincent</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-275</link>
		<dc:creator>vincent</dc:creator>
		<pubDate>Thu, 04 Sep 2008 13:05:02 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-275</guid>
		<description>Hi Peter:

My comments apply mostly to the current shipping version of BusinessEvents, which has extended its distribution mechanism over the version you have docs for. 

&lt;i&gt;"the engine first looks in working memory ..."&lt;/i&gt;
Since BE2.2, the strategy &lt;i&gt;per class&lt;/i&gt; is set by the developer, for in-memory only, cache+memory (default), and cache-only (i.e. explicit retrieval) modes. This is for fine-tuning and performance reasons, obviously. 

&lt;i&gt;"data is divided into concept instances and event data"&lt;/i&gt; 
Event objects are really just a special type of object (and with appropriate event classes). Events are characterised by their Time To Live (how long they live in the Event Processing Agent, whether rule-driven or otherwise), and what "consumes" them. The latter is important because the registration of "consumption" can be used by the middleware layer to determine a successful "delivery" of the event. If the system has a catastrophic failure before event consumption, the event can be consumed by another agent instead.

&lt;i&gt;"data tends to be relatively static, so it makes sense to put it in an in-memory database"&lt;/i&gt;
The in-memory role is primarily for reduced latency. CEP is about comparing new events with past events, so the latter must be easily (and speedily) accessible, whilst be capable of being updated as needed with information from the new events.

&lt;i&gt;"asserting the same facts in multiple rule engines will cause each engine to go through the pattern matching process"&lt;/i&gt;
In the general sense, yes, but remember that raw / external events are only ever delivered to a single agent (for processing, and thence assertions / updates to any shared facts).

&lt;i&gt;"Does BE integrate coherence Maps for the node memories, or is it simply using coherence as an external datastore?"&lt;/i&gt;
The latter, as sharing Rete node information would not be useful for other Event Processing Agent types (ie non-Rete) that are contributing to the solution. 

[Incidentally, for usage advice and commentary with BE, end-users and partners should head over to &lt;a href="http://www.TIBCommunity.com" title="TIBCO COmmunity site" rel="nofollow"&gt;TIBCOmmunity&lt;/a&gt;'s BE discussion forums.]

Cheers</description>
		<content:encoded><![CDATA[<p>Hi Peter:</p>
<p>My comments apply mostly to the current shipping version of BusinessEvents, which has extended its distribution mechanism over the version you have docs for. </p>
<p><i>&#8220;the engine first looks in working memory &#8230;&#8221;</i><br />
Since BE2.2, the strategy <i>per class</i> is set by the developer, for in-memory only, cache+memory (default), and cache-only (i.e. explicit retrieval) modes. This is for fine-tuning and performance reasons, obviously. </p>
<p><i>&#8220;data is divided into concept instances and event data&#8221;</i><br />
Event objects are really just a special type of object (and with appropriate event classes). Events are characterised by their Time To Live (how long they live in the Event Processing Agent, whether rule-driven or otherwise), and what &#8220;consumes&#8221; them. The latter is important because the registration of &#8220;consumption&#8221; can be used by the middleware layer to determine a successful &#8220;delivery&#8221; of the event. If the system has a catastrophic failure before event consumption, the event can be consumed by another agent instead.</p>
<p><i>&#8220;data tends to be relatively static, so it makes sense to put it in an in-memory database&#8221;</i><br />
The in-memory role is primarily for reduced latency. CEP is about comparing new events with past events, so the latter must be easily (and speedily) accessible, whilst be capable of being updated as needed with information from the new events.</p>
<p><i>&#8220;asserting the same facts in multiple rule engines will cause each engine to go through the pattern matching process&#8221;</i><br />
In the general sense, yes, but remember that raw / external events are only ever delivered to a single agent (for processing, and thence assertions / updates to any shared facts).</p>
<p><i>&#8220;Does BE integrate coherence Maps for the node memories, or is it simply using coherence as an external datastore?&#8221;</i><br />
The latter, as sharing Rete node information would not be useful for other Event Processing Agent types (ie non-Rete) that are contributing to the solution. </p>
<p>[Incidentally, for usage advice and commentary with BE, end-users and partners should head over to <a href="http://www.TIBCommunity.com" title="TIBCO COmmunity site" rel="nofollow">TIBCOmmunity</a>'s BE discussion forums.]</p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter lin</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-274</link>
		<dc:creator>peter lin</dc:creator>
		<pubDate>Thu, 04 Sep 2008 01:13:59 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-274</guid>
		<description>thanks again for taking time to respond. I'm enjoying the discussion. During my lunch break I looked at BE 2.1 user manual and came across the following paragraph from page 185.

When the Instance.getByExtId(extId) function is invoked, the engine first
looks in working memory and the Rete network for references to the instance. If
none are found, then the engine gets the instance from the cache and asserts it into
working memory. If the entity instance is not found in working memory or cache,
your application logic determines what to do next, for example, create a new
instance of that entity type.

From my understanding of how BE works, data is divided into concept instances and event data. The concept instances "can" reside in coherence outside of BE rule engine. The event data enters BE through channels. What BE calls concept instances sounds functionally similar to initial facts in expert systems. That data tends to be relatively static, so it makes sense to put it in an in-memory database. I can't tell if the event data is also stored in coherence. Is event data also stored in coherence? The paragraph seems to imply developers are responsible for partitioning the data and asserting it to each BE engine instance. Is that a correct interpretation?

In the interest of exploration, I thought it would be good to explain the approach I used to implement fault tolerance with Rete. In Jamocha, the alpha and beta node memories use HashMaps. When I implemented a proof of concept fault tolerance with coherence, I changed my collection factory to return coherence HashMap, instead of java.util.HashMap. This has several benefits for those familiar with fault tolerant Rete. The first is that one engine in the cluster performs the pattern matching. The other active engines sharing the same rules and facts have their node memories updated through coherence. This avoids asserting the same facts in multiple active engines sharing the same rules and eliminates redundant rule activation. The second is that if the fact doesn't create any partial matches, it never replicates the node memories, since there's nothing to replicate. In contrast, asserting the same facts in multiple rule engines will cause each engine to go through the pattern matching process.

For the record, this is basically what Oracle did with JESS. I've been blogging about this specific topic since 2005, so several people in the field are aware of these issues. The redundant activation issue is quite old and predates my own research. When I designed jamocha, I specifically chose to use Maps for this reason. The other benefit of using Maps for the node memories is it makes it easier to implement distributed Rete.

Does BE integrate coherence Maps for the node memories, or is it simply using coherence as an external datastore?</description>
		<content:encoded><![CDATA[<p>thanks again for taking time to respond. I&#8217;m enjoying the discussion. During my lunch break I looked at BE 2.1 user manual and came across the following paragraph from page 185.</p>
<p>When the Instance.getByExtId(extId) function is invoked, the engine first<br />
looks in working memory and the Rete network for references to the instance. If<br />
none are found, then the engine gets the instance from the cache and asserts it into<br />
working memory. If the entity instance is not found in working memory or cache,<br />
your application logic determines what to do next, for example, create a new<br />
instance of that entity type.</p>
<p>From my understanding of how BE works, data is divided into concept instances and event data. The concept instances &#8220;can&#8221; reside in coherence outside of BE rule engine. The event data enters BE through channels. What BE calls concept instances sounds functionally similar to initial facts in expert systems. That data tends to be relatively static, so it makes sense to put it in an in-memory database. I can&#8217;t tell if the event data is also stored in coherence. Is event data also stored in coherence? The paragraph seems to imply developers are responsible for partitioning the data and asserting it to each BE engine instance. Is that a correct interpretation?</p>
<p>In the interest of exploration, I thought it would be good to explain the approach I used to implement fault tolerance with Rete. In Jamocha, the alpha and beta node memories use HashMaps. When I implemented a proof of concept fault tolerance with coherence, I changed my collection factory to return coherence HashMap, instead of java.util.HashMap. This has several benefits for those familiar with fault tolerant Rete. The first is that one engine in the cluster performs the pattern matching. The other active engines sharing the same rules and facts have their node memories updated through coherence. This avoids asserting the same facts in multiple active engines sharing the same rules and eliminates redundant rule activation. The second is that if the fact doesn&#8217;t create any partial matches, it never replicates the node memories, since there&#8217;s nothing to replicate. In contrast, asserting the same facts in multiple rule engines will cause each engine to go through the pattern matching process.</p>
<p>For the record, this is basically what Oracle did with JESS. I&#8217;ve been blogging about this specific topic since 2005, so several people in the field are aware of these issues. The redundant activation issue is quite old and predates my own research. When I designed jamocha, I specifically chose to use Maps for this reason. The other benefit of using Maps for the node memories is it makes it easier to implement distributed Rete.</p>
<p>Does BE integrate coherence Maps for the node memories, or is it simply using coherence as an external datastore?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vincent</title>
		<link>http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/comment-page-1/#comment-273</link>
		<dc:creator>vincent</dc:creator>
		<pubDate>Wed, 03 Sep 2008 09:37:29 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/2008/08/19/cep-vs-bre-a-tibco-ttl-top-ten-list/#comment-273</guid>
		<description>Hi Peter,

&lt;i&gt;"replicating just the beta node indexes is much more efficient than replicating all facts"&lt;/i&gt;
Which is certainly true if you are replicating all facts on every (rule execution) cycle, as the Rete index represents a "compiled form" of the conditions dependent on those facts. 

But in BE ('s Rule Engine) you are:
(a) not replicating the entire WM on every cycle
(b) only replicating certain WM "as needed" (and even then, note that "notification of change" &lt;&gt; "replicate WM fact", and that not all WM will need to be shared anyway)
(c) due to the event-at-a-time nature of continuous, complex event processing, we are likely to be replicating small numbers of facts in any cycle anyway.

So any assumption that the 
Performance(replication(index)) &lt;&lt; Performance(replication(WM delta)) 
is, at best, very use case and implementation dependent - and in the case of CEP, where the WM delta for shared facts may be very small, this might not be the overhead some might assume...

[Note: I don't want to undermine Peter's work on Distributed Rete - developing a distribution mode for Rete indexes, handling the issues of managing rule (Rete) updates, etc, are all complex problems - is very interesting, although probably with high levels of dependancy on middleware latency like any other distributed rule solution, and probably unproven in a CEP application.] 

In any case, thanks for the dialog as it certainly helps to explain / position how BE works!</description>
		<content:encoded><![CDATA[<p>Hi Peter,</p>
<p><i>&#8220;replicating just the beta node indexes is much more efficient than replicating all facts&#8221;</i><br />
Which is certainly true if you are replicating all facts on every (rule execution) cycle, as the Rete index represents a &#8220;compiled form&#8221; of the conditions dependent on those facts. </p>
<p>But in BE (&#8217;s Rule Engine) you are:<br />
(a) not replicating the entire WM on every cycle<br />
(b) only replicating certain WM &#8220;as needed&#8221; (and even then, note that &#8220;notification of change&#8221; <> &#8220;replicate WM fact&#8221;, and that not all WM will need to be shared anyway)<br />
(c) due to the event-at-a-time nature of continuous, complex event processing, we are likely to be replicating small numbers of facts in any cycle anyway.</p>
<p>So any assumption that the<br />
Performance(replication(index)) << Performance(replication(WM delta))<br />
is, at best, very use case and implementation dependent - and in the case of CEP, where the WM delta for shared facts may be very small, this might not be the overhead some might assume&#8230;</p>
<p>[Note: I don't want to undermine Peter's work on Distributed Rete - developing a distribution mode for Rete indexes, handling the issues of managing rule (Rete) updates, etc, are all complex problems - is very interesting, although probably with high levels of dependancy on middleware latency like any other distributed rule solution, and probably unproven in a CEP application.] </p>
<p>In any case, thanks for the dialog as it certainly helps to explain / position how BE works!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

