<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.java.drools.devel">
    <title>gmane.comp.java.drools.devel</title>
    <link>http://blog.gmane.org/gmane.comp.java.drools.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5717"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5713"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5712"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5711"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5709"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5705"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5704"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5701"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5700"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5698"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5697"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5696"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5695"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5693"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5691"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5690"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5689"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5687"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5686"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.java.drools.devel/5685"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5717">
    <title>[rules-dev] Want to host IntelliFest (previously RuleFest)?</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5717</link>
    <description>&lt;pre&gt;IntelliFest (previously RuleFest) is currently trying to find premises 
on the west coast of USA, with near by accomodation, to host 150 people 
for 4 days. Interested in hosting?

If so contact me on mproctor at codehaus d0t org

_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-05-25T04:21:46</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5713">
    <title>[rules-dev] 2 very useful github tips</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5713</link>
    <description>&lt;pre&gt;   Was watching a presentation yesterday from Zack Holman (&amp;lt; at &amp;gt;holman) and he
presented 2 very useful tricks on github:

* on any page in a repository, press "t" on your keyboard and start typing
the name of a file and it will find the file for you. Same as ctrl+t/ctrl+r
on Eclipse. I use this all the time. Press "?" for a list of all keyboard
shortcuts.

* on a diff/commit page, add "?w=1" at the end of the URL to make the diff
ignore whitespaces. Very useful for those commits where people are using a
different code format.

   Edson

&lt;/pre&gt;</description>
    <dc:creator>Edson Tirelli</dc:creator>
    <dc:date>2012-05-24T13:54:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5712">
    <title>[rules-dev] Functional Programming in Drools</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5712</link>
    <description>&lt;pre&gt;Hi all,

similarly to what Edson did with his Event Sequencing specs, I modified and
enriched my draft proposal about Functional Programming in Drools:

https://community.jboss.org/wiki/FunctionalProgrammingInDrools

and opened a JIRA ticket to gather all the comments and suggestions related
to it:

https://issues.jboss.org/browse/JBRULES-3516

I just started working on the development of the features listed in that
document and at the moment I only have a first working implementation of
what described in the "Higher-Order functions" section.

Thanks for your feedbacks,
Mario
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
&lt;/pre&gt;</description>
    <dc:creator>Mario Fusco</dc:creator>
    <dc:date>2012-05-23T07:32:13</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5711">
    <title>[rules-dev] Event Abstraction,Event Sequencing and Pattern repetition</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5711</link>
    <description>&lt;pre&gt;   All,

   For the next Drools release we intend to add support to event
abstraction, event sequencing, pattern repetition and related features. A
draft proposal can be found in the following link:

https://community.jboss.org/wiki/EventSequencing

   I opened a JIRA to centralize feedback for future reference:

https://issues.jboss.org/browse/JBRULES-3514

   Feedback is welcome on the above ticket. I would like to minimize e-mail
feedback as that ends up lost in time.

   Individual features will be implemented in sub-tickets of the above
master ticket.

   I am starting to refine the draft and will start the design asap, so the
sooner you send me feedback, the more likely it will be included in the
final release.

   Thanks,
      Edson

&lt;/pre&gt;</description>
    <dc:creator>Edson Tirelli</dc:creator>
    <dc:date>2012-05-22T19:43:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5709">
    <title>[rules-dev] 2nd CFP - 6th Int. Workshop on Event-Driven Business Process Management (edBPM12)</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5709</link>
    <description>&lt;pre&gt;[ our apologies should you receive this message more than one time ]

6th Int. Workshop on Event-Driven Business Process Management (edBPM12)

collocated with BPM 2012

Tallinn, Estonia, 3-7 September 2012

http://icep-edbpm12.fzi.de/

++++ SUBMISSION DEADLINE - JUNE 1st +++++


Workshop Themes
--------------------------

Authors are invited to submit novel contributions in the prior described
problem domain.

    * Event-driven BPM: Concepts
          o Role of event processing in BPM
          o Business Events: types and representation
          o Event stream processing in business processes
          o Data- and event-driven business processes
          o Evaluation/ROI of event-driven BPM
          o Event-driven SOA
          o EDA and BPM
          o Real/time awareness in BPM
          o Context in BPM
    * Design-time CEP and BPM
          o Modelling languages, notations and methods for event-driven BPM
          o Event Patterns: Definition / Creation / Representation /
Learning
          o BPMN and event processing
          o Modelling unknown/similar events in business processes
          o Modelling events in human-oriented tasks
          o Semantics/Ontologies for event-driven BPM
          o Publish/subscription mechanism and process modelling
    * Run-time CEP and BPM
          o Event pattern detection
          o BPEL and event processing
          o Reasoning about unknown/similar events
          o Distributed event processing
          o Dynamic workflows
          o Ad-hoc workflows
    * Applications/Use cases for event-driven BPM
          o Event-driven monitoring/BAM
          o Event-driven SLA monitoring
          o Domains: Logistics, Automotive, .
          o Event processing and Internet of Services


Important Dates
--------------------------

Deadline paper submissions: 1 June 2012

Notification of acceptance: 2 July 2012

Camera-ready papers: 30 July 2012

Workshops: 3 September 2012

Submission
--------------------------

The following types of submission are solicited:

- Long paper submissions, describing substantial contributions of novel
ongoing work. Long papers should be at most 12 pages long.

- Short paper submissions, describing work in progress. These papers should
be at most 6 pages long.

- Use case submission, describing results from an edBPM use case. These
papers should be at most 4 pages long.

