Удалите пробелы из значения параметра типа входной строки, используя 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();
Чтобы добавить функцию спецификации, выполните следующие действия:
- Щелкните правой кнопкой мыши папку "bom" в проекте правил Eclipse.
- Выберите "BOM Entry" из меню.
- Выберите "Создать пустую запись спецификации" и нажмите "Готово".
- Дважды щелкните новую запись спецификации, чтобы открыть представление редактора спецификации, а затем нажмите "Новый класс".
- Введите имя класса и нажмите "Готово".
- Дважды щелкните новый класс спецификации из списка, затем в разделе "Члены" нажмите кнопку "Создать".
- В диалоговом окне "Новый элемент" выберите параметр "Метод", введите имя метода и добавьте параметр в виде типа String. Наконец, установите тип возвращаемого значения как тип String. затем нажмите кнопку "Готово".
- Затем дважды щелкните новый метод в разделе "Элементы" и выберите параметры "Статический" и "Окончательный", а затем создайте вербализацию по умолчанию в разделе "Вербализация элементов".
- В разделе "Сопоставление спецификаций с XOM" введите код, который я вставил в свой исходный ответ выше, изменив имя параметра в соответствии с тем, что вы использовали.
- Вернитесь в редактор спецификации уровня класса и установите для "Имя выполнения" значение "void" в разделе "Отображение спецификации в XOM". Это необходимо, поскольку класс спецификации не связан с классом Java (XOM).
Как только вы это сделаете, вы сможете увидеть новый метод в редакторе BAL для правила.
Тем не менее, я бы сказал, что вы должны попытаться обрезать и подготовить данные, прежде чем передавать их в набор правил. В идеале вы хотите, чтобы в наборе правил было немного пользовательских функций, чтобы правила были как можно более чистыми.