<div dir="ltr">Hi all,<div><br></div><div>I'm in need of making a recommendation regarding a Business Rules Engine and am evaluating various open source and commercial projects for a customer. In the meantime, given the nature of this particular need, I'm realizing that it's possible I could build a DSL for generating an AST and pattern matching against it.</div><div><br></div><div>I'm operating on the assumption that there are potentially 10s of thousands of rules in the system at scale, rather than hundreds or millions. My personal goals are to be able to sustainably handle a decent amount of traffic via a webservice that can resolve all of these rules for a given input in around 2ms. This is not a hard requirement, but it is the performance that the system needs. 10s of ms would be acceptable. 100s would be out of the question.</div><div><br></div><div>I've not got anything more than tangential / play-style experience with any BREs. At present I am evaluating Drools, which is Java-based and uses the Rete algorithm [1]. I am not yet sure whether it will meet my performance "requirements".</div><div><br></div><div>On the Erlang front, I've seen at least ERESEYE[2]/sereseye[3] which are RETE+CLIPS and RETE-based versions. I've not dug into them yet at all.</div><div><br></div><div>I was curious if anyone on the list has experience with this in Erlang and had any pointers or real-life anecdotes regarding building such a system. It needn't be actually RETE-based, and in fact I would expect the newer algorithms to provide better performance. Anyone have anything to share with someone furiously filling their mind with this stuff at present?</div><div><br></div><div>Thanks in advance,</div><div><br></div><div>-Josh Adams</div><div><br></div><div>[1] Apparently actually something called RETE-OO - <a href="http://ieeexplore.ieee.org/xpl/login.jsp?reload=true&tp=&arnumber=5551128&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D5551128">http://ieeexplore.ieee.org/xpl/login.jsp?reload=true&tp=&arnumber=5551128&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D5551128</a></div><div>[2] <a href="https://www.erlang-solutions.com/sites/default/files/trimedia/eresye_0.pdf">https://www.erlang-solutions.com/sites/default/files/trimedia/eresye_0.pdf</a></div><div>[3] <a href="https://github.com/afiniate/seresye">https://github.com/afiniate/seresye</a><br clear="all"><div><br></div>
</div></div>