Papers should be submitted in the new LNBIP format
(http://www.springer.com/computer/lncs?SGWID=0-164-6-791344-0). Papers have
to present original research contributions not concurrently submitted
elsewhere. The title page must contain a short abstract, a classification of
the topics covered, preferably using the list of topics above, and an
indication of the submission category (Long Paper/ Short Paper). Accepted
paper will be published in the joint workshops proceeding (Springer).

For submission, please visit
http://www.easychair.org/conferences/?conf=edbpm12.


Organizing Committee
--------------------------

Nenad Stojanovic
FZI - Research Center for Information Technologies at the University of
Karlsruhe, Germany.
nstojano (at) fzi dot de

Opher Etzion
IBM Research Lab in Haifa
OPHER (at) il dot ibm dot com

Adrian Paschke
Corporate Semantic Web, Free University Berlin, Germany and RuleML Inc.,
Canada
paschke (at) inf dot fu-berlin dot de

Christian Janiesch
Karlsruhe Institute of Technology (KIT)
Christian.Janiesch (at) kit dot edu

&lt;/pre&gt;</description>
    <dc:creator>Adrian Paschke</dc:creator>
    <dc:date>2012-05-21T08:25:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5705">
    <title>[rules-dev] can't put the formula in Guvnor 5.4</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5705</link>
    <description>&lt;pre&gt;Hi Team !

           Since yesterday only I started learning Drools with the help of
Google and *JBOSS DROOLS BUSINESS RULES pdf file*. I faced many problems to
understand the concept but now its going smooth. But the problem is
the *version
of PDF file of the book* and the *Govener version*. *Its quite different*.
 I request you all to please provide me the latest version of PDF as I am
unable to find on net. The problem I am facing is to put the formula as
given in the screen shot in the book.
           I am unable to put the *formula* as described in JBOSS DROOLS
BUSINESS RULES pdf file on page no. 102.....the formula is *salesValue-10
as the box is not capable of taking cahracters. *It is taking only integer.

Thanks in Advance for all the help and material !!!!
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
&lt;/pre&gt;</description>
    <dc:creator>zeeshan khan</dc:creator>
    <dc:date>2012-05-15T10:52:42</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5704">
    <title>[rules-dev] IRC Server Change - from Codehaus to Freenode</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5704</link>
    <description>&lt;pre&gt;Drools, jBpm and Guvnor are moving from codehaus irc servers to 
freenode. You can now find us on the following channels on 
irc://chat.freenode.net &amp;lt;http://chat.freenode.net&amp;gt;
#drools &amp;lt;https://plus.google.com/s/%23drools&amp;gt;
#droolsdev &amp;lt;https://plus.google.com/s/%23droolsdev&amp;gt;
#jbpm &amp;lt;https://plus.google.com/s/%23jbpm&amp;gt;
#jbpmdev &amp;lt;https://plus.google.com/s/%23jbpmdev&amp;gt;
#guvnor &amp;lt;https://plus.google.com/s/%23guvnor&amp;gt;
#guvnordev &amp;lt;https://plus.google.com/s/%23guvnordev&amp;gt;

freenode also maintains a web interface:
http://webchat.freenode.net/
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-05-15T10:49:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5701">
    <title>[rules-dev] Drools 5.4.0.Final released</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5701</link>
    <description>&lt;pre&gt;http://blog.athico.com/2012/05/drools-540final-released.html
----link contents pasted below---

We are happy to announce the release of Drools (Expert, Fusion, Planner, 
Guvnor) *5.4.0.Final*. jBPM 5.3.0 announcement will follow shortly and 
the link will be added when it does.

Documentation, Release Notes and Downloads are detailed below:

  * Download the zips from the bottom of the drools download page
    &amp;lt;http://www.jboss.org/drools/downloads&amp;gt;.
      o To try out the examples, just unzip one and run a
        runExamples.sh/.bat script.
      o See the JBoss Maven repository for a list of all released
        artifacts
        &amp;lt;https://repository.jboss.org/nexus/index.html#nexus-search;gav%7Eorg.drools*%7E%7E5.4.0.Final%7E%7E&amp;gt;.
          + It will be synced to Maven Central
            &amp;lt;http://search.maven.org/#search%7Cga%7Final%7Corg.drools&amp;gt;
            automatically in a couple of hours.
  * *Read the new and noteworthy changes here.
    &amp;lt;http://docs.jboss.org/drools/release/5.4.0.Final/droolsjbpm-introduction-docs/html/releaseNotesSimple.html&amp;gt;*

Try it out and give us some feed-back (user list 
&amp;lt;http://www.jboss.org/drools/lists&amp;gt;, issue tracker 
&amp;lt;https://issues.jboss.org/browse/JBRULES&amp;gt;).

Some new online videos, make sure you change youtube setting to 720:

*Build Pong in 13 Minutes*
http://www.youtube.com/watch?v=Omj4PR3v-nI

*Build a Graphical Adventure in 20 Minutes:*
http://www.youtube.com/watch?v=4CvjKqUOEzM 
&amp;lt;http://www.youtube.com/watch?v=4CvjKqUOEzM%20&amp;gt;

*Guided Decision Tables*
http://vimeo.com/35472874

*Importing Excel Decision Tables*
http://vimeo.com/37033081http://vimeo.com/37033081 
&amp;lt;http://vimeo.com/37033081&amp;gt;
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-05-14T19:28:32</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5700">
    <title>[rules-dev] Build Pong in 13 minutes using JBoss Drools</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5700</link>
    <description>&lt;pre&gt;Just finished "Build Pong in 13 minutes with JBoss Drools" enjoy :) and 
please vote up on dzone
http://www.dzone.com/links/build_pong_in_13_minutes_using_jboss_drools.html

For those with more time, here is a longer and more complex video that I 
made before Pong.
"Build a Graphical Adventure Game in 20 minutes using JBoss Drools : All 
Hail the Wumpus "
http://www.dzone.com/links/build_a_graphical_adventure_game_in_20_minutes_us.html

Mark
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-05-11T15:10:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5698">
    <title>[rules-dev] Drools 5.4: Artificial Intelligence, A Little History</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5698</link>
    <description>&lt;pre&gt;please vote up:
http://www.dzone.com/links/drools_54_artificial_intelligence_a_little_history.html
-----copied from website link-----
As part of the 5.4 release, going out the door as we speak, I updated 
the intro docs. I have tried to give a wider understanding of the field 
and scope of work. Here is a copy. I'll try and improve the sections 
over future releases, I ran out of time and the later sections are 
little rushed and thin. I'm not the best of writers, so please have 
patience, all contributions welcome :)


      *A Little History*

