Как мне изменить вариализацию системного класса по умолчанию в ODM 8.9.1?

#ibm-odm

#ibm-odm

Вопрос:

Я хотел бы изменить вербализацию встроенного метода во встроенном классе. Такие вербализации методов отображаются в System части словарного представления. Например, date класс имеет метод, вербализованный как {a date} is after {a date} . Конечно, я могу определить свои собственные методы в своем собственном классе со словарем, который я хочу видеть, но я также хочу избавиться от существующего словаря, чтобы он не вызывал путаницы при написании правил. Есть ли какой-либо способ изменить эти предопределенные вербализации или удалить их вообще?

Ответ №1:

В образцах дистрибутива ODM вы найдете файл с именем boot.bom в studiosamples authoringbomextensions rules resources.

Этот файл содержит стандартную информацию для «загрузочного» (начального) словаря.

Вы можете изменить словарь области дат, а затем использовать эту спецификацию в своем проекте.

Комментарии:

1. Это ответ, который я искал! У меня было смутное воспоминание о boot.bom, но я не мог точно вспомнить, как оно называется, и я не мог найти ссылку на него в Интернете. Большое спасибо за подсказку.

Ответ №2:

Это оказывается простым в реализации, но сложным для понимания. Похоже, что ODM заменяет класс спецификации ilog.rules.brl.Date классом java.time.Класс спецификации ZonedDateTime, по крайней мере, в отношении видимости в редакторах.

Если вы переопределите встроенный класс спецификации своим собственным классом спецификации с тем же именем, встроенный класс и методы больше не будут видны в спецификации. Просто определите класс спецификации ilog.rules.brl.Date в любой записи спецификации в любом проекте правил и вербализуйте этот класс как «дата». Как по волшебству, класс date и все его методы исчезают из системной части словарного представления, и эти методы больше не будут представлены в редакторе Intellirule в конструкторе правил.

Я использую эту возможность, чтобы скрыть встроенные методы обработки даты, основанные на java.util.Date. Весь наш код теперь использует java.time.Вместо этого я могу использовать ZonedDateTime, и теперь я могу избежать попыток ODM преобразовать мои экземпляры ZonedDateTime в java.util.Дата в соответствии с требованиями встроенных методов обработки даты. Теперь я могу свободно определять свои собственные методы для обработки экземпляров ZonedDateTime, не путая их в редакторах со встроенными методами.

Одним из сложных аспектов является то, что определенный мной класс спецификации ZonedDateTime не может быть вербализован. Вместо этого ODM использует вербализацию моего класса спецификации ilog.rules.brl.Date. Также нельзя вербализовать члены (фактические или виртуальные) моего класса спецификации ZonedDateTime. Когда я добавляю виртуальные члены спецификации в ilog.rules.brl.Date, я должен также указать имя выполнения для этого класса Date — ZonedDateTime, похоже, работает нормально, и {this} интуитивно ведет себя в этих вербализациях членов.

Комментарии:

1. Обратите внимание, что в ODM встроены другие классы, связанные с датой, и их вербализацию можно скрыть с помощью того же трюка: ilog.rules.brl.Date ilog.rules.brl.DayOfWeek ilog.rules.brl.Month ilog.rules.brl.SimpleDate ilog.rules.brl.Timeilog.rules.brl.UniversalDate ilog.rules.brl.UniversalTime ilog.rules.brl.Year