The Kogito initiative is our pledge to bring our business automation suite to the cloud and the larger Kubernetes ecosystem. But what does this mean for our beloved rule engine, Drools? In this post we introduce modular rule bases using rule units: a feature that has been experimental for a while in Drools 7, but that will be instrumental for Kogito, where it will play a much bigger role. This is the first post of a series where we will give you an overview of this feature (read part 2)
Bringing Drools Further
Drools
is our state-of-the-art, high-performance, feature-rich open source
rule engine. People love it because it is a swiss-army knife to the
many problems that can be solved using rule-based artificial
intelligence. But as the computer programming landscape evolves, we
need to think of ways to bring further Drools as well. As you may
already know, Kogito is our effort to make Drools and jBPM really
cloud-native, and well-suited for serverless deployments: we are
embracing the Quarkus framework and GraalVM’s native binary
compilation for super-fast startup times and low memory footprint;
but we are not stopping there.
The
way we want to bring further Drools evolution is twofold: on the one
hand, we want to make our programming model easier to reason
about, by providing better ways to define boundaries in a rule
base with a better concept of module; on the other hand, the
concept of modular programming dates back at least to the 1970s and
to Parnas’
original seminal paper. Needless to say, if our
contribution stopped there, we would be bringing nothing new to the
plate. In the last few years, computing has evolved, slowly but
steadily embracing the multicore and distributed revolution;
yet, to this day, many general-purpose programming languages do not
really make it simple to write parallel or distributed programs.
rule-based programming system we have the chance to propose something
different: a rule engine that is great when stand-alone,
but outstanding in the cloud.
Modular
Rule Bases. As you already know, Drools provides a convenient way
to partition set of rules into knowledge bases. Such knowledge
bases can be composed together, yielding larger sets of rules.
When a knowledge base is instantiated (the so-called session),
rules are put together in the same execution environment (the
production memory), and values (the facts) are all
inserted together in the same working memory.
This
model is very simple and powerful but in some senses it is
also very limited. It is very simple, because, as a user of
the rule base, you just worry about your data: the values are
inserted into the working memory, and the engine does its magic. It
is very powerful, because, as a rule author, you can rely upon the
rules you have written to realize complex flows of reasoning, without
worrying about how and when they will trigger.
At
the same time, such an execution model lacks all of the principles,
that over the years we have been learning are good programming
practice. For instance, there is no proper notion of a module:
it is not possible to perfectly isolate one rule from another, or to
properly partition the working memory. As the rule base scales up in
complexity, it may become harder to understand which rules trigger
and why.
In some senses, it is as if you were programming in an odd world
where proper encapsulation of state does not exist, as if years of
programming language evolution had not happened.
Object-Oriented
Programming. The term object-oriented programming has been
overloaded over the years to mean a lot of different things; it has
to do both with inheritance, with encapsulation of state,
with code reuse, with polymorphism. All these terms get
often confused, but they are not really related: you can reuse code
without inheritance, you can encapsulate state without objects, you
can write polymorphic code without classes. Very recent, imperative
programming languages such as Go and Rust do not come with proper
classes, yet they support a form of object-orientation; there is even
a
beautiful 2015 talk from C++’s dad, Bjarne Stroustrup, showing how
his child supports object-orientation without inheritance.
Alan
Kay, who fathered the term in his Smalltalk days at Xerox, in
his inspiring lecture at OOPSLA 1997 said «I made up the term
"object-oriented", and I can tell you I did not have C++ in
mind». In fact, the idea of objects that Alan
Kay pioneered was more similar to the concept of actors and
microservices. In proper object-oriented programming,
objects encapsulate their internal state and expose their behavior by
exchanging messages (usually called methods) with the external
world.
Today
actor systems have seen a renaissance, message buses are very central
to what today we call reactive programming, microservices are
almost given for granted. So, we wondered, what would it mean for
Drools to become a first-class citizen of this new programming
landscape?
Kogito, ergo Cloud
In
the next post we will see our take on rule-based, modular
programming, using rule units. Rule units will provide an
alternative to plain knowledge base composition and an extended model
of execution. We believe that rule units will make room for a wider
spectrum of use cases, including parallel and distributed
architectures. Stay tuned to read how they fit in the Kogito story,
and the exciting possibilities that they may open for the future of
our automation platform.

Such an excellent blog.I learned a lot here.share more updates
ReplyDeleteAngularjs training in chennai
Angularjs course in chennai
Spoken English Classes in Chennai
Software Testing Training in Chennai
PHP Training in chennai
Angularjs training in Thiruvanmiyur
Angularjs training in Adyar
Angularjs training in Tambaram
Angularjs training in chennai
Angularjs course in chennai
Kogito seem to be a great initiative.
ReplyDeleteThanks for sharing this post.Learned lots of infomation from your blog
ReplyDeleteEthical Hacking Course in OMR
Ethical Hacking Course in Porur
Ethical Hacking Course in Adyar
Ethical Hacking Course in Velachery
Ethical Hacking Course in Tambaram
Ethical Hacking Course in Anna Nagar
Ethical Hacking Course in Tnagar
Ethical Hacking Course in Thiruvanmiyur
Ethical Hacking Course in Vadapalani
Thanks for sharing exciting opportunities that they will surely open for the future of your automation platform.
ReplyDeleteThe way you have conveyed your blog is more impressive.... good blog...
ReplyDeleteJAVA Training in Chennai
Best JAVA Training institute in Chennai
JAVA Course
advanced java training in chennai
JAVA Training in Tambaram
java training in Guindy
Python Training in Chennai
Big data training in chennai
SEO training in chennai
Selenium Training in Chennai
Thank you so sharing on SMS Services
ReplyDeletemp3 juice download is very demanded, and everybody would like to get such platform. Here you can indeed found better-chosen files.
ReplyDeleteYou have a good point here!I totally agree with what you have said!! Thanks for sharing your views. hope more people will read this article!!! land clearing greenacres
ReplyDeletehmm
ReplyDeleteDo you where to find quality Custom Term Paper Writing Services to suit all your academic requirements? Legitimate Term Paper Writing Services are there for all your Custom Term Paper Writing Service needs.
ReplyDeleteExcellent Post! For more information Visit Here.dumpster rental little rock
ReplyDeleteThis post is good enough to make somebody understand this amazing thing, and I’m sure everyone will appreciate this interesting things.septic tank pumping little rock
ReplyDeleteI have read your article, it is very informative and helpful for me.I admire the valuable information you offer in your articles. Thanks for posting it..tree trimming companies beaumont
ReplyDeleteI think this is one of the most significant information for me. And i’m glad reading your article.dumpster rental cost corpus christi
ReplyDelete