[rules-users] Maps again - key derived from another object

KDR dr.soprano at neverbox.com
Sat Aug 22 09:28:39 EDT 2009


Sorry, please ignore the previous post. Entirely my own stupid mistake, not
enough caffeine obviously! I'd been trying to use a non-String object as the
key, mixing up my objects. Once I extracted the string from it, it was fine.


KDR wrote:
> 
> Hi, I'm still having issues with this despite getting the snapshot update
> to the mvel jar. Can anyone suggest what else to try please? Am I doing
> something wrong?
> 
> Say I insert 2 objects:
> - ObjectWithKey which has a field that is a string to be used as the key.
> - ObjectWithMap has a field that is a map, which contains entries -
> including one for the key string that's in the inserted ObjectWithKey.
> 
> With the rule below, trying to get the value with the key always produces
> null (although with the updated jar at least I no longer get a compilation
> error!). However if I use a literal for the key, or from an inserted
> String object (the commented out $s below), then it works to print out the
> right value for the key.
> 
> rule "Tester"
> 	dialect "mvel"
> 	when
> 		# $s : String (this == "aString") # works if I use $s as key
> 		$a : ObjectWithKey (
> 			$k: aStringForKey,
> 			$o: objectWithMap
> 			) 
> 		$b: ObjectWithMap (
> 			this == $o,  
> 			map != null # works fine, it can see there's a map in existence
> 			# map[$k] != null, # no good, Drools thinks this value is always null  
> 			# map[$s]  # this works however
> 		)
> 	then 
> 		System.out.println("ObjectWithMap has non-null map, value for key is ");
> # prints OK
> 		System.out.println($b.map[$k]); # prints out null!
> end
> 
> I'm at my wit's end. I've also tried Java (with get) and eval alternatives
> and can't get it to work. If anyone can suggest a way to get a value out
> of the map (for testing against other conditions) when the map is a field
> of one object, using a key that is a field in another object, I'd really
> appreciate it.
> 
> Cheers
> 
> 

-- 
View this message in context: http://www.nabble.com/Maps-again---key-derived-from-another-object-tp25093672p25093852.html
Sent from the drools - user mailing list archive at Nabble.com.




More information about the rules-users mailing list