Как определить функцию для использования в таблице решений ODM без изменения XOM?
Я использую ODM 8.5 (преемник JRules). В моем домене Java есть строка из трех символов field
это число от "000" до "999". Я хотел бы иметь таблицу решений, которая представляет логику, такую как:
if field is between "000" and "012" then set the result to "tiny"
if field is between "013" and "060" then set the result to "less tiny"
...
Документация IBM по определению состояний столбцов - "Оператор условия - это неполное выражение предиката BAL...". Есть ли что-то в BAL, что делает сравнение строк, которое я хочу сделать? Если нет, возможно ли вызвать функцию, определенную в IRL, из BAL? Если так, то как? Я также открыт для других предложений о том, как справиться с этой простой проблемой в ODM (без изменения существующего Java XOM). Сейчас мне кажется, что я не могу использовать таблицу решений ODM, хотя базовая логика кажется хорошо подходящей для таблицы решений.
1 ответ
Этот ответ в значительной степени основан на хорошем ответе Джастина Филлипса на этот вопрос, обновленном для ODM 8.5. Пожалуйста, добавьте его ответ.
Основная идея заключается в создании функции в модели бизнес-объектов (BOM), которую можно вызывать из ваших правил. Чтобы добавить функцию спецификации:
- Щелкните правой кнопкой мыши
bom
папка в проекте правил Eclipse. - Выбрать
New -> BOM Entry
из меню. - Выберите
Create an empty BOM entry
вариант, а затем нажмитеFinish
, - Дважды щелкните новую запись спецификации, чтобы открыть представление редактора спецификации, а затем нажмите
New Class
, - Введите имя класса и затем нажмите
Finish
, - Дважды щелкните новый класс спецификации из списка, затем под
Members
раздел нажмитеNew
кнопка. - в
New Member
выберитеMethod
вариант, введитеName
(isBetween
), вернутьType
для метода (boolean
) и добавьте три параметра String (testee
- проверяемая стоимость,min
а такжеmax
). Нажмите наFinish
кнопка. - Дважды щелкните новый метод под
Members
раздел и выберитеStatic
а такжеFinal
опции. - Нажмите ссылку "Создать" в разделе "Вербализация элемента" и заполните текстовое поле "Шаблон"
{0} is between {1,min} to {2,max}
- Под
BOM to XOM Mapping
введите ваш код Java.
11. Вернитесь к редактору спецификации уровня класса и установите Execution name
к стоимости void
в разделе "Отображение спецификации в XOM". Это указывает на то, что класс спецификации не связан с классом Java (XOM).
Вербализация для вновь созданного члена теперь должна быть доступна при заполнении Test
в Condition Column
для таблицы решений.