Over the last few decades artificial intelligence (AI) became an 
unpopular term, with the well know "AI Winter" 
&amp;lt;http://en.wikipedia.org/wiki/AI_winter&amp;gt;. There were large boasts from 
scientists and engineers looking for funding, that never lived up to 
expectations along with many failed projects. Thinking Machines 
Corporation &amp;lt;http://en.wikipedia.org/wiki/Thinking_Machines_Corporation&amp;gt; 
and the 5th Generation Computer 
&amp;lt;http://en.wikipedia.org/wiki/Fifth-generation_computer&amp;gt; (5GP) project 
probably exemplify best the problems at the time.

Thinking Machines Corporation was one of the leading AI firms in 1990, 
it had sales of nearly $65 million. Here is quote from it's brochure:
"Some day we will build a thinking machine. It will be a truly 
intelligent machine. One that can see and hear and speak. A machine that 
will be proud of us."

Yet 5 years later it filed for Chapter 11. inc.com has a fascinating 
article titled "The Rise and Fall of Thinking Machines" 
&amp;lt;http://www.inc.com/magazine/19950915/2622.html&amp;gt;. The article covers the 
growth of the industry and how a cosy relationship with Thinking 
Machines and DARPA &amp;lt;http://en.wikipedia.org/wiki/DARPA&amp;gt; over heated the 
market, to the point of collapse. It explains how and why commerce moved 
away from AI and towards more practical number crunching super computers.

The 5th Generation Computer project was a 400mill USD project in Japan 
to build a next generation computer. Valves was first, transistors was 
second, integrated circuits was third and finally microprocessors was 
fourth. This project spurred an "arms" race with the UK and USA, that 
caused much of the AI bubble. The 5GP would provide massive multi-cpu 
parallel processing hardware along with powerful knowledge 
representation and reasoning software via Prolog; a type of expert 
system. By 1992 the project was considered a failure and cancelled. It 
was the largest and most visible commercial venture for Prolog, and many 
of the failures are pinned on the problems trying to run a logic based 
programming language concurrently on multi cpu hardware with effective 
results. Some believe that the failure of the 5GP project tainted Prolog 
and resigned it academia, see "Whatever Happened to Prolog" 
&amp;lt;http://www.dvorak.org/blog/whatever-happened-to-prolog/&amp;gt; by John C. Dvorak.

However while research funding dried up and the term AI became less 
used, many green shoots where planted and continued more quietly under 
discipline specific names: cognitive systems, machine learning, 
intelligent systems, knowledge representation and reasoning. Offshoots 
of these then made their way into commercial systems, such as expert 
systems in the Business Rules Management System (BRMS) market.

Imperative, system based languages, languages such as C, C++, Java and 
.Net have dominated the last 20 years. Enabled by the practicality of 
the languages and ability to run with good performance on commodity 
hardware. However many believe there is renaissance undergoing in the 
field of AI, spurred by advances in hardware capabilities and AI 
research. In 2005 Heather Havenstein authored "Spring comes to AI 
winter" 
&amp;lt;http://www.computerworld.com/s/article/99691/Spring_comes_to_AI_winter&amp;gt; 
which outlines a case for this resurgence, which she refers to as a 
spring. Norvig and Russel dedicate several pages to what factors allowed 
the industry to over come it's problems and the research that came about 
as a result:

"Recent years have seen a revolution in both the content and the 
methodology of work in artificial intelligence. It is now more common to 
build on existing theories than to propose brand-new ones, to base 
claims on rigorous theorems or hard experimental evidence rather than on 
intuition, and to show relevance to real-world applications rather than 
toy examples." (Artificial Intelligence : A Modern Approach.)

Computer vision, neural networks, machine learning and knowledge 
representation and reasoning (KRR) have made great strides in become 
practical in commercial environments. For example vision based systems 
can now fully map out and navigate their environments with strong 
recognition skills, as a result we now have self driving cars about to 
enter the commercial market. Ontological research, based around 
description logic, has provided very rich semantics to represent our 
world. Algorithms such as the tableaux algorithm have made it possible 
to effectively use those rich semantics in large complex ontologies. 
Early KRR systems, like Prolog in 5GP, were dogged by the limited 
semantic capabilities and memory restrictions on the size of those 
ontologies.


      *Knowledge Representation and Reasoning *

In A Little History talks about AI as a broader subject and touches on 
Knowledge Representation and Reasoning (KRR) and also Expert Systems, 
I'll come back to Expert Systems later.
KRR is about how we represent our knowledge in symbolic form, i.e. how 
we describe something. Reasoning is about how we go about the act of 
thinking using this knowledge. System based languages, like Java or C+, 
have classification systems, called Classes, to be able to describe 
things, in Java we calls these things beans or instances. However those 
classification systems are limited to ensure computational efficiency. 
Over the years researchers have developed increasingly sophisticated 
ways to represent our world, many of you may already have heard of OWL 
(Web Ontology Language). Although there is always a gap between what we 
can be theoretically represented and what can be used computationally in 
practically timely manner, which is why OWL has different sub languages 
from Lite to Full. It is not believed that any reasoning system can 
support OWL Full. Although Each year algorithmic advances try and narrow 
that gap and improve expressiveness available to reasoning engines.

