[rules-dev] Bugs/Problems with 3.1.0M1

Mark Proctor mproctor at codehaus.org
Sun May 13 13:59:38 EDT 2007


Sorry thats the stateful working memory interface, StatefulSession - 
just incase my opening paragraph confuses anyone.
Mark Proctor wrote:
> 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
>>
>>   
>
> _______________________________________________
> 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