Написание правил верификации на Groovy
В заключительном примере я создам более сложное правило верификации, используя язык Groovy. Это правило определяет, что если служащий работает в отделе, название которого заканчивается буквой s, то его зарплата должна быть кратной числу 5. Это правило требует условной логики и также обращается к атрибуту связанного объекта-сущности Dept.
На странице General редактора Entity Object Editor для Emp перейдите в раздел Validation Rules и снова кликните кнопкой Add Validation Rule. В диалоговом окне Add Validation Rule кликните по списку Rule Types, прокрутите картинку “до упора” вниз и выберите Expression Validator. В закладке Rule Definition введите следующее выражение:
if (Dept?.Dname?.toUpperCase()?.endsWith(“S”) && Sal % 5 != 0)
{
return false;
}
return true;
Булево выражение в условном операторе ссылается на свойство Dept подвергаемого верификации текущего объекта Emp, чтобы обратиться к связанному объекту-сущности Dept (если такой существует). Затем оно ссылается на атрибут Dname этого объекта Dept, преобразовывает его в верхний регистр, чтобы выполнить сравнение без учета регистра, и использует метод endsWith() класса String, чтобы проверить, заканчивается ли значение Dname буквой s. Заметим, что вместо написания Dept.Dname.toUpperCase ().endsWith(), я заменил нормальный точечный оператор оператором безопасной навигации Groovy “?.”.
Этот оператор работает как точечный оператор, делая возможной навигацию от самого объекта к его свойствам. Однако, если стоящее с левой стороны значение является пустым, оператор Groovy не генерирует исключительную ситуацию NullPointerException, а вместо этого возвращает пустое значение. Удобно, что пустое значение в Groovy рассматривается как булево значение FALSE, так что использование оператора ?. может сделать многие выражения более компактными. После этой начальной проверки приведенное выше выражение использует целочисленный оператор деления по модулю (%), чтобы проверить, является ли зарплата числом, кратным 5. Если названия отдела заканчивается буквой s, а зарплата не кратна числу 5, то этот оператор возвращает FALSE, что приводит к неудачному вычислению правила. В противном случае, будет возвращено значение TRUE.
Перейдем в закладку Failure Handling. Заметим, что поскольку правила верификации Groovy могут условно (то есть, при выполнении некоторого условия) генерировать одну или несколько исключительных ситуаций, в этой закладке можно добавить несколько сообщений об ошибках. Выбранное сообщение будет использоваться в том случае, если правило верификации возвращает ложь (FALSE). Чтобы добавить сообщение, кликните по кнопке Add Message (обозначенной зеленым знаком “плюс”). Когда появится диалоговое окно Select Text Resource, кликните по New.... В диалоговом окне Create Text Resource введите в поле Key значение MultipleOfFiveSalForDeptsEndingInSMessage и введите в поле Value следующее сообщение об ошибке:
If department name ends in S the salary must be multiple of five.
Затем кликните по Save и Select, и, наконец, кликните по OK, чтобы определить новое правило верификации.
Снова выполните HRModule и попытайтесь ввести для служащего отдела 30 (SALES) или 40 (OPERATIONS) зарплату 2001. Затем зафиксируйте изменения. Поскольку названия этих отделов заканчиваются буквой s и зарплата служащего не кратна 5, приложение сгенерирует ошибку верификации.
Хотелось бы надеяться, что эти простые примеры помогут вам понять некоторые из новых декларативных возможностей разработки, которые станут доступными в следующем основном выпуске Oracle JDeveloper и Oracle ADF. Для получения дополнительной информации об этом новом выпуске отсылаем к ресурсам, содержащимся на сайте http://otn.oracle.com/products/jdev/11 . Если вы захотите узнать больше о языке Groovy, посетите сайт http://groovy.codehaus.org.
Steve Muench (Стив Мюнч) - менеджер-консультант по продукции для Oracle JDeveloper и член команды Oracle ACE (). За 17 лет сотрудничества с корпорацией Oracle он занимался разработкой и поддержкой инструментальных средств Oracle и технологий XML, а в настоящее время продолжает их пропагандировать. Мюнч был соавтором документа Oracle ADF Developer’s Guide for Forms/4GL Developers (Oracle, 2006) и написал книгу Building Oracle XML Applications (O’Reilly Media, 2000). На сайте Oracle Technology Networkhttp://www.oracle.com/technology и в своем блоге Dive into ADF bloghttp://radio.weblogs.com/ 0118231он делится со всеми подсказками и “хитрыми” приёмами программирования.
Источник: журнал Oracle Magazine #6 2007, http://www.oracle.com/technology/oramag/oracle/07-nov/o67fra...