There are also many approaches to how these systems go about thinking. 
You may have heard of discussions comparing the merits of forward 
chaining, which is reactive and data driven, or backward chaining, which 
is passive and query driven. Many other types of reasoning techniques 
exists, each of which enlarges the scope of the problems we can tackle 
declaratively. To list just a few: imperfect reasoning (fuzzy logic, 
certainty factors), defeasible logic, belief systems, temporal reasoning 
and correlation. Don't worry if some of those words look alien to you, 
they aren't needed to understand Drools and are just there to give an 
idea of the range of scope of research topics; which is actually far 
more extensive than this small list and continues to grow as researches 
push new boundaries.

KRR is often refereed as the core of Artificial Intelligence Even when 
using biological approaches like neural networks, which model the brain 
and are more about pattern recognition than thinking, they still build 
on KRR theory. My first endeavours with Drools were engineering 
oriented, as I had no formal training or understanding of KRR. Learning 
KRR has allowed me to get a much wider theoretical background. Allowing 
me to better understand both what I've done and where I'm going, as it 
underpins nearly all of the theoretical side to our Drools R&amp;amp;D. It 
really is a vast and fascinating subject that will pay dividends for 
those that take the time learn, I know it did and still does for me. 
Bracham and Levesque have written a seminal piece of work, called 
"Knowledge Representation and Reasoning" that for anyone wanting to 
build strong foundations is a must read. I would also recommend the 
Russel and Norvig book "Artificial Intelligence, a modern approach" 
which also covers KRR.


      *Rule Engines and Production Rule Systems*

We've now covered a brief history of AI and learnt that the core of AI 
is formed around KRR. We've shown than KRR is vast and fascinating 
subject which forms the bulk of the theory driving Drools R&amp;amp;D.
The rule engine is the computer program that delivers KRR functionality 
to the developer. At a high level it has three components:

  * Ontology
  * Rules
  * Data

As previous mentioned the ontology is the representation model we use 
for our "things". It could be a simple records or Java classes or full 
blown OWL based ontologies. The Rules do the reasoning and facilitate 
thinking. The distinction between rules and ontologies blurs a little 
with OWL based ontologies, who's richness is rule based.

The term rule engine is quite ambiguous in that it can be any system 
that uses rules, in any form, that can be applied to data to produce 
outcomes. This includes simple systems like form validation and dynamic 
expression engines. The book "How to Build a Business Rules Engine 
(2004)" by Malcolm Chisholm exemplifies this ambiguity. The book is 
actually about how to build and alter a database schema to hold 
validation rules. The book then shows how to generate VB code from those 
validation rules to validate data entry. Which while very valid, it is 
very different to what we talking about so far.

Drools started life as a specific type of rule engine called a 
production rule system (PRS) and was based around the Rete algorithm. 
The Rete algorithm, developed by Charles Forgey in 1979, forms the brain 
of a Production Rules System and is able to scale to a large number of 
rules and facts. A Production Rule is a two-part structure: the engine 
matches facts and data against Production Rules - also called 
Productions or just Rules - to infer conclusions which result in actions.

when
     &amp;lt;conditions&amp;gt;
then
     &amp;lt;actions&amp;gt;;

The process of matching the new or existing facts against Production 
Rules is called pattern matching, which is performed by the inference 
engine. Actions execute in response to changes in data, like a database 
trigger; we say this is a data driven approach to reasoning. The actions 
themselves can change data, which in turn could match against other 
rules causing them to fire; this is referred to asforward chaining

Drools implements and extends the Rete algorithm;. The Drools Rete 
implementation is called ReteOO, signifying that Drools has an enhanced 
and optimized implementation of the Rete algorithm for object oriented 
systems. Our more recent work goes well beyond Rete. Other Rete based 
engines also have marketing terms for their proprietary enhancements to 
Rete, like RetePlus and Rete III. Th e most common enhancements are 
covered in "Production Matching for Large Learning Systems (Rete/UL)" 
(1995) by Robert B. Doorenbos. Leaps used to be provided but was retired 
as it became unmaintained, the good news is our research is close to 
producing an algorithm that merges the benefits of Leaps with Rete.

The Rules are stored in the Production Memory and the facts that the 
Inference Engine matches against are kept in the Working Memory. Facts 
are asserted into the Working Memory where they may then be modified or 
retracted. A system with a large number of rules and facts may result in 
many rules being true for the same fact assertion; these rules are said 
to be in conflict. The Agenda manages the execution order of these 
conflicting rules using a Conflict Resolution strategy.
&amp;lt;http://3.bp.blogspot.com/-vWa8Xb6vQwM/T6nHhPwGfiI/AAAAAAAAAug/dqMpgCGhDqc/s1600/rule-engine-inkscape.png&amp;gt;


      *Hybrid Reasoning Systems*

You may have read discussions comparing the merits of forward chaining 
(reactive and data driven) or backward chaining(passive query). Here is 
a quick explanation of these two main types of reasoning.

Forward chaining is "data-driven" and thus reactionary, with facts being 
asserted into working memory, which results in one or more rules being 
concurrently true and scheduled for execution by the Agenda. In short, 
we start with a fact, it propagates and we end in a conclusion.
&amp;lt;http://2.bp.blogspot.com/-VpcT8CsFVvI/T6nHI4nXNZI/AAAAAAAAAuI/Z8ym04qHZ0c/s1600/Forward_Chaining.png&amp;gt;

