Как определить, является ли объект экземпляром определенного класса в IBM Rules Designer / ODM? - PullRequest
0 голосов
/ 21 мая 2018

Это может быть легко, но я не нашел простого способа определить в правиле, что объект в рабочей памяти, представленный реализованным интерфейсом, является конкретным классом в IBM Rules Designer 8.8.1.Например, если предположить, что HousingPeriod является интерфейсом, если у меня есть определение, которое гласит:

definitions
    set 'the housing period' to a housing period...

И я хочу дополнить это предложением where, которое дополнительно уточняет коллекцию объектов, реализующих HousingPeriod как один из списка реализующих классов, скажем CollegeHousingPeriod и InternshipHousingPeriod, как я могу это сделать?Что-то вроде:

        where this housing period is a college housing period

или

        where any of the following is true:
            - this housing period is a college housing period
            - this housing period is an internship housing period,

, похоже, не работает.Заранее благодарим за любую помощь, которую вы можете оказать!

1 Ответ

0 голосов
/ 21 мая 2018

Насколько я знаю, не существует встроенного способа запроса типа объекта.Вместо этого я вижу два возможных способа получить желаемый результат:

Создайте запись виртуальной спецификации с настраиваемым B2X-отображением для каждого из ваших реализующих классов.В B2X-Mapping вы реализуете необходимый Java-код для сравнения типа объекта и возврата логического значения.Вербализация будет что-то вроде {1} is a college housing period.Это, очевидно, работает, только если вы знаете объекты раньше и их не так уж много.

Второй вариант - не создавать разные объекты, а использовать отдельный атрибут для различения типов периодов жилья.Вербализация тогда будет что-то вроде where the type of this housing period is college housing.При таком подходе вам придется изменить интерфейс вашего проекта правил, что может оказаться невозможным для вас.

...