<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Carlsen, Len wrote:
<blockquote
 cite="mid:F00D5E1871EEE14E86E7F2864F4730F507E1F79C@exchange11.mercury.ad.ubc.ca"
 type="cite">
  <meta http-equiv="Content-Type" content="text/html; ">
  <meta name="Generator" content="Microsoft Word 11 (filtered medium)">
  <o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="PlaceName">
  <o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="PlaceType"><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="place">
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
  <style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:Arial;}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:Arial;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
  </style></o:SmartTagType></o:SmartTagType></o:SmartTagType>
  <div class="Section1">
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">Hello,<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">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.<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">We are embarking on a new
Student Information System project
here at UBC in conjunction with several other American universities.
&nbsp;We
have pretty much decided to use Drools as our rules engine and maybe
also the
Drools BRMS for our business rules management.&nbsp; 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).&nbsp;
If we include versioning then there would probably be more than 100,000
rules.</span></font></p>
  </div>
</blockquote>
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 :)<br>
<blockquote
 cite="mid:F00D5E1871EEE14E86E7F2864F4730F507E1F79C@exchange11.mercury.ad.ubc.ca"
 type="cite">
  <div class="Section1">
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">Example:<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">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.<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">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.<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">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&#8216;s pre-requisite may affect
other
courses&#8217; 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.</span></font></p>
  </div>
</blockquote>
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.<br>
<blockquote
 cite="mid:F00D5E1871EEE14E86E7F2864F4730F507E1F79C@exchange11.mercury.ad.ubc.ca"
 type="cite">
  <div class="Section1">
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">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&#8217;t use
the
DSL in this case since we would need to support several languages or
maybe I am
wrong here?</span></font></p>
  </div>
</blockquote>
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 :)<br>
<blockquote
 cite="mid:F00D5E1871EEE14E86E7F2864F4730F507E1F79C@exchange11.mercury.ad.ubc.ca"
 type="cite">
  <div class="Section1">
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">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.</span></font></p>
  </div>
</blockquote>
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.<br>
<blockquote
 cite="mid:F00D5E1871EEE14E86E7F2864F4730F507E1F79C@exchange11.mercury.ad.ubc.ca"
 type="cite">
  <div class="Section1">
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">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).&nbsp; 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?</span></font></p>
  </div>
</blockquote>
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&amp;D alphaware, but I'm sure geoffrey would love your feedback, good
to see people are evaluating it.<br>
<blockquote
 cite="mid:F00D5E1871EEE14E86E7F2864F4730F507E1F79C@exchange11.mercury.ad.ubc.ca"
 type="cite">
  <div class="Section1">
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">Later, we will need translators
to/from other rule engines;
maybe ruleML and JCR can help us here.</span></font></p>
  </div>
</blockquote>
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.<br>
<blockquote
 cite="mid:F00D5E1871EEE14E86E7F2864F4730F507E1F79C@exchange11.mercury.ad.ubc.ca"
 type="cite">
  <div class="Section1">
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">So far, I think Drools can do
most of this; am I correct
here? Does any of this sound plausible?</span></font></p>
  </div>
</blockquote>
I'm sure you can get by for now, and work with us to make it the best
system for your needs.<br>
<blockquote
 cite="mid:F00D5E1871EEE14E86E7F2864F4730F507E1F79C@exchange11.mercury.ad.ubc.ca"
 type="cite">
  <div class="Section1">
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">Thanks very much for any tips,
thoughts or comments.<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">Len<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">Len Carlsen<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">Enrolment Services - Student
Systems<o:p></o:p></span></font></p>
  <p class="MsoNormal" style="margin-bottom: 12pt;"><U1:PLACE u2:st="on"><U1:PLACETYPE
 u2:st="on"><st1:place w:st="on"><st1:PlaceType w:st="on"><font
 color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; color: navy;">University</span></font></st1:PlaceType></st1:place><font
 color="navy" size="2"><span style="font-size: 10pt; color: navy;"> of <U1:PLACENAME
 u2:st="on"><st1:PlaceName w:st="on">British Columbia</st1:PlaceName></U1:PLACENAME></span></font></U1:PLACETYPE></U1:PLACE><font
 color="navy" size="2"><span style="font-size: 10pt; color: navy;"><o:p></o:p></span></font></p>
  </div>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
rules-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
  </pre>
</blockquote>
<br>
</body>
</html>