Здравствуйте, в этой статье я хочу вам рассказать о языке Groovy, и его использовании в JDeveloper.
Как говорится в Википедии :
Groovy — объектно-ориентированный язык программирования разработанный для платформы Java как альтернатива языку Java с возможностями Python, Ruby и Smalltalk.
Groovy использует Java-подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим Java кодом и библиотеками. Язык может использоваться в любом Java проекте или как скриптовый язык.
Oracle JDeveloper и Oracle ADF 11g ввели поддержку сценариев языка Groovy, позволяющий создавать Groovy выражения, которые можно использовать в свойствах проверки атрибутов и в качестве источника для значений атрибутов .
Начнем : )
Для демонстрации функциональности Groovy, создайте ADF приложение, соединитесь к тестовой базе oracle scott или hr, и создайте entity и view объекты для таблиц этой схемы.
Oracle ADF предоставляет много мест, где можно использовать Groovy код:
- В значении атрибутов Entity и View объектов.
- В правилах проверки(Validation Rules) атрибутов Entity объектов.
- В выражениях для сообщений об ошибках
- В значениях Bind Variables во View объектах
- В проверке Transient атрибутов во View объектах
Groovy выражения в ADF Business Components объектах
Ссылка на атрибуты в одном объекте.
Простейший пример, работы Groovy, это ссылка на атрибут, во View объекте.
Создайте Transient атрибут в View объекте Empview : SumSal(type:number,value type:Expression,value: Sal*Comm)
То есть, используя Groovy мы можем ссылаться в атрибутах на другие атрибуты, и совершать с ними какие либо операции(в данном случае мы создали атрибут которому будет присваиваться произведение зарплаты на коэффициент).
Если запустить AppModule для тестирования, то появится ошибка: "(oracle.jbo.JboException) JBO-29000: Выявлено непредвиденное исключение: java.lang.NullPointerException, сообщ.=Cannot invoke method multiply() on null object". Хоть выражение и правильное, но что бы оно выполнялось, атрибуты не должны иметь значения Null. Исправьте созданное выражение на :
if ((Comm != null)&&(Sal!= null)){Comm*Sal}
Использование Groovy выражений в правилах проверки у entity объектов.
Groovy так же можно использовать для проверки атрибутов в entity объектах. Для этого в объекте нужно зайти во вкладку Business rules и создать новый validator.
Groovy так же можно использовать для проверки атрибутов в entity объектах. Для этого в объекте нужно зайти во вкладку Business rules и создать новый validator.
Появится окно создания правила проверки(validation rule) для нашего entity объекта. В окне необходимо выбрать тип правила(Type:Script expression), и заполнить три вкладки:Rule Definition(Groovy выражение определяющее правило),Validation Execution(определение условия запуска правила),Failure Handling(текст сообщения при не выполнении правила).
Сделаем проверку: если зарплата у сотрудника больше 1000 рублей, то вывести сообщение: "У {имя сотрудника} зарплата должна быть меньше 1000 руб".
Для этого в Rule Definition введите следующий код и кнопкой Test проверьте его на ошибки:
Сделаем проверку: если зарплата у сотрудника больше 1000 рублей, то вывести сообщение: "У {имя сотрудника} зарплата должна быть меньше 1000 руб".
Для этого в Rule Definition введите следующий код и кнопкой Test проверьте его на ошибки:
Мы написали условие вывода сообщения, теперь нам надо написать само сообщение.Для этого зайдите во вкладку Failure Handling, и нажмите "+" и в Message string введите :"У {x} зарплата должна быть меньше 1000 руб". {x} означает параметр, который вводится снизу. Напротив x в Token Message Expressions введите Ename(имя сотрудника). Вкладку Validation Execution трогать не будем, так как это правило выполняется для всех.
Запустим Oracle Component Browser для проверки. И у объекта Empview1 в Sal введем 1001. Появится следующее сообщение:
Использование встроенных функций
Также в атрибутах и проверках можно использовать следующие встроенные функции:
adf.currentDate - текущая дата;
adf.currentDateTime - текущая дата и время;
adf.error.raise("") -вывод сообщения об ошибке;
adf.error.warn("") -вывод сообщения.
Более детально, но увы на английском языке о Groovy в Jdeveloper можно прочитать по этой ссылке : http://www.oracle.com/technetwork/developer-tools/jdev/introduction-to-groovy-128837.pdf
Более детально, но увы на английском языке о Groovy в Jdeveloper можно прочитать по этой ссылке : http://www.oracle.com/technetwork/developer-tools/jdev/introduction-to-groovy-128837.pdf
http://tsya.ru/
ОтветитьУдалить