Backward chaining is "goal-driven", meaning that we start with a 
conclusion which the engine tries to satisfy. If it can't it then 
searches for conclusions that it can satisfy; these are known as 
subgoals, that will help satisfy some unknown part of the current goal. 
It continues this process until either the initial conclusion is proven 
or there are no more subgoals. Prolog is an example of a Backward 
Chaining engine. Drools can also do backward chaining, which we refer to 
as derivation queries.
&amp;lt;http://1.bp.blogspot.com/-K4Cy7TxxFJQ/T6nHQh0iVSI/AAAAAAAAAuQ/jvDqKhrYIgc/s1600/Backward_Chaining.png&amp;gt;

Historically you would have to make a choice between systems like OPS5 
(forward) or Prolog (backward). Now many modern systems provide both 
types of reasoning capabilities. There are also many other types of 
reasoning techniques, each of which enlarges the scope of the problems 
we can tackle declaratively. To list just a few: imperfect reasoning 
(fuzzy logic, certainty factors), defeasible logic, belief systems, 
temporal reasoning and correlation. Modern systems are merging these 
capabilities, and others not listed, to create hybrid reasoning systems 
(HRS).

While Drools started out as a PRS, 5.x introduced Prolog style backward 
chaining reasoning as well as some functional programming styles. For 
this reason HRS is now the preferred term when referring to Drools, and 
what it is.

Drools current provides crisp reasoning, but imperfect reasoning is 
almost ready. Initially this will be imperfect reasoning with fuzzy 
logic, later we'll add support for other types of uncertainty. Work is 
also under way to bring OWL based ontological reasoning, which will 
integrate with our traits system. We also continue to improve our 
functional programming capabilities.

*Expert Systems*

You will often hear the terms expert systems used to refer to production 
rule systems or Prolog like systems. While this is normally acceptable, 
it's technically wrong as these are frameworks to build expert systems 
with, and not actually expert systems themselves. It becomes an expert 
system once there is an ontological model to represent the domain and 
there are facilities for knowledge acquisition and explanation.

Mycin is the most famous expert system, built during the 70s. It is 
still heavily covered in academic literature, such as the recommended 
book "Expert Systems" by Peter Jackson.
&amp;lt;http://1.bp.blogspot.com/-LJouA2Bc8ow/T6nG9Y18NoI/AAAAAAAAAuA/CbZIhdW-zko/s1600/expertsytem_history.png&amp;gt;


      *Recommended Reading*


        *General AI, KRR and Expert System Books*

For those wanting to get a strong theoretical background in KRR and 
expert systems, I'd strongly recommend the following books. "Artificial 
Intelligence: A Modern Approach" is must have, for anyone's bookshelf.

  * Introduction to Expert Systems
      o Peter Jackson

  * Expert Systems: Principles and Programming
      o Joseph C. Giarratano, Gary D. Riley

  * Knowledge Representation and Reasoning
      o Ronald J. Brachman, Hector J. Levesque

  * Artificial Intelligence : A Modern Approach.
      o Stuart Russell and Peter Norvig


&amp;lt;http://1.bp.blogspot.com/-MxwC6sGAonk/T6nGt3cUUmI/AAAAAAAAAtw/T2fooYHJLEM/s1600/book_recommendations.png&amp;gt;


        *Papers*

Here are some recommended papers that cover some interesting areas in 
rule engine research.

  * Production Matching for Large Learning Systems : Rete/UL (1993)
      o Robert B. Doorenbos
  * Advances In Rete Pattern Matching
      o Marshall Schor, Timothy P. Daly, Ho Soo Lee, Beth R. Tibbitts
        (AAAI 1986)
  * Collection-Oriented Match
      o Anurag Acharya and Milind Tambe (1993)
  * The Leaps Algorithm (1990)
      o Don Battery
  * Gator: An Optimized Discrimination Network for Active Database Rule
    Condition Testing (1993)
      o Eric Hanson , Mohammed S. Hasan


        *Drools Books*

There are currently three Drools books, all from Packt Publishing.

  * JBoss Drools Business Rules
      o Paul Brown
  * Drools JBoss Rules 5.0 Developers Guide
      o Michali Bali
  * Drools Developer's Cookbook
      o Lucas Amador


&amp;lt;http://2.bp.blogspot.com/-aXE48hRa38Y/T6nG0-4ASXI/AAAAAAAAAt4/qJL-BiWI6dg/s1600/drools_book_recommendations.png&amp;gt;

_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-05-09T01:52:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5697">
    <title>[rules-dev] api's, factories and services</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5697</link>
    <description>&lt;pre&gt;Just a reminder when doing api's

Stage interfaces in internal-api and make sure you do factories for 
them, almost never expose "new" constructors to users. We provide both 
static factories and a service registry, and we ideally should continue 
to support both. i.e. we have
KnowledgeBuilderFactory (static method factory, actually wraps below)
KnowledgeBuilderFactoryService (singleton service)

static example:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder()

singleton service  exmaple:
KnowledgeBuilderFactoryService kbuilderfs = 
ServiceRegistry.getInstance().get( KnowledgeBuilderFactoryService.class )
KnowledgeBuilder kbuilder = kbuilderfs .newKnowledgeBuilder()

All of our factory services should be registered in 
org.drools.util.ServiceRegistryImpl, this has delegation to say OSGi if 
it exists (via the service locator pattern). So we become much more 
friendly to OSGi or other container environments that are service 
locator oriented.

"new" should almost never be used, apart from when construcing say 
default or debug listener implementations.


