[rules-dev] Bugs/Problems with 3.1.0M1

Mark Proctor mproctor at codehaus.org
Sun May 13 12:21:17 EDT 2007


Q1) Stateless is just that, stateless, you pass it the facts, it 
executes and is done. If you need continuous access to the WorkingMemory 
use the StatefulWorkingMemory interface, which actually extends the 
WorkingMemory interface. Can you show me a use case where you neeed 
access to the WorkingMemory from a StatelessSession, where you shouldn't 
be using a StatefulSession to begin with.

Q2) Synchronized working memory is no longer needed, and to be honest 
wasn't very good, as the WorkingMemory itself is now thread safe - 
except the Iterators, but we'll eventually add thread safe adaptors for 
them. Thats why its 4.0, instead of 3.1, signifying a break in API. the 
changes really aren't that big and we don't want to create a confusing 
and heavy api due to legacy support.

Q3.1 Shadow facts are needed if you want to work with POJOs and the 
modify command, you should only disable them (i.e. use final) if you 
know the object is immutable, if a class is final we can't extend it 
with code generation and thus can't generate shadow facts for it, even 
if we wanted to. The reason for this is we need to know the previous 
value, prior to the modification. We are working on a way in which 
shadow facts aren't needed, this involves not allowing "modify" outside 
of the consequence and within the consequence we actually retract the 
fact before any modifications and assert it after the modifications are 
finished.

Q3.2 isShadowEnabled is for internal purposes only at the moment, thus 
no setter. Once we have the code finish to allow optional shadow facts 
we will expose some api for configuring this.

There is a lot of R&D going on and this a difficult field - it often 
takes many attempts to get stuff right which results in a lot of 
refactoring - but we do work on code simplication, just look at the 
drools-compiler dialect API compared to how it is in 3.0 (where it was 
called semantic), a huge change and massive simplifications as we move 
towards pluggeable dialects.

Decision Tables in Excel are limited, although very business friendly, 
to get any real power and flexability we need to be looking to 
integrated this into Eclipse - due to limited resources, not sure if 
that will get done any time soon - patch welcome :)


Arjun Dhar wrote:
> Hi,
>  firstly, I compiled my code from 3.0 to 3.1 had issues, then from 3.1 to 4, I 
> cant access my working memory from my rule base and in 4 you've also got rid of 
> Synchronized working memory.
>
> Questions :
> ===========
>
> Related to shift from 3.1 to 4
> -------------------------------
> Q1. Once I create a 'StatelessSession'; how do I extract the Workingmemory? 
> There is no acessor. My code was written for 'SynchronizedWorkingMemory' so 
> means double trouble if there is no backward compatibility. 
>
> Q2. Couldn't you guys have deprecated stuff instead of just wiping it off? Is 
> there a reason for such a change as to restrict access to WorkingMemory or 
> SynchronizedWorkingmemory to those who would have got comfortable using it 
> directly? :o)
>
> Related to shift from 3.0 to 3.1
> ---------------------------------
> 3. When I built my code on 3.1M1 the first thing I got was a 
> NullPointerException, I debugged the code and found due to additon of 
> ShadowFacts, if the class definition is NOT FINAL, it dynamically creates a 
> Shadow object. Refer: org.drools.semantics.java.builder.ColumnBinder.java (1st 
> Method) {Sweet!} ...BUT:
>
>    Q3.1. Whats a Shadow got to do with a Class being final????????? (If 4 wasnt 
> released I'd say keep it that way, atleast I could disable shadow facts as a 
> work around)
>    Q3.2. To use Shadow or not comes 
> from "org.drools.spi.ObjectType.isShadowEnabled()"; there is no Setter for 
> this. So apart from making a class 'final'  or defining a custom 'FactTemplate' 
> one does not have any option. 
>    Q3.3. When I looked at 4 code, this code has disappeared (or probably got 
> refactored somewher I couldnt find it) 
>
> Final Question: Whats the deal guys? :o) Its hard enough looking at the code of 
> one version, but when I see drastic code change it makes one wonder if at this 
> rate changes, it's hard :o) Hope you understand.
>
> Please let me know the answer to my questions! 
>
> Recommendation: I see a lot of acceptance on Decision Tables compared to DSL. 
> Once the code settles will give you guys some recommendations + code there, but 
> in the mean time please provide feature support to decsion tables as well as 
> you do for DRL, in future. If one can manage decision tables well, I see a lot 
> of power in getting people to accept rule engines compare to other approaches.
>
> Thanks!
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
>   




More information about the rules-dev mailing list