На информационном ресурсе применяются рекомендательные технологии (информационные технологии предоставления информации на основе сбора, систематизации и анализа сведений, относящихся к предпочтениям пользователей сети "Интернет", находящихся на территории Российской Федерации)

Усовершенствованные вычисления и проверка правильности (Enhanced Calculation and Validation, by Steve Muench ). Часть 4

Написание правил верификации на 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...

Картина дня

наверх