2016-07-20 18 views
0

Я вставляю объект «ABC» в сеанс знаний. Этот объект содержит HashMap и что HashMap содержит Список объектов типа «Лицо», и этот «Лицо» содержит HashMap для хранения данных Person, таких как Имя, возраст, пол и т. Д. Теперь, когда я должен прочитать это Person in CONDITION, чтобы проверить возраст ,Как сократить УСЛОВИЯ И ДЕЙСТВИЯ таблицы решений в drools 5.5.0

а:.... ABC()

УСЛОВИЯ
abc.getUserMap() получить ("personList") getListOfPeople() getPeople() получить ("возраст") == парам $

ДЕЙСТВИЯ "Действие на родительский объект или объект Person"

Итак, я хочу уменьшить этот код СОСТОЯНИЯ до минимума. Например СОСТОЯНИЯ - xyz.getPeople() получить ("возраст") == $ паров

ДЕЙСТВИЕ -.. xyz.getPeople() набор ($ пары) значение = «Доступно»

+0

Выражение, относящееся к возрасту какого-либо лица, не согласуется с описанием вашей структуры данных. - Если вы хотите упростить условия, упростите свои объекты. Я не могу представить себе убедительную причину хранения данных Person на Карте, содержащей объекты List of Person, предпочитая хранить объекты Person как факты. – laune

+0

@laune это лучший способ объявить вложенные объекты или объекты в Java. Преимущества -1. Нет ненужных сеттеров и геттеров. 2. Меньшая модификация кода, если вы хотите изменить 3. Лучшая временная сложность. Я написал это выражение, чтобы дать идею. –

ответ

-1

В классе ABC вы можете создать логический метод, чтобы оценить условие, проверить результат, Drools разрешить это. См. Раздел 5.6. Function в документах Drools.

+0

Хорошо спасибо. Я проверю это и дам вам знать, работает ли это. Это работает с ACTION, но я не уверен, можем ли мы использовать пользовательские методы напрямую, как и сказано в УСЛОВИЯХ. –