David Holz started his presentation saying that the goal of his company is to eliminate all programming except in rules! Obviously it is a little tongue in cheek. But basically, how do you take rules beyond business rules?
They are trying to do as much as they can in rules and can see that writing rules using that approach has some advantages. Some of the disadvantages, is a loss of low level control and some performance in execution, but claims gains in productivity.
Some of the targets for declarative style are:
- Configuration
- Partial failure recovery
- Permissions Systems
- Job Control, workflows, state machines
- Continuous integration
- GUI layout and control
Based on that list, I’m not sure we are quite ready for this type of programming, but in theory it could be applied.
To achieve this, they created a Unified Rule Engine Model. This requires that all data is actually stored in Facts and you have a single knowledge base for the entire application suite. Then the rule engine controls everything else.
The challenges in having a Unified Rule Engine Model is that all the Facts need to be persistent, so your knowledge base is no longer simply in memory, it requires things to be permanent. Another challenge is how to support updates of rules without re-firing of a rule that was changed. Scalability is obviously another huge challenge.
My first impressions on all of this is that it is very interesting from an academic perspective, but I am not sure how much can be applied in the short term. Maybe it will have potential in the long term future, but I have doubts on the short term and medium term potential of this type of architecture.
The hurdles to making this production ready, stable enough, with the persistence challenges are very hard to get over. Then you need to have successful implementations, and to start convincing people that this is the way to go in the future from an architecture point of view. Hmmm.
The presentation then talked about Design Patterns in the Object Oriented World, and how it help software development. He wants to bring this to the rules world.
Some of the rules patterns he presented:
- A consumption pattern (and some other related patterns
- Event queue pattern
- Continuation Pattern
Still a very interesting presentation although I’m not sure how the first part could really be applied today. The Design Pattern part of the presentation has a lot more potential and I would be interested in seeing more on the topic in the future which David Holz is hoping to work on in the near future.