[rules-users] Using field values of an ENUM in the decision table
erik at clairiot.com
erik at clairiot.com
Wed Jul 8 13:25:32 EDT 2009
Are you sure you have to have a Memory object inserted as a fact ?
Don't this rule works (not tested and I'm so not a drools expert)
rule "memory"
when
$c : Computer(memory == MEM1 || memory == MEM2 || memory == MEM3)
then
modify($c) { setPrice(MEM1.getValue() };
end
On Wed, 8 Jul 2009 09:50:16 -0700 (PDT), Visu Nageswaran
<visu.nageswaran at in.ibm.com> wrote:
> I was able to achieve this using a join-column in the decision table
> equivalent to the below rule:
> WHEN $m: Memory(value == "512") $c: Computer(memory == $m)
> THEN modify($c){ setPrice(100) };
>
> However, a Memory instance needs to be inserted into the session. For
every
> discrete valued field, it would then be required for them to be inserted
> into the session to be considered in rule propogation. If there is a
better
> way / simpler way, I am very interested. Thanks in advance..
>
>
> Visu Nageswaran wrote:
>>
>> Hello, I am posting a simpler version of the actual requirement:
>> Class Computer has a field 'memory' of the enum type 'Memory' which is
>> defined over integer values
>> - - - - - - - - - -
>> public enum Memory{
>> MEM1(512), MEM2(1024), MEM3(2048);
>> public int value;
>> Memory(int i){this.value = i;}
>> public int getValue(){return value;}
>> }
>> - - - - - - - - - -
>> There is a requirement to model a decision table between memory and
price
>>
>> I am looking for the field constraint on the memory field to match to
the
>> values:
>>
>> memory.???--> Price
>> 512 --> 100
>> 1024 --> 200
>> 2048 --> 300
>>
>> I tried memory.name, memory.name(), memory.value, memory.getValue();
Does
>> this have to be done using template expressions say something like
memory
>> == Memory.reverseLookupEnum($param)
>>
>> Any help, pointers in this regard would be appreciated. thanks.
>> -Visu
>>
More information about the rules-users
mailing list