Я хотел бы изменить формулировку встроенного метода во встроенном классе. Такие вербализации методов отображаются в части System
словарного запаса. Например, в классе date
есть метод, вербализованный как {a date} is after {a date}
. Конечно, я могу определить свои собственные методы в своем собственном классе с тем словарем, который я хочу видеть, но я также хочу избавиться от существующего словаря, чтобы он не вызывал путаницы при написании правил. Есть ли способ изменить эти предопределенные вербализации или вообще удалить их?
Это оказывается легко реализовать, но сложно понять. Похоже, что ODM заменяет класс спецификации ilog.rules.brl.Date на класс спецификации java.time.ZonedDateTime, по крайней мере, в отношении видимости в редакторах.
Если вы переопределяете встроенный класс спецификации своим собственным классом спецификации с тем же именем, встроенный класс и методы больше не отображаются в спецификации. Просто определите класс спецификации ilog.rules.brl.Date в любой записи спецификации в любом проекте правил и назовите этот класс «датой». Как по волшебству, класс date и все его методы исчезают из раздела System представления Vocabulary, и эти методы больше не будут представлены в редакторе Intellirule в Rule Designer.
Я использую эту возможность, чтобы скрыть встроенные методы обработки даты, основанные на java.util.Date. Весь наш код теперь использует вместо этого java.time.ZonedDateTime, и теперь я могу избежать ODM, пытающегося преобразовать мои экземпляры ZonedDateTime в java.util.Date, как того требуют встроенные методы обработки даты. Теперь я могу определять свои собственные методы для обработки экземпляров ZonedDateTime, не путая их в редакторах со встроенными методами.
Один сложный аспект заключается в том, что класс ZonedDateTime BOM, который я определил, не может быть вербализован. Вместо этого ODM использует формулировку моего класса спецификации ilog.rules.brl.Date. Члены (фактические или виртуальные) моего класса ZonedDateTime BOM также не могут быть вербализированы. Когда я добавляю виртуальные элементы BOM в ilog.rules.brl.Date, я также должен указать Execution Name для этого класса Date — кажется, что ZonedDateTime работает нормально, и {this} ведет себя интуитивно в этих вербализациях членов.
В образцах дистрибутива ODM вы найдете файл с именем boot.bom в studio\samples\authoring\bomextensions\rules\resources.
Этот файл содержит стандартную информацию для «загрузочной» (начальной) лексики.
Вы можете изменить словарный запас области даты, а затем использовать эту бомбу в своем проекте.
Это ответ, который я искал! У меня были смутные воспоминания о boot.bom, но я не мог точно вспомнить, как он назывался, и не мог найти ссылку на него в Интернете. Большое спасибо за подсказку.
Обратите внимание, что существуют другие классы, связанные с датами, встроенные в ODM, и их вербализация может быть скрыта с помощью того же трюка: ilog.rules.brl.Date ilog.rules.brl.DayOfWeek ilog.rules.brl.Month ilog.rules. brl.SimpleDate ilog.rules.brl.Time ilog.rules.brl.UniversalDate ilog.rules.brl.UniversalTime ilog.rules.brl.Year