Functions on the LHS are not advised and says so in the drools user guide.
I can think of two ways to do this (forgive me if my syntax is slightly off).
Way number 1
rule "ProductDescription validation"
when
$listing : Listing( $description:productDescription != null, description.title !=
null )
then
ListingScrubber listingScrubber = new ListingScrubber(listing);
insert(listingScrubber);
end
rule "ProductDescription validation Part 2"
when
$listingScrubber : ListingScrubber(forbiddenWordInTitle == true , $title:
productDescription.title)
then
String word = $listingScrubber.getWord();
System.out.println("ERROR: " + word);
end
Way number2
rule "ProductDescription validation"
when
$listing : Listing( $description:productDescription != null, $title :
productDescription.title != null)
then
List<ListingWord> listingWordList = listing.getListingWords();
Iterator<ListingWord> listingWordListIter = listingWordList.iterator();
while(listingWordListIter.hasNext())
{
ListingWord listingWord = listingWordListIter.next();
assert(listingWord);
}
end
$word : hasForbiddenWordsSet( wordsSet, $description.getTitle() )
rule "ProductDescription validation Part 2"
when
$badWordList : BadWordList($wordList : list)
$listingWord : ListingWord($word : word memberof $wordList, $listing : listing)
then
System.out.println($listing.productDescription + " has naughty word:" +
$word);
End
>> Original Message>>
Hi! I'm new here and a have a doubt about rules and functions in Drools.
I have this rule:
rule "ProductDescription validation"
when
$listing : Listing( $description:productDescription != null )
eval( $description.getTitle() != null )
eval( hasForbiddenWordsSet( wordsSet, $description.getTitle() ) )
then
System.out.println("ERROR!");
end
And this function:
function boolean hasForbiddenWordsSet(Set wordsSet, String value) { #do something useful
here }
And everything works fine. But now I want that function "hasForbiddenWordsSet"
return a String. For example to print at "then".
I tried something like this:
rule "ProductDescription validation"
when
$listing : Listing( $description:productDescription != null )
eval( $description.getTitle() != null )
$word : hasForbiddenWordsSet( wordsSet, $description.getTitle() )
then
System.out.println("ERROR: " + word); end
function String hasForbiddenWordsSet(Set wordsSet, String value) { #do something useful
here }
But it doesn't work, tried some other things and still no success.
Could someone help me?
Thanks in advance.
--
Leandro Carvalho