drools-spring and drools-guice
by Mark Proctor
I'd like to add two sub projects to Drools to enable better spring and
guice support - especially now we have the RuleAgent. Any volunteers for
this? I'd like to try and standardise, as much as possible, how Drools
works and integrates with IoC containers.
Ultimiately the integration should be quite lightweight - mostly about
creating rulebases and working memory and probably the scoping and
caching of these. I guess you could also have some life cycle management
about objects themselves and auto assertion/retraction to named working
memories. We'd need to define a set of agreed annotations to define
these things, that would work across containers. I believe the JBoss MC
people have done some work in this area, I have cc'd to see if they have
any input or documentation pointers.
The core dev team don't have the time and aren't spring/guice
specialists - so anyone willing to take this up? If we can get
reasonable implementations we will add them to subversion (and the
authors commit rights), and make part of the next release - assuming
they are of good enough quality.
So any takers, maybe we could atleast start at defining what this level
of integration should look like?
Mark
16 years, 8 months
drools-core/repository in subversion
by Geoffrey De Smet
Someone checked in drools-core/repository on the trunk,
which is a simple mistake to make, because:
- it's not ignored (I)
- it's not suppose to be added (A)
So svn doesn't know what to do with it (?) and ask every time.
I don't understand why these maps need to be created in the first place:
drools-core/repository
drools-solver/repository
drools-solver/drools-solver-core/repository
It's a BRMS thing, but I am pretty sure drools solver doesn't need that
map :) Can't it be moved under target so it doesn't bother us anymore?
Thanks :)
--
With kind regards,
Geoffrey De Smet
16 years, 10 months
VORTE 2007 Follow-up: Journal special issue
by nicolae oana
Call for Papers
Journal: Information Systems
Special Issue on "Vocabularies, Ontologies and Rules for Enterprise and Business Process Modeling and Management"
Vocabularies, ontologies, and business rules are key components of a model-driven approach to enterprise computing in a networked economy. Enterprise vocabularies, ontologies, and business rules do not exist in isolation but serve to support business processes. While many have recognized the importance of vocabularies, ontologies, and business rules in business process modeling and management, there are many open research challenges to be addressed. These challenges can be approached from different perspectives. Fundamental research explores ontological foundations and languages and methods for enterprise and business process modeling. It also covers ontological evaluation of enterprise systems and their interoperability, and ontological analysis of business process modeling. Applied research looks into enhancing business rule engines and business process management systems by ontologies. Business process modeling research aims to define how process modeling
and execution languages, such as Business Process Modeling Notation and Business Process Execution Language, relate to business ontologies and rules. Enterprise integration and collaboration research addresses ontology-based service description technologies for inter-enterprise collaboration. This special issue solicits papers focussed on the described research areas. The topics to be covered by submissions include but are not limited to the following:
o Conceptual modeling
o Ontological foundations for enterprise and business process modeling
o Languages and methods for business vocabularies, terminologies, and taxonomies
o Modeling of enterprise information integration and interoperability o Languages for conceptual modeling (for example, OWL and UML) o Agent-oriented conceptual modeling
o Business rule and business process modeling
o Analysis of and experiences with OMG's Semantics of Business Vocabularies and Rules (SBVR)
o Rule modeling and rule markup
o Rule-based approaches to Web service policies and choreographies
o Agent-based business rule and process management
o Integrating business rules with business process modeling and execution languages (for example, BPMN and BPML)
o Ontologies for enterprise systems
o Ontological approaches to content and knowledge management
o Ontologies for e-business registries/repositories
o Web service ontologies
o Ontological evaluation of enterprise systems
o Ontology-based enterprise architectures
o Ontology-based software engineering for enterprise solutions
o Model-driven engineering approaches in enterprise systems
o Modeling and architecture frameworks
o Domain engineering
o Domain-specific business information and system engineering
o Model transformations in enterprise and business process modeling
Important Dates
Submission Deadline May 1st, 2008
Reviews Completed: September 1st, 2008
Major Revisions Due: October 15th, 2008
Re-reviews Completed: December 1st, 2008
Final recommendations: January 1st, 2009
Final Manuscripts Due: February 1st, 2009
Publication Date: TBD (2009)
Guest editors
Dragan Gasevic, Athabasca University, Canada
Giancarlo Guizzardi, Federal University of EspÃrito Santo (UFES), Brazil
Kuldar Taveter, University of Melbourne, Australia
Gerd Wagner, Brandenburg University of Technology at Cottbus, Germany
Submission Guidelines
All manuscripts should be compliant with the submission guidelines and policies of the Information Systems journal (http://www.elsevier.com/locate/infosys). All manuscripts will be subject to the high standards of peer review. All the papers must be submitted via the online submission system at http://ees.elsevier.com/is (by selecting "SI Business Proc. Modelling" during the submission process).
---------------------------------
Looking for last minute shopping deals? Find them fast with Yahoo! Search.
16 years, 11 months
2nd East European Workshop on Rule-Based Applications - RuleApps'2008
by nicolae oana
[We apologize in advance if you receive multiple copies of this CFP]
2nd East European Workshop on Rule-Based Applications - RuleApps'2008
---------------------------------------------------------------------
July 21-22, 2008, Patras, Greece
http://oxygen.informatik.tu-cottbus.de/RuleApp2008/
Workshop within the ECAI 2008 conference
http://www.ece.upatras.gr/ecai2008/
Paper submission:
http://www.easychair.org/conferences/?conf=ruleapp2008
Topics
---------------
Rules are becoming increasingly important in business modeling and requirements engineering, and as a high level programming paradigm especially in the engineering of e-business applications and of the Semantic Web applications. Rules are used in applications to model and manage specific parts of the application business logic. They are best used in applications with a dynamic business logic i.e. applications where changes in the business logic are frequently and they need to be immediately reflected in the application behavior. This workshop seeks contributions that address theoretic foundations, practical techniques, empirical studies, experience, and lessons learned related, but not limited, to the following topics: - Artificial Intelligence Rules and Rule Systems
- Web Rules and Semantic Web Rules
- Best Practices in Business Rules
- Rules Modeling (including Production Rules and ECA Rules)
- Combining rules and ontologies
- Languages for rule interchange
- Rule base Visualization, Verbalization, Validation, Verification and Exception Handling.
- Rule Engines Architectures
- Rules in Web 2.0 Applications
- Rule-based modeling of mechanisms, policies, strategies and contracts.
- Rules and Web Services Integration
- Implemented tools and systems
Important dates
---------------
Papers submission: April 10, 2008
Notification of acceptance: May 10, 2008
Final submission: May 26, 2008
Workshop date: July 21-22, 2008
Submission Requirements
-----------------------
RuleApps2008 looks for three categories of submissions: regular papers, poster submissions and applications.
- The submission web site is http://www.easychair.org/conferences/?conf=ruleapp2008.
- Authors have to use the ECAI'2008 style to prepare their submissions. A description of the style is available
- Regular papers submissions must not exceed 5 pages. The same style has to be used for poster submissions which cannot exceed 2 pages.
- Applications have to be described in a 2 pages short paper (part of the proceedings too). They must be available for demo either in a download or online form during the review process.
Publication
-----------
- Each workshop participant will receive a hardcopy of the proceedings of the workshop (s)he participates, as well as a CD with the proceedings of all ECAI'08 workshops. The workshops CD will be produced by ECAI2008 and will be separate from the CD with the proceedings of the main conference.
- Workshop authors will have to sign a permission allowing the local organizers to include their paper in the workshop's proceedings.
- Additionally the accepted papers will be published as
CEUR-WS( http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/ )
The copyright for the individual items (subsuming any type of computer-represented files containing articles, software demos, videos, etc.) within a proceedings volume is owned by default by their respective authors. Copying of items, in particular papers, and proceedings volumes is permitted only for private and academic purposes. Copying or use for commercial purposes is forbidden unless an explicit permission is acquired from the copyright owners (i.e. authors).
- Extended versions of the best technical papers of the workshop will be invited to
Handbook of Research on Emerging Rule-Based Languages and Technologies ( http://oxygen.informatik.tu-cottbus.de/handbook/ )
Workshop Co-Chairs
------------------
Anastasia Analyti, Foundation for Research and Technology - Hellas, Greece
Adrian Giurca, Brandenburg University of Technology, Germany
Gerd Wagner, Brandenburg University of Technology, Germany
Program Committee
-----------------
Anastasia Analyti, FORTH, Greece
Grigoris Antoniou, FORTH, Greece
Costin Badica, University of Craiova, Romania
Nick Bassiliades, Aristotle University of Thessaloniki, Greece
Phillipe Bonnard, ILOG, France
Carlos Viegas Damasio, Universidade de Nova Lisboa, Portugal
Vladan Devedzic, University of Belgrade, Serbia
Jens Dietrich, Massey University, New Zealand
Dragan Gasevic, Athabasca University, Canada
Adrian Giurca, Brandenburg University of Technology, Germany
Antoni Ligeza, AGH University of Science and Technology, Poland
Grzegorz J. Nalepa, AGH University of Science and Technology, Poland
Viorel Negru, West University of Timisoara, Romania
Paula Lavinia Patranjan, Ludwig-Maximilians University, Muenchen, Germany
Mark Proctor, JBoss Rules, Redhat
Dave Reynolds, Hewlett-Packard Semantic Web Research, England
Silvie Spreeuwenberg, LibRT, Amsterdam, Netherlands
Kuldar Taveter, University of Melbourne, Australia
Laurentiu Alexandru Vasiliu, DERI Galway, Ireland
Sanja Vranes, Mihailo Pupin Institute, Belgrade, Serbia
Gerd Wagner, Brandenburg University of Technology, Germany
---------------------------------
Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now.
16 years, 11 months
RE: Potential multi thread error and "smal" memory leak
by Galante, Yves
Hi all,
for help you to understand the problem, I have make a small TestCase.
This memory leak is not "infinity", the maximum size of this memory leak is "~ size(WorkingMemory + Facts) x number rules on the rules base".
Yves
<<MemoryLeakTest.zip>>
> -----Message d'origine-----
> De : Galante, Yves
> Objet : Potential multi thread error and "smal" memory leak
>
> Hi,
>
> Class VariableContextEntry and ReturnValueContextEntry are
> instantiated
> when Package.addRule called.
> This class are linked from "Package rules".
>
> "Package => ... => VariableContextEntry
>
> But class have a reference to the InternalWorkingMemory !
>
> "Package => ... => VariableContextEntry => Workingmemory"
>
> When this pseudo code is executed, at the end of the execution,
> WorkingMemory need to be garbage collected, but it isn't
> because she is
> referenced by ReturnValueContextEntry and/or
> VariableContextEntry, and
> this class keeps an reference to the WorkingMemory.
>
> I think this can be generate some error in multi thread and make an
> "smal" memory leak.
>
> It is right ?
> The membre workingMemory can't be removed from
> VariableContextEntry/ReturnValueContextEntry ?
> ____________________
>
> pseudo code (source : ReteooMannersTest) :
>
> final Package ruleBase = new Package( "org.drools.examples.manners" );
> ruleBase.addRule( getAssignFirstSeatRule() );
> ...
> SatefulSession session = ruleBase.newStatefulSession(false);
> session.insert(new Count(1));
> session.fireAllRules();
> session.dispose();
> session = null;
> System.gc();
>
> After GC, workingMemory (session) need to be finally but she isn't
> because VariableContextEntry/ReturnValueContextEntry keep a
> reference at
> the workingMemory.
>
> Thanks for your response
>
> Yves
>
>
16 years, 11 months
Potential multi thread error and "smal" memory leak
by Yves Galante
Hi,
Class VariableContextEntry and ReturnValueContextEntry are instantiated
when Package.addRule called.
This class are linked from "Package rules".
"Package => ... => VariableContextEntry
But class have a reference to the InternalWorkingMemory !
"Package => ... => VariableContextEntry => Workingmemory"
When this pseudo code is executed, at the end of the execution,
WorkingMemory need to be garbage collected, but it isn't because she is
referenced by ReturnValueContextEntry and/or VariableContextEntry, and
this class keeps an reference to the WorkingMemory.
I think this can be generate some error in multi thread and make an
"smal" memory leak.
It is right ?
The membre workingMemory can't be removed from
VariableContextEntry/ReturnValueContextEntry ?
____________________
pseudo code (source : ReteooMannersTest) :
final Package ruleBase = new Package( "org.drools.examples.manners" );
ruleBase.addRule( getAssignFirstSeatRule() );
...
SatefulSession session = ruleBase.newStatefulSession(false);
session.insert(new Count(1));
session.fireAllRules();
session.dispose();
session = null;
System.gc();
After GC, workingMemory (session) need to be finally but she isn't
because VariableContextEntry/ReturnValueContextEntry keep a reference at
the workingMemory.
Thanks for your response
Yves
16 years, 11 months
Concurrent Behavior of Firing Rules and Queries
by Fenderbosch, Eric
I asked some of these questions in IRC and tirelli asked me to post here
in the dev list.
We are hoping that drools will have this functionality sometime in the
future. Our target production date is May. These questions are related
to the Job/Workers problem that Steve Shabino has discussed with the dev
team before.
Start w/ steady state. Facts loaded and rules fired. We have truth as
of time1.
Thread 1 asserts new/updated facts and calls fireAllRules. fireAllRules
takes about 20 seconds to run.
Thread 2 calls getQueryResults before fireAllRules completes. The
returned QueryResults should be correct and consistent with truth as of
time1. Call to getQueryResults should NOT block until fireAllRules
completes.
Thread 1 call to fireAllRules finishes. We now have truth as of time2.
<tirelli> just as a quick comment: from our perspective, the support to
concurrent query calls would return a consistent state, but not exactly
what you called truth at time1
<tirelli> since the engine would be firing rules all the time
We do have a workaround if our desired behavior isn't "correct." The
queries we'll need to run are well defined and a relatively small
number. Speaking in the Job/Worker realm, we'll need to query for the
TopWorkers for all Jobs. We could keep a map of Job to TopWorkers and
update the map every time fireAllRules completes and service all
TopWorker by Job queries from this cache.
Maybe the bigger question, but maybe not appropriate for the dev list,
is our concern about query results possibly changing while fireAllRules
runs valid? Our concern is that we could get different results
depending on when we perform the query. For example, if we query for
TopWorkers for a Job against "truth @ time1" and "truth @ time2" our
results should be well defined. However if we perform the same query
while fireAllRules is running we might get results that are different
from both those other results. Is this a valid concern?
Thanks for your time.
Eric
16 years, 11 months
[Fwd: Drools Spring] feedback please
by Mark Proctor
-------- Original Message --------
You can declare the transaction beans as follows:
<bean id="droolsTransactionManager"
class="org.drools.spring.core.DroolsTransactionManager">
<property name="workingMemory" ref="workingMemory"/>
</bean>
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionManager" ref="droolsTransactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="newStatefullSession*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
The last one is only a proxy for the transaction, to declare the pointcuts.
I think the classes for aspects in Ales implementation can be
implemented this way for spring, if not it will be needed to look at :
http://static.springframework.org/spring/docs/2.5.x/reference/aop.html
but I need time for that.
The DroolsTransactionManager is for standalone use.
It was added rule base configuration support for the bean factory of
Geoffrey as well to set the type.
Here are information about getting Resources like URL, input stream, file...
http://static.springframework.org/spring/docs/2.5.x/reference/resources.html
16 years, 11 months
Sightings - Drools needs your help
by Mark Proctor
I want to revive the old Drools 2.x testimoney page, I'm hoping that
two years on and with a vastly bigger community we can get a lot more
references this time :)
There are two types of references. The official one which is handled via
our marketting department and involves formal agreements between RedHat
and the client - for obvious reasons these are time consuming to do and
hard to get people to agree too. The other side is simply a page that
has anything from a simple list of "users" or "integrators" listing
company names, to optional inclusions of logos and even small summary
sentences or large case studies - nothing is too small or too big :)
So this is what I have so far:
http://labs.jboss.com/drools/sightings.html
We can't do this without you and it really is important for helping the
adoption and growth of the software, lack of known users is often a
blocker for large corporation adoption. So please if you can help, speak
to your manager, and email me letting us know.
Mark
16 years, 11 months
Failure updating working memory - trying to convert a String to a long
by Warren, David [USA]
I am trying to get a project that runs in Drools 3 working on Drools 4.
Several of the rules in our DRL file are failing for the same reason,
which is described below. I have searched for documentation where
someone encountered this error, but have found none, which is why I am
writing the list.
Here is a sample rule that fails:
rule 'X'
salience 750
when
s : Sensor( source == "Not in File" , TCN matches "CRM[0-9]+MXFS[0-9]+"
)
then
System.out.println("Rule executed: X " );
s.setSource("X");
System.out.println( "in rule location 2");
update(s);
System.out.println( "in rule location 3");
end
The rule fails when the "update(s);" statement is executed, with the
error that a String cannot be converted to a long (stack trace is
below). The Sensor class has several variables. The last getter method
called before the failure returns a long. The source variable (which is
set in the RHS of the rule) is a String , and the for source is the 2nd
to last getter called.
Does anyone have an idea why this update statement would fail - why it
would be trying to convert a String to a long?
Thank you,
David Warren
Stack trace:
org.drools.RuntimeDroolsException: Conversion to long not supported from
java.lang.String
at
org.drools.base.extractors.BaseObjectClassFieldExtractor.getLongValue(Ba
seObjectClassFieldExtractor.java:106)
at
org.drools.base.ClassFieldExtractor.getLongValue(ClassFieldExtractor.jav
a:203)
at
org.drools.rule.VariableRestriction$LongVariableContextEntry.updateFromT
uple(VariableRestriction.java:284)
at
org.drools.common.SingleBetaConstraints.updateFromTuple(SingleBetaConstr
aints.java:100)
at org.drools.reteoo.JoinNode.assertTuple(JoinNode.java:102)
at
org.drools.reteoo.CompositeTupleSinkAdapter.createAndPropagateAssertTupl
e(CompositeTupleSinkAdapter.java:73)
at
org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode
.java:116)
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(Compo
siteObjectSinkAdapter.java:318)
at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:140)
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(Compo
siteObjectSinkAdapter.java:299)
at
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)
at org.drools.reteoo.Rete.assertObject(Rete.java:175)
at
org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)
at
org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:
71)
at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.jav
a:909)
at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.jav
a:881)
at
org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.jav
a:67)
at
org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.jav
a:61)
at com.bah.aims.rules.Rule_X_0.consequence(Rule_X_0.java:32)
at
com.bah.aims.rules.Rule_X_0ConsequenceInvoker.evaluate(Rule_X_0Consequen
ceInvoker.java:22)
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:514)
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemo
ry.java:471)
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemo
ry.java:433)
at
com.bah.aims.rules.compiler.SensorPairRulesTest.testNotInFileIqcrm(Senso
rPairRulesTest.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
...
16 years, 11 months