Drools & jBPM at ICAART (Portugal) 4th International Conference on Agents and Artificial Intelligence
by Mark Proctor
<http://4.bp.blogspot.com/-_b77C8kLxEk/TuDUJkn_TlI/AAAAAAAAAnY/_QPFAuMEdOo...>
Droosl & jBPM @ ICAART 2012 is now confirmed, and myself (Mark Proctor)
and Dr Davide Sottara will be there. If you have any interesting
research on or with Drools & jBPM that you would like to present on the
day, let us konw.
6-8 Febuary 2012
Vilamoura, Algarve, Portugal
http://www.icaart.org/tutorials.asp
The day is a tutorial day aimed at all levels. It will start with
general introductions to the technology but will slant off to more of
our research based projects such as Drools Semantics and Chance, as it's
part of an academic conference. We would also like to give an
opportunity for the people to present their own research, slots can be
anything from 20minutes to 60 - contact me if you are interested
mproctor at codehaus d0t org.
There will also be plenty of time for discussions and help with your own
projects.
*Abstract*
Drools is the leading open source, industry focused, rule engine. While
Drools started life as a Rete based forward chaining engine, it has
since transcended. It's ongoing mission is to explore declarative
paradigms from a practical and industrial perspective, to boldly go
where no engine has gone before.
The tutorial will start with a gentle introduction, suitable for all
level of expertise, covering the core language and functionality slowly
expanding into more complex areas. The topics covered include, but are
not limited to:
Basic Concepts:
* Patterns, Constraints and Unification
* Data Driven and Goal Oriented Inference using Forward Chaining and
(Opportunistic) Backward Chaining
* Truth Maintenance
* Temporal Reasoning and Complex Event Processing
* Functional Programming
* Traits and Declarative Models
Advanced Topics:
* Decision Tables
* Rule and Workflow Integration
* Hybrid Rule-Based Systems
* Agents and Services
* Unified Testing
*Brief biography of Mark Proctor*
Mark Proctor received his B.Eng in Engineer Science and Technology and
then his M.Sc. in Business and Information Systems; both from Brunel
University, West London. His M.Sc. thesis was in the field of Genetic
Algorithms; which is where he discovered his interest for anything AI
related.
Mark became involved in the Drools expert system project at an early
stage and soon became its project lead. Mark then joined JBoss (later
acquired by Red Hat) as an employee when the Drools project was
federated into the JBoss middleware stack.
Mark now leads the effort at Red Hat for a unified platform for
declarative technologies; with a focus on rules, event processing,
workflow, semantics, distributed agents and governance.
*Brief biography of Davide Sottara*
Davide Sottara received his Ms. Degree in Computer Science(2006) and his
Ph.D (2010) in Computer Science, Electronics and Telecommunications from
the University of Bologna.
His research and development interests include Artificial Intelligence
in general and Decision Support Systems in particular, focusing on
hybrid systems combining predictive models and rule-based systems.
Since 2006, he has been working on the development of intelligent DSSs
in the environmental and medical field. He is a member of the Drools
open source Community, leading a sub-project on the extension of
production rule engines to support hybrid and uncertain reasoning, and
he's also involved in the RuleML rule language standardization
initiative. He is currently working on remote health-care systems
enhanced with AI-based predictive, diagnostic and planning features.
*Contacts*
e-mail: icaart.secretariat(a)insticc.org
<mailto:icaart.secretariat@insticc.org>
13 years
Need clarification on how event expiration offset is calculated in 5.3.0.FINAL
by Scott Embler
Hi,
I've recently started using some of the temporal operators that drools
supports (coincides, starts, finishes, during) and have had trouble with
events not being expired, causing severe memory consumption.
I'd first like to make sure that I'm using these operators appropriately,
so as a test case I have rules like:
declare A
@role( event )
@timestamp( timestamp )
@duration( duration )
end
declare B
@role( event )
@timestamp( timestamp )
@duration( duration )
end
rule "coincides events"
when
$a: A() from entry-point "a"
$b: B(this coincides $a) from entry-point "b"
then insert("coincides"); end
With classes like:
public class A{
public final long timestamp;
public final long duration;
public A(long timestamp, long duration){
this.timestamp = timestamp;
this.duration = duration;
}
}
//B is identical to A.
Using a knowledge base configured with stream mode, and a knowledge session
with a pseudo clock I'd run this test:
A a = new A(0, 1000);
B b = new B(0, 1000);
entryPointA.insert(a);
entryPointB.insert(b);
clock.advanceTime(1000, TimeUnit.MILLISECONDS);
ksession.fireAllRules();
In this test I'm expecting that the rule will fire to insert "coincides"
and expire both A and B. But instead, "coincides" is inserted, B is
expired, but A remains in memory permanently. If I use jvisualvm to
inspect the expirationOffset for A, I see that it is the Long.MAX value of
9223372036854775807. This behavior persists even after adding an explicit
expiration to A. I was under the impression that the offset would be zero
(of close to it) since Drools would only need to retain A until the clock
reaches A's endTimestamp. The documentation does not cover the calculation
of event expiration in great detail, so have I missed something? Thanks in
advance.
13 years
Dynamic Fact(field) Generation in Declarative Model
by srinivasasanda
Hi All,
Please help on this issue
I created a declarative model Person in personDetails package in Drools
Gunvor with 2 fields(age,amount).Now,I need to insert one field with name
gender and datatype String into that declarative model through POJO
class..Here is my code
RuleAgent agent = RuleAgent.newRuleAgent("/Guvnor.properties");
RuleBase rb = agent.getRuleBase();
WorkingMemory workingMemory = rb.newStatefulSession();
PackageBuilder pkgBuilder=new PackageBuilder(rb);
FactType personType = rb.getFactType( "persondetails.Person" );
ClassDefinition cDefinition=(ClassDefinition)
rb.getFactType("persondetails.Person");
FieldDefinition gen = new FieldDefinition( "gender",
"java.lang.String" );
product.setKey(true);
cDefinition.addField(product);
workingMemory.insert(cDefinition);
FactHandle fc=workingMemory.getFactHandle(cDefinition);
workingMemory.update(fc, cDefinition);
rb.newStatelessSession().execute(new Object[] {cDefinition});
}
String s1=cDefinition.getField(0).getTypeName();
String name1=cDefinition.getField(0).getName();
System.out.println(s1);
System.out.println(name1);
String s2=cDefinition.getField(1).getTypeName();
String name2=cDefinition.getField(1).getName();
System.out.println(s2);
System.out.println(name2);
String s3=cDefinition.getField(2).getTypeName();
String name3=cDefinition.getField(2).getName();
System.out.println(s3);
System.out.println(name3);
Output as Age---Java.lang.Integer
Amount-java.lang.Integer
Gender--Java.lang.String..
And when i am printing
It is executing successfuly first time without errors.but i could not find
gender in declarative model.It is failed to inserting.Can anyone help me in
this..plZzzzzz...I was struggling with this....
When Iam executing second time it is displaying as Exception:couldnot find
gender in declarative model..It means iam unable to commit Data into
Server..(Drools guvnor Model)
Please help on this....
--
View this message in context: http://drools.46999.n3.nabble.com/Dynamic-Fact-field-Generation-in-Declar...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
target directory checked in?
by Laird Nelson
I just did a git pull on the drools repositories and noticed that at least
one of the projects has the target directory checked in. Was this
intentional?
My apologies if this is a known issue or deliberate. It just struck me as
odd, that's all.
Arbitrary excerpt:
create mode 100644
drools-ruleml/target/test-classes/ruleml/translator/TestDataModel$Sell.class
create mode 100644
drools-ruleml/target/test-classes/ruleml/translator/TestDataModel.class
create mode 100644
drools-ruleml/target/test-classes/ruleml/translator/TestDrools2RuleML.class
create mode 100644
drools-ruleml/target/test-classes/ruleml/translator/TestRuleML2Drools.class
create mode 100644
drools-ruleml/target/test-classes/ruleml/translator/Util.class
Best,
Laird
--
http://about.me/lairdnelson
13 years
This (ordered) record validation approach is working
by ronalbury
I didn't get any feedback when I posted earlier today, so I went ahead and
implemented what I thought would work ... and I figured I should share it
here since it seems to be working pretty well.
I created a Rule Flow as follows:
A Rule-Flow-Group that validates the arrays. Unfortunately I sometimes
get multiple related arrays of records instead of a single array of records.
I confirm that records with mandatory values have arrays with at least one
element, and confirm that the related arrays are of equal length. Errors
are logged.
A subsequent Rule-Flow-Group that manages inserts. The data actually
comes to me as one data structure comprised of sub-records of various types,
and I have DRL files for each record type. Some of the sub-records are
optional, and since subsequent rules would erroneously flag empty
sub-records as errors I have rules here which only allow optional records
containing values to be inserted into the system. I am currently using
for-loops in the THEN section of some rules to deal with the array problem
and would like to know if there is a better way. No errors are generated
here.
A subsequent Rule-Flow-Group that validates data. The data is all sent
to me as Strings, even though many of the values are numbers, dates, etc.
This Rule-Flow group tests the various fields using regular expressions, and
if a regular expression fails then the record is flagged as having an error.
Optional fields are dealt with by the regular expression allowing a blank.
Errors are logged.
A Diverging Gateway that splits the data into two ... records without
validation errors are allowed to progress to the value-checking Rule-Flow
group ... those with errors have nothing more done to them. I realize that
I could, for instance, let records with bogus numbers thru as long as my
string-to-integer routine is robust, however I don't want to flag the same
record multiple times (once by reg-ex and then again by the next
Rule-Flow-Group).
A subsequent Rule-Flow-Group that checks the values and ranges of the
numbers, dates, etc, and does other types of validation (e.g. if fieldA has
a value greater than 20 then fieldB must be set to "XYZ"). Errors are
logged.
This Rule-Flow approach currently seems to be solving all of my problems,
and it allows me to keep the rules simple and well structured such that most
of them are reusable in other parts of our system.
I'm interested in getting feedback on this approach ... it seems to be
working pretty well for me. It allows me to deal with ordering issues and
many of the if/else issues, while keeping the rules simple enough for our
non-technical analysts to review without needing a developer to sit next to
them.
I realize this is a pretty mundane application for a powerful rules system,
but it seems like a good fit nonetheless.
Thanks
Ron
--
View this message in context: http://drools.46999.n3.nabble.com/This-ordered-record-validation-approach...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
guvnor deploy on AS7 times out
by rquinn
Deploying govnor-5.3.0.Final-jboss-as-7.0.war (renamed as guvnor.war) on
jboss-as-7.1.0.Beta1b standalone on Windows XP w/java build 1.6.0_29-b11.
First attempt was dropping the war into deployments
it seems to start fine
- I do get some WARN ... does not point to a valid jar for a Class-Path
reference
- and a couple of EJB get deployed
but ultimately I get - JBAS015052: Did not receive a response to the
deployment operation within the allowed timeout period [60 seconds]. Check
the server configuration file and the server logs to find more about the
status of the deployment.
Second attempt was via the content deployer in admin console but that even
less successful... content was deployed but "enable" produces no results,
error message or anything.
any help appreciated... i've seen another posting in the forum regarding
problems with guvnor deployments and AS7 but that was 5.2 and symptoms were
different. response on that was an indication that 5.4 would refactor the
seam impl and solve some issues.
any help appreciated
thanx
--
View this message in context: http://drools.46999.n3.nabble.com/guvnor-deploy-on-AS7-times-out-tp356946...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years