Mark


_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-03-01T11:22:54</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5696">
    <title>[rules-dev] Help</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5696</link>
    <description>&lt;pre&gt;good morning,


can you help me to install drools  ( for windows)

thanks
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
&lt;/pre&gt;</description>
    <dc:creator>Olfa h</dc:creator>
    <dc:date>2012-02-04T09:28:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5695">
    <title>[rules-dev] Drools 5.4.0.Final and jBPM 5.3.0.Final are beingreleased</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5695</link>
    <description>&lt;pre&gt;Only blocker bugs can stop the release process. 
It is now too late to cherry pick bug fixes or documentation for the Final releases.

Toni Rikkola
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>Toni Rikkola</dc:creator>
    <dc:date>2012-05-09T07:11:14</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5693">
    <title>[rules-dev] Drools 5.4.0 final - documentation being completed</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5693</link>
    <description>&lt;pre&gt;
"Expert" section 5.9, Query, is badly in need of a review, as
currently can be seen on
http://docs.jboss.org/drools/release/5.4.0.CR1/drools-expert-docs/html_single/index.html

=*=
&amp;lt;p&amp;gt;Support for positional syntax ...

(1) It's not clear why a declare + &amp;lt; at &amp;gt;position is shown here, without
any explanation how this relates to a query.
(2) By default the the declared type  =&amp;gt; omit 2nd 'the'

=*=
Inheritence of classes is supported, but not interfaces of methods yet. =&amp;gt;
(3) Inheritance
(4) "...but not interfaces of methods yet."  ???

=*=
Positional and mixed positional/named type is supported.???

=*=
Literal expressions can passed as  =&amp;gt; can be passed

=*=
Here s an example =&amp;gt; Here is

=*=
you will not received =&amp;gt; not  receive

=*=
not an alternative instanceof Variable =&amp;gt; instance of
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>Wolfgang Laun</dc:creator>
    <dc:date>2012-05-08T09:38:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5691">
    <title>[rules-dev] Planner:  Unified selectors</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5691</link>
    <description>&lt;pre&gt;Hi guys,

In Planner, I am going to do some structural improvements on the selectors.
Below are some of the idea's on how to do that. All of these are ideas 
are still very volatile.
Feed-back is welcome, especially if you don't like a particular naming 
or semantic.


Global design objectives:
- 1) Make selectors and generic MoveFactories faster, scalable and use 
less memory: by optionally not generating all the moves
- 2) Make selectors and generic MoveFactories more configurable: filter 
on entities, variables, moveFilter, ...
- 3) Unify entity, variable and value selectors under the same system, 
to also make them faster, scalable, memory-efficient and more configurable

Let's focus on 1) MoveSelector only for now, on terminology and semantics.
What does a MoveSelector need to have?



Terminology of methods/attributes on MoveSelector. How would you name them?

    * Iterator&amp;lt;Move&amp;gt; moveIterator:
          o iterates over all the moves in the selector, based on the
            configuration of the MoveSelector
    * long moveSizeor size:
          o how many moves in this MoveSelector.
          o The MoveSelector interface probably doesn't need to expose this
    * boolean continuous:
          o Some value ranges, for example double x with (1.0 &amp;lt; x &amp;lt; 2.0)
            are continuous.
                + For example, a value can be 1.23435455444.
          o When true, then MoveSelector.size returns -1 or throws
            exception (because it is infinity really :)
          o Not all features will be able to combine with continuous true.
                + If it's not compatible, it fails-fast during
                  configuration.
    * boolean cacheableBetweenSteps
    * enum orderType:
          o The order in which the moveIterator generates Moves
          o DEFAULT (or FROM_SOLUTION?)
                + not cached
                      # The Moves are generated in real-time (at each
                        move scope)
                            * A1, A2, A3, ... A9, B1, B2, ... F9
                + 100% cached
                      # The Moves are generated in advance (at each step
                        scope) and iterated in generated order.
                            * A1, A2, A3, ... A9, B1, B2, ... F9
                + Not compatible with continuous == true
          o DECREASING_DIFFICULTY (experimental)
                + B1, B2, … B9, F1, F2, … F9, A1, A2 …, C9
                + This is really DEFAULT for the MoveSelector with
                  DECREASING_DIFFICULTY for the entitySelector and
                  DEFAULT/DECREASING_STRENGTH/... for the valueSelector
          o RANDOM_COMPLETE
                + The Moves are generated in advanced (at each step
                  scope) and shuffled, so iterated in random order.
                      # C2, B2, A7, E4, F3 ...
                + Not compatible with continuous == true
          o RANDOM_SCALABLE
                + The moves are generated in real-time (at each move
                  scope) randomly.
                      # C2, B2, A7, E4, C2 ...
                + Will sometimes generate the same Move twice, before
                  some other Move is generated once.
    * boolean hasFiniteMoveSize
          o Other names:
                + hasFiniteAmountOfMoves
                + knowsWhenAllMovesHaveBeenIterated
          o true if moveIterator.hasNext() will ever return false
          o It's false in the following cases:
                + orderType == RANDOM_SCALABLE
    * boolean roundRobinSelection
          o true if it should try to round robin selection between steps
          o If orderType == IN_ORDER
                + Suppose the moves are (A1, A2, A3, A4, A5)
                + if the first step stops after 3 move selections, it
                  gets [A1, A2, A3]
                + then the next step will get [A4, A5, A1, A2, A3].
                      # so if it stops after the 3 move selections, it
                        gets [A4, A5, A1]
                            * with roundRobinSelection == false it would
                              get [A1, A2, A3] again
          o If orderType == RANDOM_COMPLETE
                + This is a bit tricker - ignore for now
          o Not compatible with orderType == RANDOM_SCALABLE
          o Not compatible with continuous == true
    * long randomSelectionWeight
          o If this MoveSelector is put into a composition with another
            MoveSelector, how high is the chance that this MoveSelector
            is chosen?
          o See below on composition for more info.
          o Can default to 1 or can default to size.
                + Currently, Planner 5.4 implementation default it to 1.

