I have encountered the following problem using enums in drools.
I have an enum defined called ETimeConstraint, something of the sort:
public enum ETimeConstraint {
NO_CONSTRAINT,
TODAY,
TOMORROW,
;
}
Now I wish to filter sentences which reside in the working memory based on a time constraint which is of this enum type.
I created the following test rule
rule "My Test"
when
$sentences: ArrayList()
from collect (IPhoneSentences.Sentence(
descriptor contains ETimeConstraint
))
then
//something
end
this does not work meaning no sentence are selected although I know that there are sentences in the working memory.
but when I add ETimeConstraint.name it does:
rule "My Test"
when
$sentences: ArrayList()
from collect (IPhoneSentences.Sentence(
descriptor contains ETimeConstraint.name
))
then
//something
end
I can stick to this workaround but it becomes very problematic to work this way. Furthermore once I wish to define a variable for example defining $timeConstraint :
rule "My Test"
when
$cm: Condition(
$timeConstraint: contextIntention,
)
$sentences: ArrayList()
from collect (IPhoneSentences.Sentence(
descriptor contains $timeConstraint
))
then
//something
end
this will not work because I can’t put $timeConstraint.name
any suggestions?
I am running:
- Drools 5.2.0
- Eclipse Helios
- JBoss 5.1.0
Thanks
Hezi