Fork me on GitHub

@thomas Sort of. To elaborate a bit: The rules are forms, and the rule constraints and actions are just Clojure expressions. All of these get compiled down into Clojure functions in the end, which are executed as part of a Rete-style rule network. I have no idea if that's what you're looking for or not. 😉


@devn Not sure why that use wouldn't work. Facts that aren't in the session should be seen in the UI. I almost certainly have a bug in there somewhere. clara-tools will harden over the next few weeks but the current draft is very much use at your own risk (although bug reports and patches are of course welcome.)


By the way: Clara 0.9.2 is out:!topic/clara-rules/kuy-XPUKzLU. It fixes an ugly edge case of truth maintenance and hopefully does a better job reporting errors in a number of scenarios.


@ryanbrush: reason for me asking is that I was wondering if Clara could be combined with Onyx and make it some sort of Rule/Event processing engine.


@thomas I don't know much about Onyx, but I'm sure you could invoke Clara rules and queries from with in a function running within Onyx. The rule engine working memory would be local to that node, which in many cases is fine.


@thomas Ultimately I'd like to have an implementation of Clara's working memory that is distributed across a processing cluster, so you could just write rules to deal with input and emit outcomes. This is significantly more challenging. I had an experimental extension of Clara where the memory was distributed across a Storm cluster, but this effort was dropped due to other needs. The big challenge is fault tolerance of a distributed working memory. If a node becomes unavailable, how do we recover its part of the Rete network? I've been toying with some solutions to this by mapping Clara's working memory onto existing fault tolerant processing patterns but this is little more than an idea right now.


@ryanbrush: ok thank you, this is something I would like to look into at some stage


ie. read one day


@thomas Yes, me too!


@thomas Poking around Onyx a bit I think you could use Clara as a stateful aggregator of previously grouped data pretty easily, using Onyx's state management/windowing capabilities. So you could have a stream of data, inserting updates into a Clara working memory, and computing results like that. Could be useful to solve a number of problems.


I was wondering if something like that could be done... would be very cool.


@thomas Yeah, I haven't used Onyx but it seems doable from what I can see.