MoveSelector composition: Local Search can only have 1 direct 
MoveSelector, but that one can be CompositeMoveSelector of other 
MoveSelectors. There are several forms of composition:

    * Summed composition: UNION:
          o If X(A1, A2, A3) and Y(B1, B2) are summed, we get (A1, A2,
            A3, B1, B2)
          o If this composition is called with RANDOM (complete or
            scalable), how high is the change that A1 will be selected?
                + if randomSelectionWeight = 1 for each, so on X = 1 and
                  Y = 1:
                      # (1/2) * (1/3) = 1/6 chance to select A1
                + if randomSelectionWeight = size for each, so on X = 3
                  and Y = 2:
                      # 1/(3 + 2) = 1/5 chance to select A1
                + Think about it: currently randomSelectionWeight = 1,
                      # so if you have 100 change moves and 1000 swap moves,
                      # then every change move has 10 times more chance
                        to be selected then a swap move
    * Multiplied composition: CARTESIAN_PRODUCT:
          o If X(A1, A2, A3) and Y(B1, B2) are multiplied, we get
            (A1-B1, A1-B2, A2-B1, A2-B2, A3-B1, A3-B2)
                + So you get composite moves: even though X and Y only
                  move 1 entity, the composite move moves 2 at the same time
                      # If multiplied composition is useful is yet to be
                        determined
          o If this composition is called with RANDOM (complete or
            scalable), how high is the change that A1-B1 will be selected?
                + Always (1/3) * (1/2) = 1/6 chance to select A1-B1
                + The randomSelectionWeight doesn't matter!
                            * if randomSelectionWeight = 1 , so on X = 1
                              and Y = 1:
                            * (1/3) * (1/2) = 1/6 chance to select A1-B1
                            * if randomSelectionWeight = size, so on X =
                              3 and Y = 2:
                            * (1/3) * (1/2) = 1/6 chance to select A1-B1

I hope this makes sense :) What do you think? Naming, semantics, usage, ...
MoveFilters, entity inclusion/exclusion, etc are for phase 2 (by much 
easier to do once this stuff in in place)

&lt;/pre&gt;</description>
    <dc:creator>Geoffrey De Smet</dc:creator>
    <dc:date>2012-05-07T07:12:26</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5690">
    <title>[rules-dev] Drools&amp;jBPM Drop in Centre at JBoss World</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5690</link>
    <description>&lt;pre&gt;http://blog.athico.com/2012/04/drools-drop-in-centre-at-jboss-world.html
------
Now you have another reason to come to JBoss World 
&amp;lt;http://www.redhat.com/summit/&amp;gt;, as if you didn't already have too many  
on your list :)

On Friday the 29th of June we'll have an all day drop in centre for 
Drools &amp;amp; jBPM. We'll be having an all day team meeting and codeathon 
which will be open to the public. You can come along and hang out with 
us for the whole day and code, or just drop in for a bit and we'll help 
you with your questions.

Best of all Edson will be handing out free hugs all day.

Mark
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-04-26T17:56:21</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5689">
    <title>[rules-dev] Drools Pong</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5689</link>
    <description>&lt;pre&gt;http://blog.athico.com/2012/04/drools-pong-hits-home.html
----- copied from blog ----
This weekend I just finished the first cut for the class game Pong. The 
Wumpus World example I made was well received and the 20 minute YouTube 
video very populate, http://www.youtube.com/watch?v=4CvjKqUOEzM. However 
I've since been asked for something a little simpler and smaller for a 
getting started example, so I thought I'd do Pong.

The initial cut was done with a single commit, so it's easy to see all 
the code in one place:
https://github.com/droolsjbpm/drools/commit/2a8746a905efe1d9e0cc9f00eae06a50b76b214b

I'll follow up with a video soon, showing how it was made.

&amp;lt;http://2.bp.blogspot.com/-Ug-XbdIXMcg/T5UDDnE-iUI/AAAAAAAAAsE/rBqQcKWruhA/s1600/pong.png&amp;gt;

_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-04-23T07:27:12</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5687">
    <title>[rules-dev] time behaviour, suggested changes</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5687</link>
    <description>&lt;pre&gt;Currenty timer initialisation is not defined very well and rules don't 
obey salience, which can make them harder to use.

Agenda interaction and scheduling:
1) Rule activations are added to the agenda like any other rule.
2) When the rule is popped from the agenda, instead executing the RHS 
the timir started is started.
3) Each time the timer is triggered the rule is added to the agenda and 
continues to obey salience. This time when the rule is popped from the 
agenda it executes the consequence.

Fact modification behaviour:
Modify on scheduled rules currently retriggers the initial delay, if 
that's 0 it can cause the rule to refire straight away, which I believe 
never wanted.
1) If the timer expression does not used any modified fields, it should 
not be re-scheduled.
2) Reschedule should be done for the repeat period only, we shoud not 
trigger another delay.
3) The first time it is scheduled after the period has changed it should 
subtract the amount for time difference left over from the last period.

For those that want timer rules to fire independant of the agenda, we 
will probably add an annotation to specify the rule is not to be handled 
via the agenda. This will give behaviour roughly to what we have now.

