Hi Wang
I've done something similar with questions in an insurance application.
I found it easiest to split the map entries up into separate objects and
put them all into working memory:
class Answer {
String questionCode;
String answer;
AnswerSet answerSet;
// ...getters and setters omitted
}
class AnswerSet {
String answerSetCode;
List<Answer> answers;
}
The rule looks something like:
when
set1 : AnswerSet(code == 'answerSet1')
answer1 : Answer(questionCode == 'question1', answer == "100", answerSet
== set1)
answer2 : Answer(questionCode == 'question2', answer == '200', answerSet
== set1)
then
answer1.hidden = true
These are also easy to convert into a DSL. The "answerSet" in the rule
is used to make sure both answers have come from the same set of answers
(if that's important to you).
I did read somewhere in the docs that MVEL can handle maps in the same
way as beans, but I'm not sure if this is correct.
Cheers
Peter
王在祥 wrote:
I have a requirement of run rules on dynamic map instead of POJO, for
example:
*when
Map(* TransCode == "LOGIN" , userName == "wangzx", password ==
"123456" )
*then
doSth1()
when
Map( *TransCode = "SaveOrder" userName == "wangzx" category ==
"Book")
*then
doSth2()
*
the Fact is not a Java Bean, but a dynamic map<String, Object>, so the
TransCode == "Login" is what we means map("TransCode") ==
"Login".
By using map insteam of POJO, we can build a rules run on the message
dispatch, since there is a lot of Message Types, and each message type
has different schema, so using dynamic types is more flexible than POJO.
Can someone tell me how can it be supported in drools? Very thanks.
------------------------------------------------------------------------
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users