Answering to myself but maybe somebody is interested ;)
Based on my experiments query should be rewritten to
encapsulate first order logic operations within one type brackets.
query "my query"
i: Item( ( x == "A" && q > 0) || ( x == "B"
&& q > 1 ) )
// ---- Lets forget about this part ;)
// $x: Ref( name=="Exp" ) and
// Item( x == "A", quantity > 0 ) from $x.items
end
I still can not find a way to point to items directly inserted
into working memory or referenced as property ( Set of Items )
of other type - at the same time.
So far I am using rule to contribute to some temporary fact
and then retrieving and querying this fact. Not my preferable
solution but works :)
tk.
On Mon, Aug 18, 2008 at 5:15 PM, Tomasz Krzywicki <tkrzywicki(a)gmail.com> wrote:
I have query and rule which have identical LHS or "cause"
for some unknown for me reason my query returns only one Item
while rule is fired multiple times showing multiple occurences of my
desired facts.
query "my query"
i: Item( x == "A", q > 0 ) or
Item( x == "B", q > 1 ) or
$x: Ref( name=="Exp" ) and
Item( x == "A", quantity > 0 ) from $x.items
end
rule "my query test"
when
i: Item( x == "A", q > 0 ) or
Item( x == "B", q > 1 ) or
$x: Ref( name=="Exp" ) and
Item( x == "A", quantity > 0 ) from $x.items
then
System.out.println ("FOUND: "+i);
end
There must be something fundamentally wrong in the approach I am
taking ;)
I am using drools 4.0.7
Thanks in advance
tk