One reason why this change is important is with the upcoming algorithm 
change for lazy rete. We need to use the agenda and rule priorities to 
determine when to evaluate rules. Any rules not handled by the agenda 
will have to be left eager, so there are significant performance gains 
from this, as well as userbility gains from having timer rules that 
still obey salience.

Mark
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-04-18T05:04:56</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5686">
    <title>[rules-dev] Projects by convention and configuration and Mavenbuild plugin</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5686</link>
    <description>&lt;pre&gt;I've started to write up what a "project" would look like for Drools and 
jBPM. The idea is to move away from progammatic apis and have everything 
done via a maven plugin, using conventions and configurations to make it 
all work. Also we want to make sure this works well with tooling. We 
want to right click and execute projects, without use having to enter 
boiler plate code. Please consider it a work in progress, it's still 
rough in some places and RuleModule is still very sketchy.
https://community.jboss.org/wiki/DroolsProject

I use the term Bundle to refer to zipped up deployable Project

key aspects to note on compromises to simplify things:
-single root classloader per project (currently per knowledge base)
-each knowledgebase has it's own resource path folder, all files below 
that are for that specific knowledge base
-move functions and type declarations out to their own resource path 
folder. With the classloader scoped at the project level, no point in 
having these under the knowledge base path.

This is the sort of project anyone in the community can pick up and run 
with, you don't need a deep understanding of drools or rule engines. 
Just how to build a maven plugin, although there will be a small amount 
of fiddly work around the classloader change, but that shouldn't be too 
hard.
http://www.jboss.org/drools/irc

Mark
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-04-18T03:30:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5685">
    <title>[rules-dev] Needed help for helper class</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5685</link>
    <description>&lt;pre&gt;package com.rmn.eoodu.service.security.drools;

import com.rmn.eoodu.service.security.impl.UserLoginServiceImpl;
import com.rmn.eoodu.service.security.dos.UserLogin;
import com.rmn.eoodu.service.message.Messages;
import com.rmn.eoodu.service.message.Message;

global com.rmn.eoodu.service.message.Messages drlMessages;

import function com.rmn.eoodu.service.utils.DroolsUtils.validatePassword;
import function com.rmn.eoodu.service.utils.DroolsUtils.checkNullOrEmpty;
import function com.rmn.eoodu.service.utils.DroolsUtils.checkEquals;


rule "checkUserName"
activation-group  "validateUser"
lock-on-active true
salience 100
when
        UserLogin($user:userLogin)
        eval(checkNullOrEmpty($user)==true)
then
        
drlMessages.addErrorMessage("LoginForm_UserName","InvalidUserName","UserName
cannot be empty",5);
         System.out.println("Rule1: checkUserName ");
end

rule "checkingTheLengthOfName"
activation-group   "validateUser"
lock-on-active true
salience 99
when
    UserLogin($user:userLogin)
    eval ($user.length() &amp;lt; 3)
then
       
drlMessages.addErrorMessage("LoginForm_UserName","InvalidName","UserName
should not be less than 3 letters",3);
        System.out.println("Rule2:checkingTheLengthOfName ");
end

rule "isPasswordEmpty"
activation-group  "validatePwd"
lock-on-active true
salience 98
when
        UserLogin($pwd : password)
        eval(checkNullOrEmpty($pwd)==true)
then
       
drlMessages.addErrorMessage("LoginForm_Password","InvalidPassword","Password
should not be empty",5);
        System.out.println("Rule3: isPasswordEmpty");
end


rule "validatingLengthOfPwd"
activation-group  "validatePwd"
lock-on-active true
salience 97
when
        UserLogin($pwd : password)
        eval(validatePassword($pwd)==true)
then
       
drlMessages.addErrorMessage("LoginForm_Password","InvalidPassword","Please
check the length of the password once",4);
        System.out.println("Rule4: validatingLengthOfPwd");
end

rule "userNameandPasswordAreNotEqual"
activation-group   "validateForm"
//agenda-group  "validateTheForm"
lock-on-active true
salience 96
when
    UserLogin($user : userLogin , $pwd : password)
    eval((validatePassword($pwd)==false) &amp;amp;&amp;amp; (checkNullOrEmpty($pwd)==false))
    eval(checkEquals($user,$pwd)==true)
then
   drlMessages.addErrorMessage("LoginForm_UserName_Password","Invlid
UserName &amp;amp; Password","UserName and Password Cannot be Same",1);  
   System.out.println("Rule5: userNameandPasswordAreNotEqual");
end

Hai here i dont want to test like eval((validatePassword($pwd)==false) &amp;amp;&amp;amp;
(checkNullOrEmpty($pwd)==false)). I  need a helper class to test this. Can
any body help me in writing a helper class here for it. 

--
View this message in context: http://drools.46999.n3.nabble.com/Needed-help-for-helper-class-tp3917108p3917108.html
Sent from the Drools: Developer (committer) mailing list mailing list archive at Nabble.com.
_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>suryain4u</dc:creator>
    <dc:date>2012-04-17T12:34:54</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.java.drools.devel/5683">
    <title>[rules-dev] unit test names</title>
    <link>http://comments.gmane.org/gmane.comp.java.drools.devel/5683</link>
    <description>&lt;pre&gt;Please don't use the JIRA names as test method names, i.e.:

public final void testJBRULES3416() throws DroolsParserException, IOException {

Later on that means nothing. Give the method a real name and put the 
JIRA in a commit line.

Thanks

Mark

_______________________________________________
rules-dev mailing list
rules-dev&amp;lt; at &amp;gt;lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

&lt;/pre&gt;</description>
    <dc:creator>Mark Proctor</dc:creator>
    <dc:date>2012-04-12T17:05:44</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.java.drools.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.java.drools.devel</link>
  </textinput>
</rdf:RDF>

