Удалите пробелы из значения параметра типа входной строки, используя BAL в ILog Jrule

У меня есть правило, которое принимает входной параметр типа String. Могу ли я удалить пробелы из значения, которое содержит этот параметр, используя BAL.

Если нет, то каков другой вариант сделать это? В этой JRule есть таблица решений, где столбец условия - это параметр, а затем - столбец действия.

Допустим, вы задали параметр Rulset Paramter "Имя" типа String для Rule IsDepartmentManager, где выходной параметр набора правил является логическим.

Теперь в таблице решений значения в столбце "Имя" - "Джон", а для этого - "Истина". В противном случае Ложь.

Теперь, когда это правило вызывается как веб-сервис, отправка ввода - "Джон". Поскольку имя содержит пробелы и таблица решений выполняет точное сопоставление, возвращаемое значение равно False.

2 ответа

Решение

Вы можете добавить начальное действие в свою задачу правила (которая содержит таблицу решений или правило), в которой вы можете выполнить theInputString.trim();

Можете ли вы опубликовать пример правила? Было бы хорошо понять, почему вам нужно обрезать строку в первую очередь.

Но вы можете написать функцию для этого и выставить ее через спецификацию. Это можно сделать двумя способами. Во-первых, вы можете написать виртуальную функцию непосредственно в спецификации, которая принимает строку и обрезает ее. Второй вариант, если вы используете Java XOM, это написать функцию на Java и представить ее через BOM.

Если вы используете подход с использованием виртуальных функций, то код будет написан с использованием IRL, но это, по сути, урезанная версия Java, поэтому он будет иметь методы объекта String, необходимые для обрезки. Например:

return theString.trim();

Чтобы добавить функцию спецификации, выполните следующие действия:

  1. Щелкните правой кнопкой мыши папку "bom" в проекте правил Eclipse.
  2. Выберите "BOM Entry" из меню.
  3. Выберите "Создать пустую запись спецификации" и нажмите "Готово".
  4. Дважды щелкните новую запись спецификации, чтобы открыть представление редактора спецификации, а затем нажмите "Новый класс".
  5. Введите имя класса и нажмите "Готово".
  6. Дважды щелкните новый класс спецификации из списка, затем в разделе "Члены" нажмите кнопку "Создать".
  7. В диалоговом окне "Новый элемент" выберите параметр "Метод", введите имя метода и добавьте параметр в виде типа String. Наконец, установите тип возвращаемого значения как тип String. затем нажмите кнопку "Готово".
  8. Затем дважды щелкните новый метод в разделе "Элементы" и выберите параметры "Статический" и "Окончательный", а затем создайте вербализацию по умолчанию в разделе "Вербализация элементов".
  9. В разделе "Сопоставление спецификаций с XOM" введите код, который я вставил в свой исходный ответ выше, изменив имя параметра в соответствии с тем, что вы использовали.
  10. Вернитесь в редактор спецификации уровня класса и установите для "Имя выполнения" значение "void" в разделе "Отображение спецификации в XOM". Это необходимо, поскольку класс спецификации не связан с классом Java (XOM).

Как только вы это сделаете, вы сможете увидеть новый метод в редакторе BAL для правила.

Тем не менее, я бы сказал, что вы должны попытаться обрезать и подготовить данные, прежде чем передавать их в набор правил. В идеале вы хотите, чтобы в наборе правил было немного пользовательских функций, чтобы правила были как можно более чистыми.

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