суббота, 31 марта 2007 г.

APEX. Документация по JavaScript

Oracle Application Express для своих внутренних нужд (валидации, динамическое сокрытие элементов и т.д.) активно использует JavaScript. Для этих нужд был написан целый набор соответствующих API - некая обертка над стандартными функциями JavaScript. В ее существовании можно легко убедитсья просмотрев исходный код страницы, сгенерированной APEX.

Наконец-то появилось хоть какое-то описание об этой обертке! Так, в своем блоге, Карл Бэкстром (Carl Backstrom) оповестил о старте приложения "Javascript Functions" на apex.oracle.com, в рамках которого будут описываться все функции этой библиотеки. Перечислено 205 функций, но большинство из ниж пока без описания: есть только название. Но в некотрых случаях и этого достаточно, так как названия функций довольно информативные.

Подробнее...

пятница, 30 марта 2007 г.

Архитектура Application Express

Что же такое Oracle Application Express и из чего он состоит?
Oracle Application Express состоит из двух составляющих:

  • репозиторий метаданных, который хранит описание приложений (описание страниц, регионов, элементов управления и т.д.)
  • "движок", которых отражает и обрабатывает страницы (отрисовывает страницы, проверяет введенные пользователем данные и т.д.)
которые хранятся непосредственно в базе данных Oracle и , физически, состоят из набора таблиц и некоторого количества PL/SQL кода. При установке APEX создается отдельный Oracle пользователь/схема - FLOWS_<версия_apex>:
  • APEX 2.2: FLOWS_020200
  • APEX 3.0: FLOWS_030000

В "обязанности" движка Application Express входят следующие функции:
  • управление состоянием сессии
  • аутентификация
  • авторизация
  • управление страницами
  • обработка валидаций
Движок Application Express реализован на PL/SQL и доступен через web-браузер. Официально поддерживаемые браузеры:
  • APEX 2.2:
    • Microsoft Internet Explorer 6.0 и выше
    • Netscape Communicator 7.2 и выше
    • Mozilla 1.2 и выше
    • Mozilla 1.2 и выше
  • APEX 3.0:
    • Microsoft Internet Explorer 6.0 и выше
    • Firefox 1.0 и выше
Для доступа к приложениям/движку используется Oracle HTTP Server (Apache) и mod_plsql:

Архитектура Oracle Application Express

Приложения "собираются" в режиме реального времени из репозитария метаданных. Создание новых или расширение имеющихся приложений не вызывает необходимости в дополнительном коде. Вместо этого, создаются новые или изменяются имеющиеся метаданные, хранимые в таблицах Oracle.

Управление состоянием сессии выполняется асинхронно непосредственно в базе данных, что гарантирует:
  • минимальное использование ресурсов CPU сервера
  • не использование Dedicated соединения
Кроме того, каждая страница выводит результаты в отдельной сессии базы данных, что минимизирует использование ресурсов, так как они необходимы только при "сборке" страницы из метаданных движком Application Express.

Оригинал описания архитектуры Application Express взят с официальной странцы.

Подробнее...

вторник, 27 марта 2007 г.

APEX и APP_VERSION - 2: исправляем ошибку

Как уже упоминалось ранее, в последней версии Application Express не была исправлена ошибка, связанная с форматом даты последнего изменения приложения. То есть, при выводе даты последнего изменения приложения невозможно получить формат даты, используемый в Европе (DD.MM.YYYY).
Чтобы исправить эту досадную ситуацию, как оказалось, необходимо лишь небольшого знания структуры APEX. А именно того, что дата последнего изменения приложения хранится в поле APEX_APPLICATIONS.LAST_UPDATED_ON (APEX_APPLICATIONS - это взгляд (view), который доступен всем Oracle пользователям).
Далее уже дело техники... Зная, что страница с номером "0" (page 0) будет отражаться на всех страницах приложения, необходимо создать ее. Далее, добавляем на нее новый регион:

  • Type: "HTML"
  • Subtype: "HTML"
  • Title: "Version"
  • Region template: no template
  • Display point: After Header
