Thanks a lot for your comments, Mark. Since our new Student Information
System will be open source we would be more than happy to make contributions back
into the community.
Since our SIS will be based on SOA principles, we are
thinking of Making Drools a decision service (web service) for a single entry
point since we don’t want to have thousands of rule services.
Thanks,
Len
From: rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] On
Behalf Of Mark Proctor
Sent: Saturday, November 17, 2007
9:44 AM
To:
Subject: Re: [rules-users] Drools
and BRMS (60,000+ rules)
I am wondering if anyone has any experience in managing very
large rule sets and facts and could share their experiences in the design and
management of this.
We are embarking on a new Student Information System project
here at UBC in conjunction with several other American universities. We
have pretty much decided to use Drools as our rules engine and maybe also the
Drools BRMS for our business rules management. Our first application is
the course curriculum application/module where we will manage course
co-requisites, pre-requisites, etc. and we estimate that we will have about
20,000 course rules. We currently have about 15,000 course rules (QuickRules)
in production now. We will also have security rules, input/form validation
rules, student awards rules, degree rules, enrolment rules, admission rules,
student financial rules etc. which will total about 40,000 rules. So currently
we are looking at managing about 60,000 rules (not including versioning).
If we include versioning then there would probably be more than 100,000 rules.
We are using jackrabbit
JCR, I think it can handle this, but I don't have any hard figures for the
scalability. If it works for you, please do let us know :)
Example:
A single course could have 10 or more rules per course
version. We currently have about 2000 course and most courses have more than 1
version.
We are looking into developing our own rules management
system to define dependencies between rules, courses (facts) and course + rule
versions. E.g. Course CHEM101 version 1 links to CHEM101 a single rule or a
rule set/package version 1 by a rule id.
We need the ability to notify users when rules are modified
which impacts other rules and what impact changing a rule can cause for example
a degree program. E.g. changing a course‘s pre-requisite may affect other
courses’ pre-requisites; rules about rules. We also need the ability to
find out why a student was not able to register for a course etc. We will also
need to show the course dependency graph visually (the RDBMS can probably help
us here). Later, we are hoping to use the Drools Solver for course and exam
scheduling and also to use it for student degree planning and student awards.
We don't currently have
an exposed event model in the BRMS or change notification. However this would
not be hard to add, maybe you could help us? We have drools-analytics which
will create an api with the change impact requirements you need, it is not yet
currently integrated into the BRMS, bit if you do the notificatino part it
should be easy enough to add.
We will need to translate the rules into English language
syntax for publication in the course calendar and later into other languages
(first French) since the SIS application will be used internationally. Listing
requirements could just be shown in bulleted form. Probably can’t use the
DSL in this case since we would need to support several languages or maybe I am
wrong here?
DSL are just a
templating language, if can be made to look english like - if that's what you
need. You also have the "docementation" field in the BRMS, which you
can use. If you have other ideas please spec them out in a JIRA and we'll look
inoto doing them in the future, or maybe you can help us :)
If we use the Drools BRMS to store all of our rules on a
relational database, will we be able to write SQL queries to get at specific
rules/packages to link facts (courses) to rules? Or do we have to go through
the BRMS to get at the rules. Does BRMS have a facility to validate rules
against facts so you can see if your rules execute correctly against your
data/facts before committing your rules. Or maybe we need a testing framework
for this.
We use JackRabbit JCR,
we provide high level apis to accessing data, but you an ofcourse ue the
jackrabbit low level apsi - if you really know what you are doing. We have the
ability to validate the compilation of the rules, scenario testing is currently
being added and will be in the next release.
Other issues are the performance of the Drools Solver and
having thousands of rules compiled, loaded and running. During registration we
could have thousands of rules executing concurrently. The rules engine and the
BRMS would be services as part of an SOA infrastructure (and an OSGi service
environment). Anyone got any experience with Drools in an OSGi
environment with respect to class loading issues when compiling rules and facts
from other bundles since rules and facts may be in different bundles? Bundle
buddy class loading?
No but it is something
that interests us, please give us your OSGi feedback. Solver is not currently a
supported product, its very much R&D alphaware, but I'm sure geoffrey would
love your feedback, good to see people are evaluating it.
Later, we will need translators to/from other rule engines;
maybe ruleML and JCR can help us here.
JCR is jus a storage
repository, for rule translators you are on your own. However Drools itself is language
independant, we are exposing the api for pluggeable parsers - so in theory you
could write parsers for each of these.
So far, I think Drools can do most of this; am I correct
here? Does any of this sound plausible?
I'm sure you can get by
for now, and work with us to make it the best system for your needs.
Thanks very much for any tips, thoughts or comments.
Len
Len Carlsen
Enrolment Services - Student Systems
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users