Parallelization
by djb
Hi Drools squad,
This is a follow-up to my previous speed-related post. By boss is still
pushing to get 35ms down a bit, and I'm looking at parallelization options.
I've looked through the forums, but not successfully...
The options I see, are:
1. KnowledgeBase partitioning (setting KnowledgeBaseConfiguration to use
multi-threads)
- I tried this, and got the error pasted at the bottom. My suspicion is
that it starts a thread, and meanwhile the Java thread continues, and
disposes of the session before evaluation is complete.
2. Creating multiple Java threads, each of which starts its own
KnowledgeSession.
- I started this, but need to confirm that this is possible. What's
happening currently, is that the Java thread continues, and closes my
database connection prematurely, and so, I am working on adding some sort of
counting-semaphore, to wait for all the threads to complete before
continuing the Java thread.
Should I pursue either of these ideas? I will probably work on the second
today. The other idea I had was to try Sequential Mode, but I don't think
my data is applicable to a StatelessKnowledgeSession.
Thanks,
Daniel
***************************
Partition task manager caught an unexpected exception: null
Drools is capturing the exception to avoid thread death. Please report stack
trace to development team.
java.util.concurrent.RejectedExecutionException
at
java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1760)
at
java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
at
java.util.concurrent.ThreadPoolExecutor.ensureQueuedTaskHandled(ThreadPoolExecutor.java:758)
at
java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:655)
at
org.drools.reteoo.PartitionTaskManager.enqueue(PartitionTaskManager.java:75)
at
org.drools.reteoo.AsyncCompositeObjectSinkAdapter.doPropagateAssertObject(AsyncCompositeObjectSinkAdapter.java:49)
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:344)
at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:147)
at
org.drools.reteoo.PartitionTaskManager$FactAssertAction.execute(PartitionTaskManager.java:188)
at
org.drools.reteoo.PartitionTaskManager$PartitionTask.run(PartitionTaskManager.java:112)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Parallelization-tp809...
Sent from the Drools - User mailing list archive at Nabble.com.
14 years, 6 months
WG: 4th International Workshop on Event-Driven Business Process Management
by Adrian Paschke
[ our apologies should you receive this message more than one time ]
4th International Workshop on Event-Driven Business Process Management
collocated with BPM 2010
Hoboken, NJ, USA from September 13-16, 2010
http://www.bpm2010.org/conference-events/workshops/edbpm10/
Introduction
--------------------------
The recently coined term «Event-Driven Business Process Management» (EDBPM)
is nowadays an enhancement of BPM by new concepts of Service Oriented
Architecture (SOA), Event Driven Architecture (EDA), Software as a Service
(SaaS), Business Activity Monitoring (BAM) and Complex Event Processing
(CEP). In this context BPM means a software platform which provides
companies the ability to model, manage, and optimize these processes for
significant gain. As an independent system, CEP is a parallel running
platform that analyses and processes events. The BPM- and the CEP-platform
correspond via events which are produced by the BPM-workflow engine and by
the if distributed - IT services which are associated with the business
process steps. Also events coming from different event sources in different
forms can trigger a business process or influence the execution of a process
or a service, which can result in another event. Even more, the correlation
of these events in a particular context can be treated as a complex,
business level event, relevant for the execution of other business processes
or services. A business process arbitrarily fine or coarse grained can
be seen as a service again and can be choreographed with other business
processes or services, even between different enterprises and organizations.
Loosely coupled event-driven architecture for BPM provides significant
benefits:
* Responsiveness. Events can occur at any time from any source and
processes respond to them immediately, whenever they happen and wherever
they happen.
* Agility. New processes can be modeled, implemented, deployed, and
optimized more quickly in response to changing business requirements.
* Flexibility. Processes can span heterogeneous platforms and
programming languages. Participating applications can be upgraded or changed
without breaking the process model.
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
Workshop Format
--------------------------
The Workshop is planned as a full-day event, including a keynote, paper
presentations, lightning talks, demos, posters, and a moderated, open
discussion with the clear goal of agreeing upon a research roadmap for
event-driven Business Process Management research, by taking into account
new challenges, described earlier.
A possible agenda:
* 9:00 9:30 Opening and Keynote
* 9:30 13:00 Paper Presentations
* 13:00 14:00 Lunch
* 14:00 15:00 Lightning Talks
* 15:30 17:00 Moderated Community Discussion: A Roadmap for
Event-driven Business Process Management Research
* 18:00 21:00 Poster and Demo Presentations and Get-Together
For the keynote, we aim at a high-profile speaker, who will give a rather
visionary view on the role of Future Internet for BPM and vice versa. For
the moderated community discussion, we will have senior experts from our
Program Committee and Experts from an industrial background. A clear
objective of that discussion is to yield a first draft of a respective
research agenda.
Important Dates
--------------------------
Deadline paper submissions: 21 May 2010
Notification of acceptance: 30 June 2010
Camera-ready papers: 25 July 2010
Workshops: 13 September 2010
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-7-487211-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).
For submission, please visit
http://www.easychair.org/conferences/?conf=edbpm10.
Organizing Committee
--------------------------
Nenad Stojanovic
FZI Research Center for Information Technologies at the University of
Karlsruhe, Germany.
Haid-und-Neu-Str. 10-14
D-76131 Karlsruhe, Germany
nstojano (at) fzi.de
URI: http://www.fzi.de/ipe/mitarbeiter.php?id=483
Opher Etzion
IBM Research Lab in Haifa
OPHER (at) il.ibm.com
Adrian Paschke
Corporate Semantic Web, Free University Berlin, Germany and RuleML Inc.,
Canada
AG-CSW (Corporate Semantic Web)
Institute for Computer Sciences
Free University Berlin
Königin-Luise-Str 24/26
14195 Berlin, Germany
paschke (at) inf-fu-berlin.de
Program Committee
--------------------------
(see Website)
14 years, 6 months
CHR 2010: Call for Participation
by Leslie DE KONINCK
CALL FOR PARTICIPATION
CHR 2010
7th International Workshop on Constraint Handling Rules
associated with ICLP 2010 (part of FLoC 2010)
Edinburgh, Scotland, 20 July 2010
http://dtai.cs.kuleuven.be/CHR/CHR2010/
HIGHLIGHTS
* newcomers' welcome to CHR tutorial by Thom Frühwirth
* invited talk on the JBoss Drools business rules platform by Mark Proctor
* invited talk by Matt Lilley of SecuritEase, a leading stock broking system
* tutorial on CHRiSM, a CHR-based probabilistic formalism, by Jon Sneyers
* presentation of the six accepted papers + two demos
INTRODUCTION
The Constraint Handling Rules (CHR) language has become a major declarative
specification formalism and implementation language for constraint reasoning
algorithms and applications. Algorithms are often specified using inference
rules, rewrite rules, sequents, proof rules, or logical axioms that can be
directly written in CHR. Its clean semantics facilitates program design,
analysis, and transformation. See the CHR website for more information:
http://dtai.cs.kuleuven.be/CHR/
PROGRAM
The CHR 2010 workshop offers a very attractive and varied program. Next to our
accepted technical papers, we have two invited speakers: Mark Proctor from the
JBoss Drools project, a major open-source business rule platform, and Matt
Lilley from SecuritEase, a leading stock broking dealing and settlement system,
and one of the most prominent industry users of Prolog and CHR.
Other highlights are the first practical confluence checker for CHR, and
several application-oriented presentations, including two demos by students
from the University of Ulm on using CHR with a multi-touch interface: one for
automated music generation, and one aimed at providing long-term routing for
fully autonomous sailing boats (in cooperation with the Roboat project).
Because many FLoC attendants will be new to CHR, we included two additional
introductionary presentations: Thom Frühwirth will give a broad tutorial on CHR
in general, and Jon Sneyers will introduce the recent CHR-based probabilistic
formalism CHRiSM (also presented at the main ICLP conference).
The full workshop's program is available at:
http://dtai.cs.kuleuven.be/CHR/CHR2010/programme.shtml
REGISTRATION
Registration for the workshop can be done online at:
http://www.floc-conference.org/registration.html
Early registration ends 17 May.
ORGANIZATION
Program Committee:
* Sebastian Brand, NICTA and University of Melbourne, Australia
* Henning Christiansen, Roskilde University, Denmark
* Verónica Dahl, Simon Fraser University, Canada
* Leslie De Koninck, NICTA and University of Melbourne, Australia (co-chair)
* Thom Frühwirth, Ulm University, Germany
* Marco Gavanelli, University of Ferrara, Italy
* Rémy Haemmerlé, Universidad Politécnica de Madrid, Spain
* Maria-Chiara Meo, "Gabriele d'Annunzio" University, Italy
* Paolo Pilozzi, K.U.Leuven, Belgium
* Frank Raiser, Ulm University, Germany
* Peter Van Weert, K.U.Leuven, Belgium (co-chair)
* Jairson Vitorino, Federal University of Pernambuco, Brazil
* Armin Wolf, Fraunhofer FIRST, Germany
Workshop Coordinators:
Contact: chr2010(a)easychair.org
Peter Van Weert
Department of Computer Science, K.U.Leuven
Leuven, Belgium
http://people.cs.kuleuven.be/~peter.vanweert/
Leslie De Koninck
National ICT Australia, Victoria Research Laboratory
Dept of Computer Science and Software Engineering, University of Melbourne
Melbourne, Australia
14 years, 6 months
Rules packaging and (binary?) reuse: searching for best practices
by Ansgar Konermann
Hi all,
I'm in search of a better way to package rules into a binary format
before they get deployed - one that eases rules reuse more than the
technique currently in use at my employer.
We're using drools expert to perform risk assessment and feasibility
checks for mortgage loans of a significant number of different lenders
(say, we have N lenders). Each lender has its own set of rules, but
large parts of these rulesets are quite similar (e. g. compliance with
customer protection laws). Of course we don't want to maintain N
complete rulesets, because this would mean each bug in the common rules
has to be done N times. We're already doing refactoring towards reusable
subsets of these rules, however we feel as if we were running into some
limitations of the drools compiler and/or our packaging.
Regarding the skills of our team: we're all at least senior java
developers with a fad for cool java technology. No need to enable
busines analysts to write rules here.
What we tried so far:
1) binary reuse: put related subsets of rules into their own pkg file
(say: common.drl into common.pkg, plus for each lender-<N>.drl into
lender-<N>.pkg) and load both the (one) common package and one
lender-specific rule package into the rulebase at runtime. This leads to
problems when using declared fact types. Imagine each lender computes
the value of all the pledged securities a little different, but it is a
common rule that the loan amount must not exceed 100% of this value. So
we declare 'SecuritiesSum' in a separate file, but compile it into both
drl files. The lender-specific rules can compute the value, add a fact
of this type to the working memory and the common ruleset can issue a
"maximum loan sum exceeded" message if the threshold is exceeded. Sounds
nice, but did not work out for us: both rule packages contain their
*own* compiled bean class for the 'SecuritiesSum' declared fact, each
managed by a different classloader. So, we *cannot* pass parameters
between rulesets using declares.
2) source code reuse: "simply" put all the source files that are
required to form a complete ruleset for each lender into a fileset and
compile this fileset into a pkg file. There are several problems with this:
a) the ruleset is large and takes in the order of minutes to compile,
even if you change only a single rule file. We really hate long
turnaround times, this magnitude is not acceptable for us.
b) dealing with the large number of rule files and managing them (which
file belongs to which ruleset) becomes too complex. In reality, the
ruleset for lender N contains not two files, but in the order of a few
hundred. We're lacking a level of abstraction to group rules which
relate to each other from a business point of view (e. g. 'securities
assessment', 'consumer loan history checks', 'sum of yearly
obligations'). Our hope was to achieve this with binary reuse (see above
for why we failed).
Questions:
* can anyone of you report any best practices which have proven useful
in an environment like this?
* are there any plans to support maven as the primary build tool for
rule artifacts? is maven the right tool to package rules?
* does Guvnor have a silver bullet solution for our packaging problem?
Could we improve the situation by switching to Guvnor?
I'd be very glad if some of you could give some advice how to do better...
Thanks in advance, best regards
Ansgar
14 years, 6 months
Questions about using Knowledge Agent
by John Peterson
Hi all,
I'm trying to get the sample code in the Drools 5.0.1 User Manual to
work locally for a Knowledge Agent, but I'm missing some info (from my
perspective) to get it to run.
Question #1:
>From the User Manual (3.2.6):
KnowledgeAgent kagent =
KnowledgeAgentFactory.newKnowledgeAgent( "MyAgent" );
kagent.applyChangeSet( ResourceFactory.newUrlResource( url ) );
KnowledgeBase kbase = kagent.getKnowledgeBase();
In the third line, what is "url" and how is it defined in the java code?
I don't know what to set up here to make it work. I've found this same
code on multiple sites, but no answer to the question.
Question #2:
How do I set up a Change Set XML file? I see the XML, but I don't know
where to put the file and how to link it into the code.
Question #3:
Does KnowledgeAgent replace RuleAgent for invoking Guvnor-deployed
packages in 5.0.1? If so, how do you specify the url of the deployed
package from Guvnor?
Sorry if my questions are ignorant. I've been trying to find these
answers for several days and hit the point where I needed to get some
help.
Thanks,
John
14 years, 6 months
Rule salience vs salience of ruleflow executions?
by H.C.
I have some maintenance/event rules in an auto-focus agenda group with a very
high salience. These rules are supposed to kick in ASAP whenever their
conditions become true. I have made sure their salience is the highest of
all rules in our repository and they are not attributed to any
ruleflow-group.
I am troubleshooting a case where it seems that the executions of ruleflow
splits/groups take precedence over the execution of my agenda group rules.
Is this correct behavior?
If so, is there a way to set a salience higher than the execution of the
ruleflow so that I can be sure all pertinent maintenance rules fire before
the flow continues?
Thanks
--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Rule-salience-vs-sali...
Sent from the Drools - User mailing list archive at Nabble.com.
14 years, 6 months
Any news on Drools 5.1
by Chuck Irvine
I am planning on diving into a Drools based workflow related project pretty
soon and have kind of been waiting for 5.1 to come out (or maybe the next
milestone release). Any news on 5.1 availability? Thanks -Chuck
14 years, 6 months
Apache commons sandbox dependencies
by Dale Wyttenbach
Hi,
I grabbed drools build 3895 and am trying to work it into our local
environment.
I see that drools-workitems has a dependency on an unreleased Apache project
(commons-finder)
which in turn has a dependency on another unreleased Apache project
(commons-cli 2.x)
The commons-finder dependency looks like it is limited to a single class
named FinderWorkItemHandler.
If it becomes necessary to roll our own version of drools that doesn't
depend on commons-finder,
can we safely prune FinderWorkItemHandler and not have any ill effects?
Thanks.
14 years, 6 months
how to create a list obj for a rule using 'memberOf'
by eyal edri
Hi,
sorry for the newbi question, i'm just starting to find my way in Drools.
i want to write a rule that filters URLs with a certain suffix (e.g. jpg,
gif, css, etc...).
i read about global vars and other variables and i'm not sure what to do.
i need to create a List with all the suffixes i want to filter, should i
create it inside FileType?
can you help?
Eyal.
-------------------------------------------
here's why i had so far:
the .drl file:
*package com.test.drools*
* *
*import com.test.drools.Facts.FileType;*
*
*
* *
*rule "Filter File Types"*
* *
* **when*
* $fileTypes : ??? *
* **FileType( type memberOf $fileTypes )*
* **then*
* **System.out.println("ALLOW");*
*end*
here's FileType:
package com.commtouch.drools;
import java.net.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Facts {
// return a file type of a url
public static class FileType {
private String type = "html";
public FileType (URL url) {
// get the path from the url
//TODO: use parser to do it?
String path = url.getPath();
if (path != null) {
// define regex to extract file from path
Pattern fileRegex = Pattern.compile("([^/]+)$");
Matcher fileMatcher = fileRegex.matcher(path);
// get regex capure $1 (filename)
String file = null;
while (fileMatcher.find())
file = fileMatcher.group(1);
String suffix = null;
if (file != null)
{
//try to extract suffix from file
Pattern suffixRegex = Pattern.compile("\\.([^\\.]+)$");
Matcher suffixMatcher = suffixRegex.matcher(file);
while (suffixMatcher.find())
suffix = suffixMatcher.group(1);
//verify that the suffix is a valid suffix
if (suffix != null && (suffix.length()> 1 && suffix.length() < 6))
setType(suffix);
}
}
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
}
}
--
Eyal Edri
14 years, 6 months
Mavenizing a new drools project
by eyal edri
Hi,
I've created the HelloWorld drools sample project and i want to turn it into
a maven project.
i know i can create and empty maven project and copy all sources from the
drools project to it,
but how do i handle the dependant jars (drools runtime?)
is there a guide of how to mavenize your drools projects?
--
Eyal Edri
14 years, 6 months