Drools 5 RuleFlow error in constraints of simplest split node
by Marc Dzaebel
Hi,
after creating the standard RuleFlow example with Drools 5 in Eclipse,
adding a gateway with two (true) constraints leads to the following error
"org.drools.compiler.RuleFlowLoadError: Unable to load the rule flow. :
Exception class org.xml.sax.SAXParseException : <constraint> requires a
'toType' attribute". This seems to be a very basic serious problem.
Here is my RuleFlow file in which I only added one split node and a trivial
output action.
<?xml version="1.0" encoding="UTF-8"?>
<process xmlns="http://drools.org/drools-5.0/process"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://drools.org/drools-5.0/process
drools-processes-5.0.xsd"
type="RuleFlow" name="ruleflow" id="com.sample.ruleflow"
package-name="com.sample" >
<header></header>
<nodes>
<start id="1" name="Start" x="16" y="16" />
<actionNode id="2" name="Hello" x="246" y="138" width="80" height="48" >
<action type="expression" dialect="mvel" >System.out.println("Hello
World");</action>
</actionNode>
<end id="3" name="End" x="468" y="153" width="48" height="48" />
<split id="4" name="Split" x="100" y="106" type="3" >
<constraints>
<constraint toNodeId="2" name="constraint" priority="1" type="rule"
dialect="mvel" >eval(true)</constraint>
<constraint toNodeId="5" name="test" priority="1" type="rule"
dialect="mvel" >eval(true)</constraint>
</constraints>
</split>
<actionNode id="5" name="Test" x="228" y="51" >
<action type="expression" dialect="mvel"
>System.out.println("Test");</action>
</actionNode>
<end id="6" name="End" x="467" y="71" />
</nodes>
<connections>
<connection from="4" to="2" />
<connection from="2" to="3" />
<connection from="1" to="4" />
<connection from="4" to="5" />
<connection from="5" to="6" />
</connections>
</process>
Any ideas?
Thanks in advance
Marc
--
View this message in context: http://www.nabble.com/Drools-5-RuleFlow-error-in-constraints-of-simplest-...
Sent from the drools - user mailing list archive at Nabble.com.
15 years, 4 months
Do you love to play Magic The Gathering? (Renton, WA) (Job Posting)
by Mark Proctor
http://blog.athico.com/2009/08/do-you-love-to-play-magic-gathering.html
This came up in my google alerts today, and applying Drools to computer
games is something I've always wanted to see happen :) If anyone gets
the contract, you can be sure the Drools team will be available to you
for direct free mentoring - actually I insist on it :)
Do you love to play Magic The Gathering? (Renton, WA)
<http://seattle.craigslist.org/est/sof/1309824161.html>
http://seattle.craigslist.org/est/sof/1309824161.html
------------------------------------------------------------------------
Date: 2009-08-06, 4:44PM PDT
Reply to: job-vtfwu-1309824161(a)craigslist.org
<mailto:job-vtfwu-1309824161@craigslist.org?subject=Do%20you%20love%20to%20play%20Magic%20The%20Gathering%3F%20%28Renton%2C%20WA%29&body=%0A%0Ahttp%3A%2F%2Fseattle.craigslist.org%2Fest%2Fsof%2F1309824161.html%0A>
^[Errors when replying to ads?
<http://www.craigslist.org/about/help/replying_to_posts>]
------------------------------------------------------------------------
Do you love to play Magic The Gathering and have experience with technology?
We are looking for a consultant to provide an initial assessment of the
applicability of rules and constraint based programming to the on-line
version of the game Magic: The Gathering.
The initial engagement is for one to two weeks and the bulk of the work
can be done remotely with flexible hours.
Mandatory qualifications are as follows:
1. At least 3 years of Magic: The Gathering play experience.
2. Active user of Magic: The Gathering Online
3. A Pro Tour Level Player or certified Magic Judge
4. At least 3 years of rule based programming experience in at least two
of the following tools:
a)Eclipse Rules/ Oracle Policy Automation
b)Clips
c)Jess
d)Corticon Rules
e)BizTalk Rules
f)JBoss Rules
g)Art Enterprise
h)OPS 83
i)ILog/IBM Rules
5. A theoretical understanding of the Rete algorithm and other rule
processing optimizations
6. Experience with all of the following:
a)Natural or domain language rule expression
b)Programming language rule expression
c)Visual rule editing and diagramming
Most of the work can be done remotely, however some on-site meetings
will be required. Estimate of 20-80 hours of total work over two weeks,
could be an on-going need if you like the work
If you are interested in applying, please send me your current word.doc
resume and let me know a good time to give you a call.
* Location: Renton, WA
* Compensation: Competitive
* Telecommuting is ok.
* This is a part-time job.
* This is a contract job.
* Principals only. Recruiters, please don't contact this job poster.
* Please, no phone calls about this job!
* Please do not contact job poster about other services, products or
commercial interests.
15 years, 4 months
Process Persistence (JPA) and the WSHumanTaskHandler
by SBalakrishnan
Hi,
I am new to drools flow and have the question below.
After enabling persisentence (JPA) on the process side and
using the out of the box WSHumanTaskHandler.
Ran into a java.lang.NullPointerException on completing
the Human Task (used the Eclipse Human Task view to do it)
[2009:08:221 14:08:765:exception] Uncaught exception on client
java.lang.NullPointerException
at
org.drools.persistence.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:83)
at
org.drools.process.workitem.wsht.WSHumanTaskHandler$GetCompletedTaskResponseHandler.execute(WSHumanTaskHandler.java:282)
at
org.drools.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:67)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:752)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:414)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:49)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:832)
at
org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:379)
at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:173)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:414)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:49)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:832)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$HeadFilter.messageReceived(DefaultIoFilterChain.java:616)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:414)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:408)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:578)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:540)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:532)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:58)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:857)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Am I missing something or does the WSHumanTaskHander not support
the above ?
Note:-
Was able to get these pieces working when process was
not using JPA persistence.
Thanks
Sanjay
--
View this message in context: http://www.nabble.com/Process-Persistence-%28JPA%29-and-the-WSHumanTaskHa...
Sent from the drools - user mailing list archive at Nabble.com.
15 years, 4 months
How to create new permission in Drools Guvnor
by Pardeep.Ruhil@lntinfotech.com
Hi,
I am using Drools Guvnor. I want to know how we can create new permission
that we assign to a user.
Presently we have admin, Analyst, Analyst.readonly, Package.admin,
Package.developer, Package.readonly.
Also if i am giving package.readonly permission to User, he is able to
modify the rules present in the package to which he is associated with
package.readonly permission, ideally that should not happen for a readonly
permission.
Can u please tell me, how to assign the permission , so that user can just
see the rules rather edit them.
Is it possible?
Thanks & Regards
Pardeep Ruhil
______________________________________________________________________
15 years, 4 months
Re: [rules-users] Strategy for initializing objects
by Greg Barton
You answer your own question. Use accumulate:
rule "Hello World"
when
b : Box( x == -1 )
newX : Integer() from accumulate( box: Box( x != -1 ),
init( int i = 0; ),
action( i += box.size; ),
reverse( i -= box.size; ),
result( i ) )
then
System.out.println("Sum: " + newX);
b.setX(newX);
System.out.println(b);
update(b);
end
See attached project.
--- On Sat, 8/8/09, sonia <robotnic+drools(a)gmail.com> wrote:
> From: sonia <robotnic+drools(a)gmail.com>
> Subject: Re: [rules-users] Strategy for initializing objects
> To: "Rules Users List" <rules-users(a)lists.jboss.org>
> Date: Saturday, August 8, 2009, 2:36 AM
> In general: I want to set a property
> in the Box objects, depending on
> all previously set objects..
>
> My goal is to place the boxes one after another, for this I
> keep a
> variable in Box object.
> It seems like the easiest way to accumulate the sizes of
> boxes that
> are already placed.
>
> In the 'then' clause, I set the box location, and update
> the X by
> adding the size of the currently placed box.
>
> 2009/8/8 Wolfgang Laun <wolfgang.laun(a)gmail.com>:
> > Your goal and the presented code aren't clear to me.
> The consequence (after
> > then) contains calls to static/class methods
> (Box.setX()) which isn't going
> > to change anything in your fact object. The call
> b.setX() might change your
> > object, but this depends on what the class method
> Box.getX() returns.
> >
> > Assuming Drools 5, a typical consequence would look
> like
> > b: Box(...)
> > then
> > modify( b ){
> > setX( ... )
> > }
> > end
> >
> > -W
> >
> > On Sat, Aug 8, 2009 at 1:48 AM, sonia <robotnic+drools(a)gmail.com>
> wrote:
> >>
> >> Hello
> >>
> >> I want to achieve this:
> >> box1.setX(0)
> >> box2.setX(box1.size());
> >> box2.setX(box1.size + box2.size)
> >> ...
> >>
> >> I want to do it with rules, and would like to know
> what's the best
> >> method of initializing (or any other operation
> with varying data) a
> >> group of objects
> >>
> >> rule "init box"
> >> when
> >> b : Box( x == -1)
> >> then
> >> b.setX(Box.getX());
> >> Box.setX( Box.getX() + b.size);
> >> end
> >>
> >> This does not work.
> >> A single box object is matched several times
> instead of different box
> >> objects.
> >> What is happening? how come a single box object is
> matched several
> >> times? Why doesnt drools choose other instances of
> box?
> >>
> >> What do I need to do to initialize all boxes, once
> for every box?
> >>
> >> Thank you.
> >>
> >> --
> >> robosonia
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users(a)lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users(a)lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
>
>
> --
> robosonia
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
15 years, 4 months
Strategy for initializing objects
by sonia
Hello
I want to achieve this:
box1.setX(0)
box2.setX(box1.size());
box2.setX(box1.size + box2.size)
...
I want to do it with rules, and would like to know what's the best
method of initializing (or any other operation with varying data) a
group of objects
rule "init box"
when
b : Box( x == -1)
then
b.setX(Box.getX());
Box.setX( Box.getX() + b.size);
end
This does not work.
A single box object is matched several times instead of different box objects.
What is happening? how come a single box object is matched several
times? Why doesnt drools choose other instances of box?
What do I need to do to initialize all boxes, once for every box?
Thank you.
--
robosonia
15 years, 4 months
How can I configure who is an Admin in Guvnor?
by Steve Ronderos
Hello Drools Users,
In the Guvnor Documentation (
http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-guvnor/ht...
) it states that ". It is also possible (thanks to JAAS) to define what
users have the "admin" role for Guvnor (note that an Admin user of Guvnor
doesn't have to really be a system administrator). " I wasn't sure if
this meant that there was a way to define Admins from within the Guvnor UI
or if it was possible to configure the admin role to read from an LDAP
group or some other JAAS method.
We are going to be deploying Guvnor to a production environment in the
near future, we want to take advantage of Role Based Authorization, we
want to start with an empty DB and we don't want to have to deploy with
Authorization off, set up roles and then turn it back on.
Is this possible? Or did I misinterpret the documentation?
Thanks,
Steve Ronderos
15 years, 4 months
DRL Pattern match to subclass?
by Kris Nuttycombe
Hi, all,
I'm trying to figure out a way to perform the following pattern match
in a "when" clause in a drl file. This is with Drools 4.x
I have the following parameterized class (boilerplate omitted):
abstract class Property<T> {
public String getName() {
//...
}
public abstract T getValue();
}
and subclasses such as
class BigDecimalProperty extends Property<BigDecimal> {
public BigDecimal getValue() {
//...
}
}
I then have an interface as such:
public interface Propertied {
public Set<Property<?>> getProperties();
}
and an implementing class:
class Plan implements Propertied {
//...
}
In my rules file, I would like to be able to perform the following
pattern match:
rule "Ensure that plan minimum commitment has been met."
agenda-group "evaluate-balance"
when
$plan: Plan()
$minCommitProperty: BigDecimalProperty(name ==
"minimum_commitment", $minCommitment : value) from $plan.properties
then
//...
end
Of course, this results in a runtime rule compilation exception
complaining of type mismatch. Is there any better way to encode this
match than to add all properties to the working memory, match the
desired property as a first-class object, then match against the plan
with Plan(properties contains $minCommitProperty)?
Thanks,
Kris
15 years, 4 months