OT: Job Posting - Java Contractor in the Bay Area
by Nick Heudecker
A profitable start-up in the cable advertising space is looking to expand
its development team to include another well-rounded developer. I've
detailed some of what we're looking for below and if you think you're a good
fit, you're welcome to send over your resume.
Personal Requirements:
- Must be a US citizen.
- Reside in the Bay Area and able to commute to the office (downtown San
Jose) at least 3 days a week.
- Accustomed to working with a small, distributed team and collaborating
over email, Skype and IM. Obviously, you need to be able to produce with
little supervision.
- Innovative thinker and a fast coder. We're constantly working to set
the tempo in our product space. You'll need to help develop solutions to
problems and implement them quickly.
- Outstanding communication skills, both verbal and written.
Experience and Technical Requirements:
- Ideally you've worked on several different types of products with
varying teams. Our product space is highly dynamic and a diverse experience
base will help you succeed.
- Must be a Java expert with 3-5 years of experience. I'm looking for
more of a passionate generalist than someone with knowledge of only a few
things. That said, experience with some or all of the following is
required: Hibernate, Spring, rules engines, web frameworks (GWT, Wicket),
and XML technologies (SOAP, SOA, XSD, WSDL, etc).
- Experience with relational databases such as MySQL or PostgreSQL and a
firm grasp of SQL.
- Additionally, you must be familiar with development tools such as
Maven, IDEA/Eclipse, unit testing, Subversion, among others.
- Experience with non-relational data stores, caching and producing
highly available applications is also desirable.
16 years
Upgraded Guvnor to 5.1.x from 5.0 and getting expander error with DSL
by Andrew Nguyen
I just upgraded to the latest milestone and am getting the following error:
[package configuration problem][ERR 103] Line 31:0 rule 'rule_key' failed predicate: {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in rule
[package configuration problem][ERR 101] Line 31:9 no viable alternative at input 'TPNOrders' in rule expander
[package configuration problem][ERR 101] Line 32:0 no viable alternative at input 'import' in rule expander in rule dsl
This exact set of *.brl, *.dsl, drools.package were working up until the upgrade. I've been searching the web but haven't found anything similar.
Thanks!
16 years
Accessing drools rule repository from java?
by Jens Poetsch
Hi there,
Is it posible to access the drools rules repository from java in order
to insert new rules to an existing project? I've read the documentation
but I'm not able to find an answer.
16 years
Fusion Dead lock or something
by djb
Hi,
I've got fusion running, and it is firing my very basic rule that just says
hello when an event is submitted... I have commented out all of the
irrelevant code to leave what's below. (I have System.out.println("1")s to
see how far it gets)
It seems to lock up, always in the claimEntry.insert(subevent), but randomly
in that it's not always on the same claim.
The thread says it is still running, but it obviously isn't, and there is no
exception thrown.
Regards,
Daniel
BEGIN LOOP
msSince = cor.getTimestamp().getTime() - previousClaimTime;
clock.advanceTime(msSince, TimeUnit.MILLISECONDS);
if (cor.isSubmittal())
{
ClaimSubmittedEvent subevent = new ClaimSubmittedEvent(cor);
claimEntry.insert(subevent);
}
previousClaimTime = cor.getTimestamp().getTime();
END LOOP
--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Fusion-Dead-lock-or-s...
Sent from the Drools - User mailing list archive at Nabble.com.
16 years
set show (Virus checked)
by Reto Lamprecht
Reto Lamprecht
Client/Serverentwicklung Versicherungstechnik
__________________________________________
Allianz Suisse Versicherungs-Gesellschaft AG
Bleicherweg 19, 8022 Zürich
www.allianz-suisse.ch
058 358 85 31
reto.lamprecht(a)allianz-suisse.ch
__________________________________________
This message possibly contains confidential data or items of information. It is intended solely for the rightful recipient. If you should have received the message wrongfully, it is not permitted to disclose the e-mail message or its contents to third parties, to copy or use it. We would respectfully request you to destroy the message with the exclusion of any reproduction and to notify this to the originator by e-mail.
Thank you very much.
16 years
Re: [rules-users] Improving Drools Memory Performance
by Greg Barton
For #2 try a custom operator for "connects".
GreG
On Jul 12, 2010, at 12:56 AM, Jevon Wright <jevon(a)jevon.org> wrote:
Hi Wolfgang and Mark,
Thank you for your replies! You were correct: my eval() functions
could generally be rewritten into Drools directly.
I had one function "connectsDetail" that was constraining
unidirectional edges, and could be rewritten from:
detail : DetailWire ( )
eval ( functions.connectsDetail(detail, source, target) )
to:
detail : DetailWire ( from == source, to == target )
Another function, "connects", was constraining bidirectional edges,
and could be rewritten from:
sync : SyncWire( )
eval ( functions.connects(sync, source, target) )
to:
sync : SyncWire( (from == source && to == target) || (from == target
&& to == source) )
Finally, the "veto" function could be rewritten from:
detail : DetailWire ( )
eval ( handler.veto(detail) )
to:
detail : DetailWire ( overridden == false )
I took each of these three changes, and evaluated them separately [1].
I found that:
1. Inlining 'connectsDetail' made a huge difference - 10-30% faster
execution and 50-60% less allocated heap.
2. Inlining 'connects' made very little difference - 10-30% faster
execution, but 0-20% more allocated heap.
3. Inlining 'veto' made no difference - no significant change in
execution speed or allocated heap.
I think I understand why inlining 'connects' would improve heap usage
- because the rules essentially have more conditionals?
I also understand why 'veto' made no difference - for most of my test
models, "overridden" was never true, so adding this conditional was
not making the cross product set any smaller.
Finally, I also tested simply joining all of the rules together into
one file. This happily made no difference at all (although made it
more difficult to edit).
So I think I can safely conclude that eval() should be used as little
as possible - however, this means that the final rules are made more
complicated and less human-readable, so a DSL may be best for my
common rule patterns in the future.
Thanks again!
Jevon
[1]: http://www.jevon.org/wiki/Improving_Drools_Memory_Performance
On Sat, Jul 10, 2010 at 12:28 AM, Wolfgang Laun <wolfgang.laun(a)gmail.com> wrote:
On 9 July 2010 14:14, Mark Proctor <mproctor(a)codehaus.org> wrote:
You have many objects there that are not constrained;
I have an inkling that the functions.*() are hiding just these contraints,
It's certainly the wrong way, starting with oodles of node pairs, just to
pick out connected ones by fishing for the connecting edge. And this
is worsened by trying to find two such pairs which meet at some
DomainSource
Guesswork, hopefully educated ;-)
-W
if there are
multiple versions of those objects you are going to get massive amounts
of cross products. Think in terms of SQL, each pattern you add is like
an SQL join.
Mark
On 09/07/2010 09:20, Jevon Wright wrote:
Hi everyone,
I am working on what appears to be a fairly complex rule base based on
EMF. The rules aren't operating over a huge number of facts (less than
10,000 EObjects) and there aren't too many rules (less than 300), but
I am having a problem with running out of Java heap space (set at ~400
MB).
Through investigation, I came to the conclusion that this is due to
the design of the rules, rather than the number of facts. The engine
uses less memory inserting many facts that use simple rules, compared
with inserting few facts that use many rules.
Can anybody suggest some tips for reducing heap memory usage in
Drools? I don't have a time constraint, only a heap/memory constraint.
A sample rule in my project looks like this:
rule "Create QueryParameter for target container of DetailWire"
when
container : Frame( )
schema : DomainSchema ( )
domainSource : DomainSource ( )
instance : DomainIterator( )
selectEdge : SelectEdge ( eval (
functions.connectsSelect(selectEdge, instance, domainSource )) )
schemaEdge : SchemaEdge ( eval (
functions.connectsSchema(schemaEdge, domainSource, schema )) )
source : VisibleThing ( eContainer == container )
target : Frame ( )
instanceSet : SetWire ( eval(functions.connectsSet(instanceSet,
instance, source )) )
detail : DetailWire ( )
eval ( functions.connectsDetail(detail, source, target ))
pk : DomainAttribute ( eContainer == schema, primaryKey == true )
not ( queryPk : QueryParameter ( eContainer == target, name == pk.name ) )
eval ( handler.veto( detail ))
then
QueryParameter qp = handler.generatedQueryParameter(detail, target);
handler.setName(qp, pk.getName());
queue.add(qp, drools); // wraps insert(...)
end
I try to order the select statements in an order that will reduce the
size of the cross-product (in theory), but I also try and keep the
rules fairly human readable. I try to avoid comparison operators like
< and>. Analysing a heap dump shows that most of the memory is being
used in StatefulSession.nodeMemories> PrimitiveLongMap.
I am using a StatefulSession; if I understand correctly, I can't use a
StatelessSession with sequential mode since I am inserting facts as
part of the rules. If I also understand correctly, I'd like the Rete
graph to be tall, rather than wide.
Some ideas I have thought of include the following:
1. Creating a separate intermediary meta-model to split up the sizes
of the rules. e.g. instead of (if A and B and C then insert D), using
(if A and B then insert E; if E and C then insert D).
2. Moving eval() statements directly into the Type(...) selectors.
3. Removing eval() statements. Would this allow for better indexing by
the Rete algorithm?
4. Reducing the height, or the width, of the class hierarchy of the
facts. e.g. Removing interfaces or abstract classes to reduce the
possible matches. Would this make a difference?
5. Conversely, increasing the height, or the width, of the class
hierarchy. e.g. Adding interfaces or abstract classes to reduce field
accessors.
6. Instead of using EObject.eContainer, creating an explicit
containment property in all of my EObjects.
7. Creating a DSL that is human-readable, but allows for the
automation of some of these approaches.
8. Moving all rules into one rule file, or splitting up rules into
smaller files.
Is there kind of profiler for Drools that will let me see the size (or
the memory usage) of particular rules, or of the memory used after
inference? Ideally I'd use this to profile any changes.
Thanks for any thoughts or tips! :-)
Jevon
_______________________________________________
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
_______________________________________________
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
16 years
Re: [rules-users] Doubt regarding drools Rule Engine
by Pardeep Ruhil
Hi Esteban,
Thanks for your reply.
I just like to ask one more question.
Q :Is there any GUI present through which I can make rules ?
I read the documents and find out that in Drools Guvnor, you can make rules using GUI.
But is there any facility available in Drools Guvnor to connect to a database and fetch tables and from
there I can create rules using the tables through GUI.
Please help me in this.
Thanks & Regards
Pradeep Ruhil
This Email may contain confidential or privileged information for the intended recipient (s) If you are not the intended recipient, please do not use or disseminate the information, notify the sender and delete it from your system.
______________________________________________________________________
16 years
Help: Web based console for editing BPMN2 in 5.1M2 or SNAPSHOT
by Low Han Ming NCS
Hi,
I saw on the blog post that there will be a browser base tool to edit
BPMN2 processes in Guvnor 5.1.
http://blog.athico.com/2010/06/browser-based-bpmn2-authoring-in-drools.h
tml
I have downloaded the 5.1M2 and also the last successful build from
http://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/t
runk/target/
After I've added a sample.bpmn file to the repository through Eclipse,
it shows an error that the requested resource "/designer/editor" is not
available when I try to open it in guvnor.
I suppose this means that the BPMN editor which is suppose to be an Oryx
based editor is a webapp with a context /designer?
Can anyone advise how do I go about getting the designer webapp or build
from the source?
I have tried to download the src from drools-5.1.0.SNAPSHOT-src.zip and
build the drools-guvnor module, but it didn't seems to have the editor
loaded either.
Attached is a screenshot of my gunvor.
Thanks for any advise.
Han Ming
16 years
Re: [rules-users] Drools Flow
by santosh mukherjee
Hi,
I am a newbie to Drools flow. I am trying to generate a sample string event
in the action node using the snippet -->
context.getProcessInstance().signalEvent("java.lang.String", "hiii");
But they event is not getting generated.
Any suggestions are welcome.
Thank You.
Santosh Mukherjee
16 years