Соответствующий объект для списка участников в Drools

В настоящее время у меня есть ряд объектов класса A и объект, который является списком объектов класса B в рабочей памяти Drools. Оба класса имеют атрибут ID.

Мне нужно запустить правило, чтобы проверить, есть ли в памяти объект класса A, который совпадает с идентификатором из списка класса B. (По сути, поиск каждого элемента списка, чтобы проверить, соответствует ли его идентификатор объекту класса А)

Чтобы прояснить ситуацию, у меня в памяти есть нечто подобное:

class A{
    ID : String
}

List[B]  where:

Class B{
    ID: String
}

Я пытался структурировать запрос правил вокруг этого безрезультатно. Идеи? (Все еще относительно новый для Drools)

1 ответ

Решение

Возможно, вот так:

when
  $list: List()
  B($id: ID) from $list
  A(ID == $id)
then

Использование контейнера как факта обычно считается (по крайней мере, мной) антипаттерном. Вещи проще, если Б - факты.

A($id: ID)
B(ID == $id)

Вы все еще можете вставить Список, если считаете, что это когда-нибудь будет полезно.

Другие вопросы по тегам