Drools dslr — передача списка

В dslr вы можете передать список значений в условие или Drools ограничен одним единственным значением?

Я хотел бы написать что-то вроде:

[condition][]The customer firstName is in this list {nameList}=...

вместо

[condition][]The customer firstName is {name1} or {name2} or {name3}=...

person Francesco    schedule 13.01.2015    source источник


Ответы (1)


Подходящая конструкция DRL представляет собой составное ограничение с использованием «in», записанное, например, как

Person( name in ("Joe", "Tom", "Fred") )

В вашем случае определение DSLR должно быть

[condition][]The customer firstName is in this list {nameList}=
    Customer( firstName in ({nameList}) )

Обратите внимание, что в DSL вам придется писать имена в кавычках:

The customer firstName is in this list "Joe","Tom","Fred"
person laune    schedule 13.01.2015
comment
спасибо Лена, это то что я искал. Есть ли способ также получить доступ к списку в правой части DSLR? Что-то вроде: [condition][]These 3 customers {customerList} have at least this age: {ageList}={customerList}[0].age == {ageList}[0] , ... - person Francesco; 15.01.2015
comment
Это не приведет к действительному коду DRL, и я не уверен, что вы пытаетесь здесь сделать. Возможно, вы закроете этот Q + A и начнете новый с дополнительной информацией? - person laune; 15.01.2015