После чего добавляем в регион новый элемент управления:
  • Item type: "Display Only"
  • Pick Display Only Type: "Display as Text (does not save state)"
  • Item Name: "P0_APP_VERSION"
  • Region: "Version"
  • Label: "Last update:"
  • Item Source: "SQL Query"
  • Item Source Value:
Select to_char(fl.LAST_UPDATED_ON, 'DD.MM.YYYY')
From APEX_APPLICATIONS fl
Where application_id = :APP_ID;

Можно пойти дальше, и используя взгляд Apex_Application_Pages и переменные :APP_ID, :APP_PAGE_ID, иметь дату последнего изменения каждой страницы. Подход тот же, за исключением запроса для "P0_APP_VERSION":

Select to_char(LAST_UPDATED_ON, 'DD.MON.YYYY')
From Apex_Application_Pages
Where application_id = :APP_ID
And page_id = :APP_PAGE_ID

Вот и все! Теперь дата изменения приложения будет выводиться в любом желаемом формате (вариации ограничены только фантазией и возможностями функции TO_CHAR)!

Подробнее...

APEX. Page 0

Зачастую в приложениях (в том числе и в APEX :) возникает необходимость отражать один и тот же набор элементов на нескольких страницах. Это может быть меню, какой-то заголовок, некое дерево, индикатор или что-то еще...
Что же делать в такой ситуации? Не плодить же один и тот же код (Copy-Paste)? Выход есть - в приложениях Application Express необходимо использовать страницу с номером 0 ("page 0")!
Нумерация страниц в APEX начинается с 1, но если обратить внимание на процесс создания страницы, то можно увидеть, что не смотря на то, что номер страницам присваивается автоматически, его можно редактировать. Соответственно, не составить никакого труда создать страницу с номером 0.
Особенность этой страницы заключается в том, что ее содержимое включается в содержимое всех остальных страниц приложения. Таким образом, помещенные на эту страницу регионы и элементы управления, будут выводиться на всех страницах приложения. Используя атрибут "Condition Type" можно контролировать вывод того или иного элемента управления или целого региона в зависимости от некоторых условий (например, вывод только для определенных страниц приложения).

Подробнее...

пятница, 23 марта 2007 г.

APEX и APP_VERSION

Как это не прискорбно, но в APEX 3.0 опять не поправили ошибку, связанную с форматом даты вывода в строке подстановке #APP_VERSION#.
Эту строку можно использовать в шаблонах страниц. Apex сам будет подставлять вместо этой строки значение, которое было указано в атрибуте приложения - Version ( Application ->Shared Components ->Edit Application Definition ).

Согласно документации, если в этом атрибуте прописать формат даты, то вместо
#APP_VERSION# будет подставляться дата последней модификации приложения. Поддерживается 3 формата: "YYYY.MM.DD", "MM.DD.YYYY", "DD.MM.YYYY". Однако, если первые два формата обрабатываются так, как нужно, то формат "DD.MM.YYYY" игнорируется и используется формат "MM.DD.YYYY".

Жаль, так как судя по форуму, об этой проблеме знают уже как минимум год.

Подробнее...

APEX - альтернатива Oracle Forms

До недавнего времени, альтернативой (приемником) Oracle Forms считался Oracle JDeveloper (вместе с Application Development Framework - ADF).
Но после выхода APEX 3.0 ситуация несколько изменилась: теперь Application Express так же рассматривается как альтернатива для Forms. Прямое доказательство можно обнаружить здесь, где выполняется небольшое сравнение архитектур этих средств разработки.

Подробнее...

четверг, 22 марта 2007 г.

APEX 3.0

Первый пост – и сразу хорошая новость: буквально на днях вышла новая версия Application Express! Очевидно, что смена версии с 2.2 на 3.0 должна означать значительные улучшения. Так и есть. Вот лишь часть из них:

  • печать в pdf
  • flash графики

  • новые типы контролов

  • поддержка кэширования

    и т.д.

Полный список улучшений можно посмотреть здесь.
Скачать APEX 3.0 можно здесь.

Подробнее...