Oracle apex инструкция на русском

Недавно я с удивлением обнаружил, что, оказывается, толковых туториалов по Oracle Application Express (он же APEX, он же апекс, но не путать с языком apex, который используется в Salesforce) в природе не существует.

Это не самая распространенная технология, конечно, но, тем не менее, довольно востребованная. Есть десятки блогов об апексе (англоязычные, в основном), пара тысяч вопросов на Stackoveflow, специальный раздел по апексу на официальных форумах оракла, сам апекс существует уже 15 лет и все время развивается. Я был уверен, что и хороших туториалов полно. Но нет!

Мне тут же пришла в голову гениальная мысль восполнить этот пробел.

Оглавление

Почему существующие туториалы — плохие
Вводная информация
Обзор IDE
    App builder
        Страница приложения
        Application properties
        Shared Components
        Page Designer
    SQL Workshop
        Object Browser
        SQL Commands

Почему существующие туториалы — плохие

Я немного поясню, почему я считаю существующие туториалы плохими. Апекс — это не язык программирования, это такой очень высокоуровневый инструмент разработки, ближайшим идейным аналогом которого я бы назвал MS Access. Соответственно, большая часть разработки на апексе состоит из работы с веб-интерфесом этой среды: нажимания на кнопки, перехода по ссылкам, заполнение полей с названиями компоментов, выбора значений из списков и так далее. Что делает типовой туториал? Он показывает скриншоты этих самых экранов с подписями «нажмите туда-то». При этом сама IDE достаточно удобная и понятная, почти все элементы снабжены справочными пояснениями, есть встроенная помощь. В итоге, если нужно объяснить пользователю, как создать приложение, в туториале будет большой скриншот, объясняющий, как нажать на кнопку «Create a new app». Вот, посмотрите сами на официальный оракловый туториал:

Скриншот примера туториала по апексу

Они бы еще объяснили со скриншотами, что «клик» — это однократное нажатие на левую кнопку манипулятора типа «мышь».
Конечно, полезная информация в таких туториалах тоже есть, но ее там крохи. Процентов на 80 туториалы состоят из таких вот скриншотов, причем по своему опыту я могу сказать, что человек, не читавший никаких туториалов вообще, самостоятельно найдет, как создать приложение, добавить страницу, поместить на нее отчет и так далее. А потом ему нужно будет организовать более-менее нетривиальное взаимодействие нескольких элементов апекса, и оказывается, что этот вопрос туториалом почти не покрывается. Приведу аналогию: вы только-только учитесь программировать, изучили переменные, массивы, циклы, условия, и получили задание, в рамках выполнения которого вам нужно отсортировать массив. Как-то отсорировать массив — достаточно просто, но как только задание усложнится до «отсортировать большой массив быстро«, окажется, что имеющихся у вас знаний недостаточно. Погуглив, покопав Stackoverflow и форумы, вы найдете алгоритм быстрой сортировки. Конечно, кто-то и сам переизобретет этот алгоритм рано или поздно, но более эффективным путем было бы сразу прочитать книжку с разбором типовых алгоритмов. И вот как раз такого набора «типовых алгоритмов» для апекса обычно нигде нет, а на помощь приходят те же самые метод научного тыка, поисковики, форумы и Stackoverflow (и, я надеюсь, этот туториал).

Вводная информация

Предполагается, что читатель знаком с Oracle Database версии хотя бы с 11-й, SQL, PL/SQL и особенно с тем, что такое EXECUTE IMMEDIATE и как оно работает.

IDE апекса значительно изменилась при переходе с версии 4.2 на 5.0 (релиз был как раз 4 года назад, в марте 2015-го). С тех пор IDE меняется мало, но иногда добавляются новые возможности. Я буду делать скриншоты на apex.oracle.com, где сейчас установлена версия 19.1, но если у вас где-то используется более ранняя версия (5.х, 18.х), вы без труда найдете нужный элемент, если только он не появился в более поздней версии, чем ваша.

Я начну с обзора наиболее часто используемых разделов IDE. Я тоже покажу несколько скриншотов. Куда же без них, раз всё здесь сделано из визуальных компонентов. Но их будет не так много, как в плохих туториалах, и в основном они будут в начальных главах, а дальше я буду просто указывать название раздела IDE, в котором находятся необходимые вещи. Сразу обращу ваше внимание, что это просто первое знакомство с IDE. Более подробная информация о том, когда на какую кнопку нажимать и где что смотреть, будет дана дальше, когда я перейду к конкретным темам.

Поехали.

Обзор IDE

Стартовый экран, который вы увидите сразу после входа в IDE:

Главная страница IDE

Главные элементы здесь — это 4 большие кликабельные картинки:

  1. «App Builder»: это, собственно, то место, где можно создавать приложения и где вы будете проводить до 99% времени.
  2. «SQL Workshop»: заменитель обычной IDE для работы с СУБД Oracle. Там вы можете посмотреть объекты БД (таблицы, индексы, пакеты, и т. п.) и выполнять SQL-запросы. Если у вас есть возможность делать все это через «обычные» IDE (вроде Oracle SQL Developer или PL/SQL Developer) — делайте через них. Тем не менее, этот раздел тоже может быть полезен и о нем я тоже расскажу.
  3. «Team Development»: инструменты для командной разработки. Честно говоря, я ни разу не видел, чтобы хоть кто-то ими пользовался на практике (включая меня). Любопытства ради я туда тоже заглядывал и совсем бесполезным этот раздел я бы не назвал, хотя и очень хочется.
  4. «App Gallery»: раздел с демо-приложениями. К тому моменту, когда он появился, я уже неплохо знал апекс и почти не заглядывал туда, но начинающим, думаю, это будет полезно. Там много разных простеньких приложений, на их примере можно изучать, как использовать те или иные возможности.

В меню в самом верху страницы продублированы эти же 4 пункта.

Кроме этого, есть еще несколько малополезных вещей: ниже есть некоторое количество статистической информации (типа наиболее часто редактируемых приложений или наиболее активных разработчиков). И есть колонка справа, где также немного статистики и дополнительных ссылок.

Рассмотрим App Builder и SQL Workshop подробнее.

App builder

Эта страница выглядит примерно вот так:

Основные элементы этой страницы: четыре большие кнопки как на предыдущей странице, список уже имеющихся приложений, правая колонка со списком последних измененных приложений и дополнительными действиями. Четыре кнопки — это:

  1. «Create»: создать новое приложение. Эта же функция продублирована чуть ниже (синяя кнопка «Create» над отчетом со списком приложений). Кнопка запускает мастер создания приложений.
  2. «Import»: импортировать приложение. Апекс позволяет переносить приложения с одного сервера на другой в виде текстовых файлов (которые, по сути, являются длииииными PL/SQL скриптами с вызовами функций создания всех элементов приложения).
  3. «Dashboard»: малополезное сборище статистики разработки приложений. Кто, когда, где, сколько изменений сделал. Думаю, даже вашему начальнику будет неинтересно туда смотреть.
  4. «Workspace Utilities»: набор дополнительных инструментов для управления приложением. Честно говоря, туда я тоже почти не заглядываю.

Так же хочу обратить ваше внимание на вот такую маленькую кнопочку в панели отчета:

Она переключает вид отчета с такого, как на скриншоте выше (с «картинками» приложений) на отчет в виде таблицы:

App builder в Oracle APEX

Похожие отчеты встречаются и в других разделах IDE. Я предпочитаю табличный вид, поэтому далее все скриншоты будут с ним.

Страница приложения

После того, как вы создадите приложение или откроете существующее, вы увидите следующую страницу (очень похожую на предыдущую по структуре):

Страница приложения

На эту страницу вы будете заходить очень часто, и полезных функций здесь тоже очень много. Большие кнопки с картинками:

  1. «Run Application»: эта кнопка запускает ваше приложение. Оно откроется в отдельном окне. По умолчанию — именно в окне, а не во вкладке браузера, но это поведение настраивается (об этом позже).
  2. «Supporting Objects»: этот раздел служит для решения вопросов, связанных с установкой, обновлением и удалением приложений. Обычно им почти не пользуются.
  3. «Shared Components»: я бы сказал, это первый или второй по важности раздел IDE (еще один — редактор страниц). Если вы будете много разрабатывать на апексе, то очень скоро заметите, что выучили структуру этого раздела как «Отче наш».
  4. «Utilities»: еще один набор (мало)полезных вспомогательных функций.
  5. «Export / Import»: позволяет экспортировать или импортировать приложения или отдельные части приложения.

И две дополнительные кнопки, которые обведены оранжевой рамкой на скриншоте:

  1. Кнопка «Edit application properties». Нажав на нее, вы попадете на страницу настроек свойств приложения. Возможно, вы не будете заходить в этот раздел часто, но он очень важен, потому что там хранятся настройки приложения, от которых много чего зависит. Далее, если я буду упоминать где-то «свойства приложения» — ищите их в этом разделе.
  2. В кои-то веки полезная функция в правой панели: «Delete this Application». В то время как многие функции в апексе продублированы в разных местах, эта функция есть только здесь, и с непривычки первый раз ее найти сложно.

Application properties

Здесь прежде всего интересна организация доступа к большому количеству настроек.

Application properties

Настройки сгруппированы в 4 группы (см. верхнюю рамку), а в каждой группе есть еще по нескольку подгрупп (см. нижнюю рамку), у каждой группы есть свое название. Похожим образом настройки организованы в очень многих местах в апексе. В дальнейшем я буду просто указывать путь к нужной настройке примерно так: «Application Properties» → «Definition» → «Name» → «Version».

Также, если вы посмотрите на хлебные крошки вверху страницы, вы увидите, что там написано «Edit Application Definition», хотя заходили вы, казалось бы, в «Application Properties». Просто не обращайте внимания.

Shared Components

Shared Components — это наше всё. Этот раздел является промежуточным пунктом на пути к конкретным компонентам приложений. Покажу здесь общий вид, просто чтобы вы представляли, где что находится:

Shared Components

Совсем неважной ерунды здесь почти нет. Каждый раздел вам так или иначе может понадобиться. Названия разделов говорят сами за себя, добавить почти нечего:

  1. «Application Logic»: средства управления логикой приложения.
  2. «Security»: вопросы безопасности и управления доступом к приложению целиком и к отдельным компонентам в зависимости от ролей пользователей.
  3. «Other Components»: это «все остальные компоненты». По-хорошему, этому разделу следовало бы быть последним, но он почему-то здесь. А подпункт «List of Values» я бы вообще в Application Logic перенес.
  4. «Navigation»: компоненты приложения для обеспечения навигации.
  5. «User Interface»: настройка внешнего вида приложения, стилей и т. п.
  6. «Files»: раздел для файлов (например, css или js). Незаменим, если у вас нет доступа к ОС, и все равно удобен, даже если доступ есть.
  7. «Data Sources»: работа с источниками данных (для загрузки и выгрузки).
  8. «Reports»: отчеты, очевидно.
  9. «Globalization»: раздел для перевода приложений на другие языки.

Плач Ярославны о переводе приложений в апексе

Перевод приложений в апексе сделан просто ужасно (честно, я пытался придумать, как сделать его хуже — и не смог), и нет никаких свидетельств того, что в будущем станет лучше.
Ужасно с точки зрения архитектуры и удобства работы над переводом. Могу только сказать разработчикам: «Спасибо, что хотя бы без багов» (но тут как посмотреть: переводы устроены так, что некоторые особенности их работы мало чем отличаются от багов).
Приходится с этим жить.

Page Designer

Page Designer — редактор страниц. Это, наверное, главное место в IDE. Здесь вы будете создавать то, с чем напрямую взаимодействует пользователь, — страницы приложения. Здесь просто куча функций, почти как в кабине самолета. Чтобы попасть в Page Designer, нужно кликнуть по ссылке с названием страницы на странице приложения (извините за тавтологию). На скриншоте разноцветными рамками выделены основные составляющие редактора:

Page Designer

Панель кнопок вверху (в красной рамке):

  • Поле для ввода номера страницы, стрелки вверх и вниз и кнопка «Go»: навигация по страницам приложения. Каждая страница имеет номер, тут вы можете либо ввести номер нужной страницы, либо стрелками перейти к следующей/предыдущей, либо нажать на самую левую кнопку и в появившемся модальном окне выбрать страницу из списка.
  • Кнопка с замком: позволяет заблокировать страницу от изменений другими разработчиками.
  • Кнопки Undo/Redo
  • Две кнопки с доступом к вспомогательным функциям.
  • Кнопка-ссылка на Shared Components. Полезная, потому что туда-сюда ходить приходится постоянно. (Я сам, правда, предпочитаю просто держать Shared Components в отдельной вкладке — так еще быстрее).
  • Кнопка «Save»: сохраняет изменения на странице.
  • Кнопка «Run»: «запускает» страницу, то есть вы ее видите так, как ее потом увидит пользователь.

Слева (в оранжевой рамке) — панель с компонентами страницы. В этой панели есть 4 закладки:

  • «Rendering»: показывает, из каких составных частей состоит страница, какие процессы выполняются при рендеринге;
  • «Dynamic Actions»: действия, выполняемые на клиенте (например, обработчики событий javascript);
  • «Processing»: серверные процессы, связанные со страницей;
  • «Page Shared Components»: для прямого перехода к используемым на странице общим компонентам (те самые Shared Components).

По центру (в зеленой рамке) — панель, содержащая много разнородной информации. В верхней части панели есть 5 закладок, на которых можно найти:

  • «Layout»: показывает примерное расположение компонентов на странице;
  • «Component view»: по большому счету, это пережиток прошлого (похожим образом выглядел редактор страниц в 4-й версии апекса, в версии 5.0 или 5.1 этот старый «вид» получил статус deprecated, хотя и использовался параллельно с новым, а теперь тут осталась лишь его бледная тень);
  • «Messages»: тут будут сообщения об ошибках (например, сообщение о том, что не заполнено какое-нибудь обязательное поле);
  • «Page Search»: поиск на странице. Ищет искомую строку во всех местах, где вы можете что-то вводить (в коде, в текстах сообщений, в названиях компонентов и т. д.);
  • «Help»: помощь. Довольно толковая, хотя и не всегда. Можно выбрать какое-нибудь свойство компонента в левой панели и посмотреть его описание.

Также центральная панель имеет снизу еще одну дополнительную панель, которую можно использовать для быстрого добавления компонентов на страницу.

Справа (в синей рамке) — панель свойств. Тут все просто — она показывает свойства выбранного в данный момент компонента. Часть свойств компонентов — простые: текст, число, значение из списка. Но у более сложных свойств компонентов есть дополнительные интерфейсные возможности, сильно облегчающие жизнь при работе с ними.
Свойство, представляющее собой большой текст. Например, код на PL/SQL или JavaScript. Выглядит так:

Memo property screenshot

Можно писать код прямо так, в этом поле, а можно щелкнуть по кнопке вверху страва, и тогда откроется модальное окно с редактором кода, где доступны подсветка синтаксиса (для SQL, JavaScript, CSS, HTML), поиск в тексте и другие функции редактора.

Свойство — Shared Component. Если свойство является одним из компонентов приложения (Shared Component), то выбирать конкретный компонент можно из списка, а нажав на кнопку справа от списка

Go to Shared Components button

можно переместиться в раздел Shared Components непосредственно в свойства выбранного компонента (чтобы, например, их изменить).

Если у вас значение свойства выбирается из списка, иногда справа можно увидеть другую дополнительную кнопку:

quick pick

Она называется «Quick pick» и используется, когда вариантов очень много. «Quick pick» дает чуть более быстрый доступ к небольшому подмножеству вариантов — как правило, там находятся наиболее часто используемые варианты. «Часто используемые варианты» здесь — не вами используемые, а «вообще». Это жестко заданный список и со временем не меняется.

SQL Workshop

Как я уже говорил, SQL Workshop — это заменитель обычной IDE (если у вас по каким-то причинам нет возможности ее использовать).

SQL Workshop

Он состоит из 5 разделов:

  1. «Object Browser»: браузер объектов БД (таблиц, пакетов, функций и процедур, индексов, сиквенсов и прочего);
  2. «SQL Commands»: раздел, где можно выполнить любой SQL запрос или PL/SQL код;
  3. «SQL Scripts»: здесь можно загрузить текстовый файл со скриптом и выполнить его;
  4. «Utilities»: разные дополнительные возможности, связанные с БД: например, есть графический построитель запросов (но не только);
  5. «RESTful Services»: создание REST сервисов. Апекс тоже имеет REST (причем давно, еще в версии 4.2 они уже были)!

Object Browser

Object Browser

Здесь есть все, что нужно для работы с объектами БД: создание, изменение, удаление, просмотр свойств объектов, ввод данных в таблицы — для всего этого в этом разделе есть графический интерфейс. Вверху слева в выпадающем списке можно выбрать тип объектов (на скриншоте показаны таблицы), вверху справа можно выбрать схему, объекты которой вы можете посмотреть. В списке доступных схем вы не увидите все схемы сразу — это нормально. Как сделать схемы видимыми в апексе, я расскажу, когда дойду до администрирования.
Также я не вижу большого смысла описывать этот раздел подробнее: если вы знаете, что значит фраза «добавить столбец в таблицу», вы без труда догадаетесь, когда вам нужно будет нажимать на кнопку «Add Column» и что вас может ждать дальше.

SQL Commands

В этом разделе можно выполнять SQL запросы и PL/SQL код.

SQL Commands

По возможностям этот раздел почти не уступает полноценным средам разработки. Не хватает разве что автодополнения кода и подсветки синтаксиса (а в Object Browser подсветка синтаксиса есть, кстати). Имеющиеся возможности:

  • выполнение SQL, в том числе с параметрами (для ввода значений параметров появится отдельное окно);
  • выполнение PL/SQL с возможностью вывода текста через dbms_output (вывод появится в окне ниже);
  • выполнение только выделенной части кода (выделить текст мышкой, затем «Run»);
  • просмотр плана запроса;
  • сохранение запросов.

***

Это, как вы понимаете, далеко не всё, что есть в IDE APEX, но на данном этапе не имеет смысла углубляться дальше. Отдельные элементы интерфейса апекса будут разобраны более подробно в темах, которые имеют к ним непосредственное отношение.

P. S. Я пока не могу сказать, что четко продумал структуру этого туториала, возможно, в будущем я добавлю еще скриншоты и описания в эту статью или опишу дополнительные возможности в других статьях. Осталось придумать, как оповещать заинтересованных о значительных правках старых статей.

Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку

В Oracle APEX вы можете создать приложение в соответствии с одним из 3-х видов:

  • Desktop Application

  • Websheet Application

  • Mobile Application

Для начинающих с Oracle APEX лучше всего сделать пример с Database Desktop Application. На самом деле это приложение работает на web платформе но имеет интерфейс довольно похожий на обычное приложение Desktop.

В данной статье я покажу вам как создать приложение Hello World Oracle Apex в форме Database Desktop Application.

Создать Database Desktop Application

Здесь мы создаем новый Database Desktop Application:

Нажмите на Create чтобы создать новое приложение:

Введите название приложения:

  • Hello Database Desktop Application

По умолчанию с приложением создается страница Home, вы можете добавить другие странцы в приложение нажатием на «Add Page». Лучше добавить их после.

Ваше приложение создано, имеет ID = 115, и 2 страницы Login & Home.

На данный момент страница Home не имеет дизайн, но вы можете нажать на знак чтобы протестировать веб страницу.

Создать вашу первую страницу

Далее, мы добавляем страницу, отображающую список департаментов (Таблица DEPT) и страницу для создания и изменения информации департаментов. Для простоты, мы создаем страницу по имеющемуся шаблону в Oracle APEX, в следующей части я покажу вам как создать новую страницу с пустой страницы, чтобы вы поняли лучше.

Выберите «Form on a Table with Report». С этим Template, Oracle APEX создаст для вас 2 страницы содержащие страницу со списком департаментов (DEPT) и форму для создания (и изменения) информации департаметов.

Для начала, Oracle APEX требует вас ввести информацию для страницы списка департаментов (DEPT), Page Number это важно атрибут, который вам нужно запомнить. Эту страницу я даю номер Page Number = 2. (Заметка: Страница Home уже имеет Page Number = 1).

Выбрать таблицу DEPT:

Ввести информацию для Menu:

  • New Navigation Menu Entry: Dept List (2)

Выбрать столбцы для отображения:

Далее это страница для ввода информации департамента, здесь я даю номер Page Number = 3.

Page Mode:

  • Normal: То есть когда вы нажимаете на создать новый департамент, веб страница перейдет на новую странцу для ввода информации департамента.

  • Model Dialog: То есть когда вы нажимаете на создать новый департамент, появляется Dialog для ввода информации.

Выбрать столбец основной ключ (Primary Key):

Когда вы создаете новую запись DEPT, столб DEPTNO будет иметь автоматическое значение прикрепленное, с помощью DEPT_SEQ sequence.

Две страницы созданы, для начала попробуйте запустить веб страницу.

OK, все идеально. Возвращаемся к дизайну и узнаем что создал Oracle APEX.

Oracle APEX создал для вс 2 страницы в форме «Interactive Report» и «DML Form».

Нажмите на страницу «Form on DEPT (3)», чтобы изменить.

В иллюстрации выше вы увидите экран дизайна, разделенный на 3 части:

  • Объекты страницы, включая регионы (Regions), Buttons, процессирования (Processing),…

  • Интерфейс страницы. Обычная страница имеет 6 регионов :

    • PAGE HEADER
    • PAGE NAVIGATION
    • BREADCRUMB BAR
    • CONTENT BODY
    • FOOTER
    • INLINE DIALOGS
  • Когда вы выбираете объект страницы в части 1, его атрибуты отображаются в части 3.

Например: Вы нажимаете на объект PAGE, и меняете атрибут Page Mode в «Model Dialog». И нажимаете save, как в иллюстрации ниже:

И перезапустите веб страницу.

Откроется Dialog позволяющий вам ввести информацию нового департамента.

Создать страницу сначала

В верхней части я ознакомил вас с быстрым способом создать веб страницу с процессирующими кодами автоматические созданные с помощью Oracle APEX. Чтобы лучше понять Oracle APEX, в этой части я пересоздам пример выше с самого начала, не используя Template (шаблоны) имеющиеся в Oracle APEX.

Это модель 2 страниц, которые я создам:

  • Create Page

Выберите пустую страницу (blank page):

Страница списка департаментов (DEPT) будет поставлена на Menu.

Создана пустая страница. Мы создадим регион отображающий список департаментов, этот регион будет находиться в «Content Body».

Создан новый регион (region).

Введите информацию созданных вами регионов:

  • Title: Dept List

  • Type: Interactive Report

  • Source SQL Query: Select DEPTNO, DNAME, LOC from DEPT

  • SAVE

Теперь вы можете нажать на RUN () для теста.

Вам нужен еще один столбец содержащий знаки изменения записи, как в иллюстрации ниже:

Выберите Attributes региона «Dept List». И настройте атрибуты как в иллюстрации ниже:

Link Column = Link to Single Row View

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

Link Column = Link to Custom Target

Используйте перейти на вашу кастомизированную странцу, чтобы отобразить информацию записи. (Будет упомянуто позже).

Перезапустите вашу веб страницу.

Веб страница перейдет на страницу по умолчанию, отображая информцию записи, которую вы только что выбрали.

Form

Далее мы создаем страницу вида Form, когда вы нажимаете на изменить или создать департамент, она перейдет на эту страницу.

Создана пустая страница, мы создадим регион содержащий Form.

Ввести информацию для нового региона:

  • Title: Form on Dept

  • Type: Static Content

Заметка: С формой «Region Type = Static Content«. Вам нужно создать Item для этого региона, и написать обработки для отображения и записи данных в DB.

Мы создадим 3 поля (field):

  • Hidden: DEPTNO

  • Text Field: DNAME

  • Text Field: LOC

Перетащите объект Hidden в регион ITEMS как в иллюстрации ниже:

Настроить атрибуты для Item:

Индентично, создайте 2 TEXT-FIELD:

Тест:

Когда пользователь выбирает запись на странице списка (Страница 4) для изменения, она перейдет на страницу Form (Страница 5) и передаст ID записи. Вам нужно написать Process Pre-Rendering) на странице 5 чтобы загрузить данные и отобразить на Form:

Создать Process в:

  • Pre-Rendering/After Header

Process (Процесс) вызывается перед отображением страницы.

Ввод:

  • Name: Fetch/load row From DEPT

  • Type: Automatic Row Fetch

  • Table Name: DEPT

  • Primary Key Column: DEPTNO

  • Primary Key Item: P5_DEPTNO

Вернитесь на страницу 4 (Dept List (4)) чтобы создать параметры переданные со страницы 4 на страницу 5.

Сохранить и тестировать веб страницу:

Далее мы добавляем «функции создания» и «функции сохранения записи» как в иллюстрации ниже:

На странице 4:

Далее перейдите на страницу 5.

Перетащить Button в позиции на экране дизайна как в иллюстрации ниже:

При нажатии на CANCEL на странице 5, вебсайт перейдет на страницу 4.

Настроить атрибуты для кнопки CANCEL:

  • Button Name: CANCEL

  • Label: Cancel

  • Action: Redirect to Page in this Application

  • DELETE_IMMEDIATELY

При нажатии на кнопку DELETE_IMMEDIATELY, программа сразу удалит запись без спроса. Мы настроим атрибуты для данной кнопки (button):

  • Button Name: DELETE_IMMEDIATELY

  • Label: Delete (Immediately)

  • Action: Submit Page

  • Database Action: SQL DELETE Action

Button отобразится если P5_DEPTNO не null:

  • Condition Type: Item not null

  • Condition Item: P5_DEPTNO

  • DELETE_CONFIRM

При нажатии на эту кнопку , приложение должно спросить пользователя хочет ли он удалить эту запись или нет.

Настроит атрибуты для button DELETE_CONFIRM:

  • Button Name: DELETE_CONFIRM

  • Label: Delete (confirm)

  • Action: Redirect to URL

  • Target: javascript:apex.confirm(‘Are you sure?’,’DELETE_CONFIRM’);

  • Database Action: SQL DELETE action

Условия для отображения этого button на странице.

  • Condition Type: Item is NOT NULL

  • Condition Item: P5_DEPTNO

Примечание:

apex.confirm(text, BUTTON_NAME) это функция javascript имеющаяся в APEX, отображает Dialog запрашивая пользователя подтвердить действие, перед выполнением действия определенного в BUTTON_NAME.

Button отобразится на веб странице при P5_DEPTNO не null.

Вы так же можете определить переменную javascript и использовать ее полностью на веб странице.

// Declare a variable named htmldb_delete_message
var htmldb_delete_message='Would you like to perform this delete action?';

// Or:
// "DELETE_CONFIRM_MSG" is a constant available in APEX.
// It has value: Would you like to delete this thực action?


var htmldb_delete_message='"DELETE_CONFIRM_MSG"';


// Then can use this variable in the whole page.

apex.confirm(htmldb_delete_message,'DELETE_CONFIRM');

  • SAVE_EDIT

Button отобразится для пользователя при изменении готовой записи в DB (создает команду Update в DB).

  • Button Name: SAVE_EDIT

  • Label: Save (edit)

  • Action: Submit Page

  • Database Action: SQL UPDATE action

Условия для отображения этого button на странице.

  • Condition Type: Item is NOT NULL

  • Condition Item: P5_DEPTNO

  • SAVE_CREATE

  • Button Name: SAVE_CREATE

  • Label: Save (create)

  • Action: Submit Page

  • Database Action: SQL INSERT action

  • Condition

    • Type: Item is NULL
    • Item: P5_DEPTNO

  • Process

Далее, мы добавляем 3 Process (Процесса).

  • Get PK: Проверить прикреплено ли значение к полю P5_DEPTNO, если нет то прикрепляется значение из DEPT_SEQ (Используется в случае Insert).

  • Process Row of Dept: Выполняется действие (Insert, Update или Delete).

  • Reset Page: Удалить статусы.

Создать новый Process с названием «Get PK», и ввести значения атрибута:

  • Name: Get PK

  • Type: PL/SQL Code

  • PL/SQL Code:

begin
    if :P5_DEPTNO is null then
        select DEPT_SEQ.nextval
          into :P5_DEPTNO
          from dual;
    end if;
end;

Далее вы создаете Process с названием «Process Row of DEPT» с атрибутами:

  • Name: Process Row of DEPT

  • Type: Automatic Row Processing (DML)

  • Table Name: DEPT

  • Primary Key Column: DEPTNO

  • Primary Key Item: P5_DEPTNO

  • Support Operations:

    • Insert
    • Update
    • Delete

Далее вы создаете Process с названием «Reset Page» и конфигурируете атрибут «Используется только для удаления записи».

Условия для выполнения данного Process это request со словом «DELETE», это означает он будет выполнен когда вы нажимаете на button DELETE_IMMEDIATELY или DELETE_CONFIRM.

После выполнения Process (Insert, update, delete) на странице 5, чтобы перейти на страницу 4, вам нужен еще процесс на «After Processing».

Теперь вы можете SAVE (сохранить) изменения на экране дизайна и попробовать запустить приложение:

В посте рассматривается краткий обзор среды разработки Oracle APEX, пошаговая инструкция установки и настройки APEX версии 20.2 и ORDS версии 20.3 на Oracle Database 18c Express Edition.

Краткий обзор среды
разработки
APEX.

Oracle Application Express (APEX) – это low-code платформа для разработки функциональных, масштабируемых и безопасных web-приложений. На сегодняшний день последней актуальной версией APEX является Oracle APEX 20.2. Данная версия выпущена в октябре 2020 года. Для установки и работы с APEX 20.2 в Oracle Database 18c Express Edition необходимо понимать принцип работы новой опции Oracle Database – Multitenant. Начиная с Oracle Database 12с поддерживается новая архитектура – Multitenant, которая предоставляет возможность использовать множество баз данных для консолидации их в составе единой и главной базы данных. Такое объединение упрощает задачи администрирования баз данных. Единая и главная база данных используется в качестве платформы и называется контейнерная база данных (Container Database – CDB), а база данных из множества работающих в составе контейнерной базы данных называется подключаемой базой данных (Pluggable Database – PDB). Архитектура Multitenat позволяет создать в Oracle Database 18с Express Edition одну CDB базу и до трех PDB баз. По умолчанию в Oracle Database 18с Express Edition APEX отсутствует. В связи с этим, для установки и работы с APEX необходимо подключиться к PDB и выполнять установку и настройку APEX. Ниже пошагово описывается процесс установки и настройки APEX 20.2 и Oracle REST Data Services версии 20.3 (далее ORDS) на Oracle Database 18c Express Edition, работающей на виртуальной машине под управлением операционной системы Oracle Linux. При использовании APEX 20.2 минимальная версия ORDS должна быть 19.1. Нижеописанные шаги также будут работать с Oracle Database 18c Express Edition установленной на операционную систему Windows.

Для информации: Кроме установки и использования платформы Oracle APEX на локальном компьютере, также есть возможность установить и использовать ее для разработки веб-приложений на бесплатном сервисе Always Free Service облака Oracle или же запросить и настроить свое рабочее пространство в бесплатном облачном сервисе apex.oracle.com. В данном посте рассматривается установка и доступ к среде разработки APEX на локальном компьютере.

Установка Oracle APEX 20.2. Предполагается, что есть успешно установленная Oracle Database 18c Express Edition. При необходимости, можно установить Oracle Database 18c Express Edition, используя следующие материалы: Установка Oracle Database 18c Express Edition на Linux и Установка Oracle Database 18c Express Edition на Windows. В посте подключение к PDB описываются различные способы подключения и работы в PDB.

Шаг 1. Установка
APEX
на
Oracle Database 18c Express Edition

Oracle APEX распространяется бесплатно и установочный файл можно скачать с официального сайта Oracle – https://www.oracle.com/tools/downloads/apex-downloads.html

Для скачивания на портале Oracle необходимо наличие учетной записи с паролем. При ее отсутствии осуществляется регистрация новой учетной записи.

Пройдя по ссылке, выбирается версия Oracle APEX 20.2 – All languages.

После ознакомления и принятия условий лицензирования необходимо поставить галочку в разделе I reviewed and accept the Oracle License Agreement.

Нажать на «Download apex_20_2.zip». Запускается скачивание zip архива (apex_20.2.zip). Объем архива 228 Мб.

После завершения скачивания архив apex_20.2.zip нужно скопировать в директорию /home/oracle/ операционной системы Oracle Linux, работающей на виртуальной машине. Выполняется разархивирование файла и проверка содержимого архива:

[oracle@dushanbe ~]$ pwd
/home/oracle
[oracle@dushanbe ~]$ ls
apex_20.2.zip  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[oracle@dushanbe ~]$ ls -l apex_20.2.zip 
-rw-rw-rw-. 1 oracle oracle 239868057 Jan 14 22:50 apex_20.2.zip
[oracle@dushanbe ~]# unzip apex_20.2.zip 
[oracle@dushanbe ~]$ ls 
apex  apex_20.2.zip  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[oracle@dushanbe ~]$ cd apex
[oracle@dushanbe apex]$ pwd
/home/oracle/apex
[oracle@dushanbe apex]$ ls
apexins1.sql         apex_rest_config_cdb.sql    apxdevrm_cdb.sql    apxexit.sql         apxremov_nocdb.sql    apxrtins_nocdb.sql  core          dbcsins.sql
apexins2.sql         apex_rest_config_core.sql   apxdevrm_nocdb.sql  apxpatch_cdb.sql    apxremov.sql          apxrtins.sql        coreins2.sql  devins.sql
apexins3.sql         apex_rest_config_nocdb.sql  apxdevrm.sql        apxpatch_nocdb.sql  apxrtins1.sql         apxsdoins.sql       coreins3.sql  images
apexins_cdb.sql      apex_rest_config.sql        apxdvins_cdb.sql    apxpatch.sql        apxrtins2.sql         apxsilentins.sql    coreins4.sql  load_trans.sql
apexins_cdb_upg.sql  appins.sql                  apxdvins_nocdb.sql  apxremov1.sql       apxrtins3.sql         apxupgrd.sql        coreins5.sql  utilities
apexins_nocdb.sql    apxappcon.sql               apxdvins.sql        apxremov2.sql       apxrtins_cdb.sql      builder             coreins.sql
apexins.sql          apxchpwd.sql                apxdwngrd.sql       apxremov_cdb.sql    apxrtins_cdb_upg.sql  catapx.sql          dbcsconf.sql
[oracle@dushanbe apex]$

После разархивирования создалась папка apex с множеством sql скриптов для создания и настройки APEX. Необходимо из директории со скриптами (/home/oracle/apex/) подключиться к PDB XEPDB1 и начать установку APEX:

[oracle@dushanbe apex]$ sqlplus sys as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Sat Aug 8 11:21:28 2020
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
Enter password: 
Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> show pdbs;
 CON_ID  CON_NAME  OPEN MODE  RESTRICTED
 --------------------------------------
    2    PDB$SEED  READ ONLY      NO  
    3    XEPDB1    READ WRITE     NO
SQL> alter session set container = XEPDB1;
Session altered.
SQL> show pdbs;
 CON_ID  CON_NAME  OPEN MODE  RESTRICTED
 --------------------------------------
    3    XEPDB1    READ WRITE     NO 
 SQL>

Подключение к XEPDB1 прошло успешно. Запускается скрипт apexins.sql для установки APEX со следующим синтаксисом:

@apexins.sql tablespace_apex tablespace_files tablespace_temp images

где, tablespace_apex – название табличного пространства для пользователя приложения APEX. tablespace_files – название табличного пространства для пользователя файлов APEX. tablespace_temp – название временного табличного пространства. images – виртуальная директория для изображений APEX. Для обеспечения корректного обновления APEX в будущем необходимо задать значение для этого параметра равное /i/.

Скрипт apexins.sql запускается со следующими значениями параметров:

SQL> @apexins.sql SYSAUX SYSAUX TEMP /i/
...
<Эта часть лога не приведена>
...
#
Actions in Phase 3:
#
    ok 1 - BEGIN                                                        |   0.00
    ok 2 - Computing Pub Syn Dependents                                 |   0.00
    ok 3 - Upgrade Hot Metadata and Switch Schemas                      |   0.00
    ok 4 - Removing Jobs                                                |   0.00
    ok 5 - Creating Public Synonyms                                     |   0.03
    ok 6 - Granting Public Synonyms                                     |   0.10
    ok 7 - Granting to FLOWS_FILES                                      |   0.00
    ok 8 - Creating FLOWS_FILES grants and synonyms                     |   0.02
    ok 9 - Creating Jobs                                                |   0.00
    ok 10 - Creating Dev Jobs                                           |   0.00
    ok 11 - Installing FLOWS_FILES Objects                              |   0.00
    ok 12 - Installing APEX$SESSION Context                             |   0.00
    ok 13 - Recompiling APEX_200200                                     |   0.05
    ok 14 - Installing APEX REST Config                                 |   0.02
    ok 15 - Set Loaded/Upgraded in Registry                             |   1.32
    ok 16 - Removing Unused SYS Objects                                 |   0.00
    ok 17 - Validating Installation                                     |   0.03
ok 3 - 17 actions passed, 0 actions failed                              |   1.57

PL/SQL procedure successfully completed.

Thank you for installing Oracle Application Express 20.2.0.00.20

Oracle Application Express is installed in the APEX_200200 schema.
The structure of the link to the Application Express administration services is as follows:

http://host:port/ords/apex_admin

The structure of the link to the Application Express development interface is as follows:
http://host:port/ords

timing for: Phase 3 (Switch)
Elapsed: 00:01:34.83
timing for: Complete Installation
Elapsed: 00:14:57.61

PL/SQL procedure successfully completed.
1 row selected.
…null1.sql
SYS>

Выше приводится последняя часть лога установки APEX, так как система генерирует очень много строк лога.  Лог показывает, что установка прошла успешно и заняла 14 мин 57 секунд времени.

Шаг
2. Настройки и подключение к
APEX

После успешного
завершения установки необходимо создать пользователя с административными
правами в APEX
и
назначить ему пароль, настроить ORDS
и создать рабочее пространство для разработки приложений.

Для создания
администратора и назначения ему пароля запускается скрипт apxchpwd.sql в PDB. Данный скрипт в будущем также
может быть использован для сброса пароля существующему администратору APEX.

После запуска скрипта система предложит ввести пользовательское имя для администратора (login), его email и пароль. По умолчанию система предлагает ADMIN для пользовательского имени администратора (login). Если необходимо оставить пользователя по умолчанию, то поле Enter the administrator’s username [ADMIN] следует оставить пустым и нажать Enter. В поле Enter ADMIN’s email [ADMIN] можно указать свою электронную почту. В поле Enter ADMIN’s password [] надо назначить пароль администратора, который будет удовлетворять следующим требованиям:

  • Пароль должен содержать не менее 6 символов.
  • Пароль должен содержать не менее одного буквенного символа.
  • Пароль должен содержать не менее одного символа пунктуации:
    (!”#$%&()“*+,-/:;?_).
  • Пароль должен содержать не менее одного заглавного буквенного символа.
  • Пароль должен содержать не менее одного строчного буквенного символа.

Иначе система выдаст следующую ошибку:

ORA-20001: Password validation failed.
ORA-06512: at line 30
ORA-06512: at "APEX_200100.WWV_FLOW_FND_USER_INT", line 3744
ORA-06512: at line 20 

Запускается скрипт для создания администратора с именем ADMIN и назначения его email и пароля:

SYS> @apxchpwd.sql            
…set_appun.sql
======================================================================================
This script can be used to change the password of an Application Express
instance administrator. If the user does not yet exist, a user record will be created.
======================================================================================
Enter the administrator's username [ADMIN] 
User "ADMIN" does not yet exist and will be created.
Enter ADMIN's email [ADMIN] test@***.tj
Enter ADMIN's password [] 
Created instance administrator ADMIN.
SYS>

Пользователь успешно создан.

Также важно настроить учетную запись APEX_PUBLIC_USER для управления Oracle Application Express. Учетная запись APEX_PUBLIC_USER создается со случайным и недоступным паролем во время установки Oracle Application Express. Если же выполняется обновление (upgrade) с предыдущей версии Oracle Application Express, то приведенные ниже две команды не являются необходимыми:

SYS> ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
SYS> ALTER USER APEX_PUBLIC_USER IDENTIFIED BY new_password;

Для новой установки APEX (а не обновление)  необходимо запустить скрипт apex_rest_config.sql для настройки RESTful сервисов. После запуска потребуется назначить пароль для учетных записей APEX_LISTENER, APEX_REST_PUBLIC_USER. Ниже во время установки и настройки ORDS будет необходимо вводить пароли этих учетных записей.

SYS> @apex_rest_config.sql
Enter a password for the APEX_LISTENER user              [] 
Enter a password for the APEX_REST_PUBLIC_USER user              [] 
…set_appun.sql
…setting session environment
…create APEX_LISTENER and APEX_REST_PUBLIC_USER users
SYS> 

Настройка ORDS

В APEX версии 20.2 уже не поддерживается Web Listener с типом Embedded PL/SQL Gateway и Oracle HTTP Server. В связи с этим, необходимо установить и использовать Oracle REST Data Services (ORDS). Далее описывается процесс установки и базовой настройки APEX с ORDS версии 20.3.

Для начала, необходимо скачать ORDS. Oracle ORDS распространяется бесплатно и установочный файл можно скачать с официального сайта Oracle –  https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads.html

Для скачивания на портале Oracle необходимо наличие учетной записи с
паролем. При ее отсутствии осуществляется регистрация новой учетной записи.

Пройдя по ссылке, скачивается файл Oracle REST Data Services.

После ознакомления и принятия условий лицензирования необходимо поставить галочку в разделе I reviewed and accept the Oracle License Agreement.

Нажать на «Download ords-20.3.0.301.1819.zip». Запускается скачивание zip архива (ords-20.3.0.301.1819.zip). Объем архива 70 Мб.

После завершения скачивания необходимо создать директорию ords в /home/oracle/ и архив ords-20.3.0.301.1819.zip нужно скопировать в созданную директорию /home/oracle/ords операционной системы Oracle Linux, работающей на виртуальной машине. Выполняется разархивирование файла и проверка содержимого архива:

[oracle@dushanbe ~]$ pwd 
/home/oracle
[oracle@dushanbe ~]$ ls 
apex  apex_20.2.zip  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[oracle@dushanbe ~]$ mkdir ords
[oracle@dushanbe ~]$ cd ords
[oracle@dushanbe ords]$ pwd
/home/oracle/ords
[oracle@dushanbe ords]$ ls -l
total 70440
-rw-rw-rw-. 1 oracle oracle 72130015 Jan 15 00:00 ords-20.3.0.301.1819.zip
[oracle@dushanbe ords]$ 
[oracle@dushanbe ords]$ unzip ords-20.3.0.301.1819.zip 
[oracle@dushanbe ords]$ ls -l
total 139944
drwxr-xr-x. 3 oracle oracle       21 Oct 27 18:43 docs
drwxrwxrwx. 7 oracle oracle       93 Oct 23 14:42 examples
-rw-rw-rw-. 1 oracle oracle    40033 Oct 23 14:42 index.html
drwxrwxrwx. 2 oracle oracle       43 Oct 23 14:42 installer
-rw-rw-rw-. 1 oracle oracle 72130015 Jan 15 00:00 ords-20.3.0.301.1819.zip
-rw-r--r--. 1 oracle oracle 71128103 Oct 27 18:43 ords.war
drwxrwxrwx. 2 oracle oracle       36 Oct 23 14:42 params
[oracle@dushanbe ords]$

При использовании ORDS для работы с APEX приложениями ORDS должен быть настроен для обслуживания статических файлов APEX. Необходимо скопировать директорию images (apex/images) из домашней директории с установочными файлами APEX в папку файловой системы, где установлены службы Oracle REST Data Services. В данном примере домашняя директория APEX находится в /home/oracle/apex и директория установки ORDS в /home/oracle/ords.

[oracle@dushanbe ords]$ cd /home/oracle/apex/
[oracle@dushanbe apex]$ pwd
/home/oracle/apex
[oracle@dushanbe apex]$ ls
apexins1.sql              apex_rest_config_core.sql   apxdevrm.sql        apxpatch.sql        apxrtins3.sql         builder       dbcsconf.sql
apexins2.sql              apex_rest_config_nocdb.sql  apxdvins_cdb.sql    apxremov1.sql       apxrtins_cdb.sql      catapx.sql    dbcsins.sql
apexins3.sql              apex_rest_config.sql        apxdvins_nocdb.sql  apxremov2.sql       apxrtins_cdb_upg.sql  core          devins.sql
apexins_cdb.sql           appins.sql                  apxdvins.sql        apxremov_cdb.sql    apxrtins_nocdb.sql    coreins2.sql  images
apexins_cdb_upg.sql       apxappcon.sql               apxdwngrd.sql       apxremov_nocdb.sql  apxrtins.sql          coreins3.sql  install2021-01-14_23-10-38.log
apexins_nocdb.sql         apxchpwd.sql                apxexit.sql         apxremov.sql        apxsdoins.sql         coreins4.sql  load_trans.sql
apexins.sql               apxdevrm_cdb.sql            apxpatch_cdb.sql    apxrtins1.sql       apxsilentins.sql      coreins5.sql  utilities
apex_rest_config_cdb.sql  apxdevrm_nocdb.sql          apxpatch_nocdb.sql  apxrtins2.sql       apxupgrd.sql          coreins.sql
[oracle@dushanbe apex]$ cp -r images/ /home/oracle/ords/
[oracle@dushanbe apex]$ cd /home/oracle/ords/
[oracle@dushanbe ords]$ pwd
/home/oracle/ords
[oracle@dushanbe ords]$ 
[oracle@dushanbe ords]$ ls
docs  examples  images  index.html  installer  ords-20.3.0.301.1819.zip  ords.war  params

Проверяется текущая версия JDK.

[oracle@dushanbe ~]$ java -version
java version "15.0.1" 2020-10-20
Java(TM) SE Runtime Environment (build 15.0.1+9-18)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
[oracle@dushanbe ~]$

Результат команды показывает, что на этой операционной системе установлена и настроена 15-я  версия JDK. В этом посте можно ознакомиться со способом проверки текущей версии JDK, а также при необходимости установить, обновить, настроить и использовать новую версию по умолчанию (см. раздел «Установка JDK»).

Есть вероятность, что при использовании старой версии JDK (например, 8 версия) запуск установки ORDS выдаст следующую ошибку:

Enter the location to store configuration data: /home/oracle/ords/config 
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at oracle.dbtools.jarcl.Entrypoint.invoke(Entrypoint.java:66)
    at oracle.dbtools.jarcl.Entrypoint.main(Entrypoint.java:77)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3236)
    at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
    at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
    at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253)
    at java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:211)
    at java.util.zip.ZipOutputStream.write(ZipOutputStream.java:331)
    at java.nio.channels.Channels$WritableByteChannelImpl.write(Channels.java:458)
    at oracle.dbtools.util.StreamCopy.drain(StreamCopy.java:44)
    at oracle.dbtools.util.StreamCopy.drain(StreamCopy.java:31)
    at oracle.dbtools.zip.ZipBuilder._addEntry(ZipBuilder.java:55)
    at oracle.dbtools.zip.ZipBuilder.addEntry(ZipBuilder.java:63)
    at oracle.dbtools.common.zip.ZipBuilder.addEntry(ZipBuilder.java:24)
    at oracle.dbtools.common.zip.MutatedZip.mutate(MutatedZip.java:68)
    at oracle.dbtools.common.zip.MutatedZip.(MutatedZip.java:34)
    at oracle.dbtools.cmdline.ModifyConfigDir.modified(ModifyConfigDir.java:145)
    at oracle.dbtools.cmdline.ModifyConfigDir.modify(ModifyConfigDir.java:117)
    at oracle.dbtools.cmdline.Commands.configurationContext(Commands.java:568)
    at oracle.dbtools.cmdline.Commands.prepareApplicationContext(Commands.java:447)
    at oracle.dbtools.cmdline.Commands.main(Commands.java:407)
    … 6 more

Есть два варианта установки ORDS:

  1. Автономный (standalone) режим.
  2. На сервере приложений (Oracle WebLogic Server, Apache Tomcat).

Далее описывается установка ORDS в standalone режиме.

Для начала установки и настройки ORDS необходимо запустить следующую команду: java -jar ords.war install advanced

После запуска команды система потребует предоставить данные для множества параметров. Ниже приведены некоторые параметры и их значения во время установки. Остальные параметры оставлены по умолчанию или не требуют дополнительного описания.

– Enter the location to store configuration data: указывается директория настроек ORDS. Можно указать любую директорию. В данном примере указана следующая директория: /home/oracle/ords/config

Enter the administrator username: Необходимо указать логин и пароль учетной записи базы данных с правами sysdba.

[oracle@dushanbe ords]$ java -jar ords.war install advanced
This Oracle REST Data Services instance has not yet been configured.
Please complete the following prompts
Enter the location to store configuration data: /home/oracle/ords/config
Specify the database connection type to use.
Enter number for [1] Basic  [2] TNS  [3] Custom URL [1]:
Enter the name of the database server [localhost]:dushanbe
Enter the database listen port [1521]:
Enter 1 to specify the database service name, or 2 to specify the database SID [1]:
Enter the database service name:XEPDB1
Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step [1]:
Enter the database password for ORDS_PUBLIC_USER:
Confirm password:
Requires to login with administrator privileges to verify Oracle REST Data Services schema.

Enter the administrator username:sys
Enter the database password for SYS AS SYSDBA:
Confirm password:
Connecting to database user: SYS AS SYSDBA url: jdbc:oracle:thin:@//dushanbe:1521/XEPDB1

Retrieving information.
Enter the default tablespace for ORDS_METADATA [SYSAUX]:
Enter the temporary tablespace for ORDS_METADATA [TEMP]:
Enter the default tablespace for ORDS_PUBLIC_USER [USERS]:
Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP]:
Enter 1 if you want to use PL/SQL Gateway or 2 to skip this step.
If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:
Enter the PL/SQL Gateway database user name [APEX_PUBLIC_USER]:  
Enter the database password for APEX_PUBLIC_USER:
Confirm password:
Enter 1 to specify passwords for Application Express RESTful Services database users (APEX_LISTENER, APEX_REST_PUBLIC_USER) or 2 to skip this step [1]:  
Enter the database password for APEX_LISTENER:
Confirm password:
Enter the database password for APEX_REST_PUBLIC_USER:
Confirm password:
Enter a number to select a feature to enable:
   [1] SQL Developer Web  (Enables all features)
   [2] REST Enabled SQL
   [3] Database API
   [4] REST Enabled SQL and Database API
   [5] None
Choose [1]:
2021-01-07T18:32:25.400Z INFO        reloaded pools: []
Installing Oracle REST Data Services version 20.3.0.r3011819
… Log file written to /home/oracle/ords_install_core_2021-01-07_233226_00133.log
… Verified database prerequisites
… Created Oracle REST Data Services proxy user
… Created Oracle REST Data Services schema
… Granted privileges to Oracle REST Data Services
… Created Oracle REST Data Services database objects
… Log file written to /home/oracle/ords_install_datamodel_2021-01-07_233302_00744.log
… Log file written to /home/oracle/ords_install_apex_2021-01-07_233311_00188.log
Completed installation for Oracle REST Data Services version 20.3.0.r3011819. Elapsed time: 00:00:52.120 

Enter 1 if you wish to start in standalone mode or 2 to exit [1]:1
Enter the APEX static resources location:/home/oracle/ords/images
Enter 1 if using HTTP or 2 if using HTTPS [1]:
Enter the HTTP port [8080]:
2021-01-07T18:43:03.267Z INFO        HTTP and HTTP/2 cleartext listening on host: localhost port: 8080
2021-01-07T18:43:03.311Z INFO        Disabling document root because the specified folder does not exist: /home/oracle/ords/params/ords/standalone/doc_root
2021-01-07T18:43:06.167Z INFO        Configuration properties for: |apex||
cache.caching=false
cache.directory=/tmp/apex/cache
cache.duration=days
cache.expiration=7
cache.maxEntries=500
cache.monitorInterval=60
cache.procedureNameList=
cache.type=lru
database.api.enabled=true
db.connectionType=basic
db.hostname=dushanbe
db.port=1539
db.servicename=XEPDB1
debug.debugger=false
debug.printDebugToScreen=false
error.keepErrorMessages=true
error.maxEntries=50
feature.sdw=true
jdbc.DriverType=thin
jdbc.InactivityTimeout=1800
jdbc.InitialLimit=3
jdbc.MaxConnectionReuseCount=1000
jdbc.MaxLimit=10
jdbc.MaxStatementsLimit=10
jdbc.MinLimit=1
jdbc.statementTimeout=900
log.logging=false
log.maxEntries=50
misc.compress=
misc.defaultPage=apex
restEnabledSql.active=true
security.disableDefaultExclusionList=false
security.maxEntries=2000
security.requestValidationFunction=wwv_flow_epg_include_modules.authorize
security.validationFunctionType=plsql
db.password=
db.username=APEX_PUBLIC_USER
resource.templates.enabled=true

На этом завершается установка и настройка APEX с ORDS. Можно подключиться к Oracle APEX 20.2 по следующему адресу: http://localhost:8080/ords

Вместо localhost можно указать адрес 127.0.0.1 или IP адрес хоста. В примере используется IP адрес хоста равный 192.168.0.1. Запускается веб-браузер и выполняется переход к следующему адресу:
http://192.168.0.1:8080/ords

Для информации: по умолчанию, для того чтобы получить доступ к корню APEX через сервисы ORDS необходимо перейти по пути /ords. Если есть необходимость использовать путь /apex для доступа к APEX, то потребуется переименовать файл ords.war в apex.war перед началом установки и настройки ORDS.

После завершения установки автоматически создается рабочее пространство (workspace) для выполнения административных задач в APEX. Название workspace – INTERNAL. Выполняется подключение к административному workspace под пользователем ADMIN и его паролем (данный пользователь и его пароль были созданы при запуске скрипта apxchpwd.sql (см. выше)).

После успешного входа система запросит создать новое рабочее пространство для разработки приложений:

Далее задается название, идентификатор и описание рабочего пространства. В примере ниже задается имя рабочего пространства «Dushanbe» и краткое описание. По умолчанию система сама генерирует идентификатор рабочего пространства.

На этапе Identify Schema надо будет указать название схемы (пользователя базы данных), к которой будет привязано новое рабочее пространство. Если в поле Re-use existing schema выбран No, то в поле Schema Name необходимо указать название нового пользователя/схемы, в поле Schema Password задать ему пароль, а в поле Space Quota (MB) назначить ему квоту на использование пространства в табличном пространстве.

В примере для поля Re-use existing schema выбирается значение Yes и в Schema Name указывается тестовая и учебная схема/пользователь hr.

Это даст возможность использовать связанные таблицы с готовыми тестовыми данными, представления, триггеры, данные и другие объекты схемы hr во время создания приложений в APEX.

Нажимается Next и выполняется переход на шаг создания пользователя с административными правами для нового создаваемого пространства – Dushanbe. Для нового пространства тоже создается пользователь с именем Admin. Указываются пароль, имя, фамилия и email администратора нового создаваемого пространства для разработки приложений:

Нажимается Next и выполняется переход на следующий шаг – подтверждения настроек нового рабочего пространства:

После нажатия Create Workspace начнется создание рабочего пространства и при успешном завершении система выдаст следующее сообщение:

Это означает, что в APEX успешно создано новое рабочее пространство с именем Dushanbe. Нажатие кнопки Done позволит пользователю ADMIN получить доступ к своему рабочему пространству (INTERNAL) и начать работу:

Выполняется выход пользователя ADMIN из административного рабочего пространства (workspace) INTERNAL. Для этого в правом верхнем углу нажимается на имя пользователя и нажимается на Sign Out.

Нажимается на Return to Sign in Page и на новой странице указываются данные для подключения к новому рабочему пространству (workspace) Dushanbe:

При первом входе администратору нового рабочего пространства (workspace) необходимо самостоятельно сменить пароль:

После успешной смены пароля администратор workspace Dushanbe получает доступ к среде:

Рабочее пространство Dushanbe готово для начала разработки веб-приложений.

Необходимо учитывать, что после перезагрузки  операционной системы сервис будет недоступен. Для запуска  ORDS необходимо вручную запустить следующую команду java -jar ords.war standalone из директории ords (в данном примере из /home/oracle/ords):

[oracle@dushanbe ords]$ pwd
/home/oracle/ords
[oracle@dushanbe ords]$ java -jar ords.war standalone

Если закрыть консоль операционной системы, то сервис ords выполнявшийся в ней завершится. Во избежание этого необходимо команду java -jar ords.war standalone запустить в фоновом режиме, используя nohup:

[oracle@dushanbe ords]$ nohup java -jar ords.war standalone &

При необходимости можно написать скрипт на уровне операционной системы, который будет запускать последнюю команду из нужной директории, и записывать детальную информацию о запуске в определенный лог файл для последующего анализа в будущем.

Информация о материале
Категория: Статьи

Просмотров: 23081

Создание приложения в Oracle Apex

  • В данной статье мы рассмотрим основные аспекты разработки приложения в Oracle Apex. Перед началом работы нам необходимо создать приложение в Oracle Apex. Для этого заходим в основной интерфейс разработки и нажимаем «Create» на главной странице.

  • Далее выбираем тип приложения. В нашем случае это будет «Desktop» версия приложения.

  • На следующем шаге указываем схему в БД, в которой будет храниться приложение, его название, номер и основную тему.

  • На этапе «Pages» уже можно создать страницы для нашего приложения, но мы рассмотрим их создание отдельным шагом.

  • Shared Components мы пропускаем, т.к. у нас нет компонентов для копирования из других приложений.

  • Производим настройку основных атрибутов приложения. Такие как язык приложения и формат даты, времени.

  • Проверяем основные настройки приложения и подтверждаем его создание.

  • Приложение создано, и мы находимся в разделе его редактирования. Данная среда является основной для дальнейшей разработки и редактирования приложения. Но уже сейчас мы можем запустить наше приложение с помощью кнопки «Run Application».

  • Наше запущенное приложение. Пока что оно пустое, но уже скоро он будет обрастать новыми страницами и компонентами.

Создание страницы в приложении Oracle Apex

  • Наше первое приложение создано, и мы находимся в основном разделе его редактирования. Как видим, в нём уже создано две страницы (домашняя и страница авторизации в приложение). Попробуем создать новую, для этого нажимаем «Create Page».

  • Выбираем тип страницы. Это может быть пустая страницы, отчет, форма, график и т.д. Сейчас создадим пустую страницы, а далее рассмотрим создание регионов на новой странице.

  • Присваиваем имя для страницы.

  • На шаге «Navigation Menu» можно привязать страницу к разделу в навигационном меню.

  • Подтверждаем создание страницы.

  • Теперь список страниц в приложении пополнился новой страницей.

  • Если выберем нашу страницу из списка выше, то попадем в основное меню создания, редактирования и обзор всех компонентов страницы. Для более наглядного редактирования компонентов на странице можно использовать «Page Designer», для этого необходимо перейти в соответствующий раздел.

  • Внешний вид раздела «Page Designer» выглядит следующим образом:

Создание графика (Chart) в Oracle Apex

  • Для создания графика в Oracle Apex на новой странице, в разделе редактирования страницы необходимо создать регион с типом «Chart». Регионом в Oracle Apex является некий контейнер содержащий набор информации (графики, отчеты, кнопки, формы и др.).

  • На следующем этапе выбираем тип отображения графика на странице (Flash/HTML), в нашем случае это будет HTML5 и тип графика – гистограмма.

  • Затем производится настройка атрибутов региона.

  • Указываем название для графика. Также на данном шаге можно выбрать отображение значений на графике, имя аксис, отображение легенды, сетки и цвет заливки графика.

  • На этапе «Source» задаем сам запрос для построения графика. На этом же этапе можно указать максимальное количество выводимых строк для построения графика и сообщение, если данных для построения графика будет не хватать.

  • На последнем этапе можно выбрать схему авторизации для данного региона (если были созданы заранее).

  • После того как мы создали регион, в меню «Chart Attributes» можно задать дополнительные настройки графика, такие как размеры графика, цветовые настройки, параметры отображения элементов графика, настройки легенды, создание второй серии графика, а также Drill Down до следующего уровня графика и многое другое.

  • После того, как разобрались с дополнительными настройками можно запустить приложение и посмотреть, что получилось.

Создание интерактивного отчёта в Oracle Apex

  • На странице создаем регион с типом «Report».

  • Выбираем тип «Interactive Report», т.к. ряд возможностей работы с ним шире, чем у классического отчета.

  • Задаем название региона.

  • На этапе «Source» задается текст запроса для отчета. Его можно указать как привычным скриптом, так и построить через «Query Builder» выбрав пункт «Table».

  • На последнем этапе можно выбрать схему авторизации для данного региона (если были созданы заранее).

  • После создания отчета запустим приложение и посмотрим на результат. В отличие от классического отчета в интерактивном имеются функции сортировки и фильтрации данных, а также имеется возможность быстрого построения графиков на основе данных в отчете.

  • Для настройки дополнительных атрибутов отчета необходимо зайти в настройки региона, кликнув на его название.

Работа с оглавлением приложения

  • Для демонстрации создания и редактирования многоуровневого оглавления в приложении Oracle Apex, создадим несколько страниц, где в названии будет указан уровень в оглавлении.

  • В разделе «Shared Components» выбираем раздел «Navigation Menu».

  • На странице «List Details» необходимо добавить запись в меню навигации. Для этого в пункте «Page» выбираем страницу, на которую будет ссылаться раздел меню, а в пункте «List Entry Label» указываем название пункта меню.

  • Для добавления дочерних разделов меню, для новой страницы повторяем предыдущий шаг, но в качестве родительской страницы, в пункте «Parent List Entry», выбираем необходимый раздел.

  • По завершению работы с добавлением разделов меню, в структуре «List Details» мы видим названия разделов, родительский пункт меню и уровень в меню навигации.

  • Теперь меню навигации в нашем приложении выглядит следующим образом.
  • Как видите, разработка приложений в Oracle Apex довольно удобная и простая, что простыми действиями позволяет создавать интересные приложения. Следите за новостями на http://www.rtportal.ru – будет еще много полезных статей.

Другие статьи на тему APEX:

  • Установка и конфигурирование Oracle Application Express 5 (APEX) и Oracle REST Data Services 3 (ORDS) для сервера приложений Weblogic 12
  • Создание домена в weblogic 12с и запуск его как службы Windows
  • Настройка доменной аутентификации в Oracle Apex
  • Как настроить постраничную авторизацию в Oracle APEX
  • Подключение схемы (таблицы) в Oracle Application Express 5 (APEX)
  • Создание приложения в Oracle Application Express 5 (APEX)
  • Перенос APEX приложения из среды разработки в продуктовую среду

Краткая инструкция как установить Application Express на отдельный сервер Oracle. Рассматривается простейший вариант установки в режиме embedded PL/SQL gateway.

Перед установкой

  1. Необходимо проверить, что прослушиватель БД (listener) настроен.
  2. Экземпляр Oracle должен быть сконфигурирован c XML DB. Если изначально это не было сделано, добавить XML DB можно с помощью утилиты Database Configuration Assistant (dbca).
  3. Остановить все сервисы oracle (listener и пр.). Экземпляр БД (instance) при этом остается запущенным.

Загрузка последней версии Oracle Application Express

Загрузить архив APEX можно на сайте Oracle. На момент написания этой статьи последней версией являлся APEX 4.1.1, поэтому дальнейшее изложение пойдет исходя из этой версии.

Выбор варианта HTTP-сервера

Существует 3 варианта организации связи с сервером APEX.

  1. Oracle Application Express Listener – специальный прослушиватель напрямую соединяется со службой APEX, что позволяет избежать необходимость использования плагина mod_plsql. Является отдельной утилитой, требующей установки и настройки.
  2. Oracle HTTP Server (Apache) c mod_plsql – отдельный HTTP-сервер со специальным плагином. Оба варианта обеспечивают трехуровневую архитектуру взаимодействия:
    • Браузер
    • Oracle Application Express Listener или Oracle HTTP Server (Apache) с mod_plsql
    • БД Oracle с Oracle Application Express

    Преимуществом такой модели является разделение БД и транспортной службы, обеспечивающей взаимодействие пользователя с Oracle Application Express.

  3. Встроенный шлюз PL/SQL (Embedded PL/SQL Gateway) – сервер Oracle XML DB HTTP со встроенным шлюзом PL/SQL устанавливается вместе с Oracle Database 11g. Этот механизм обеспечивает сервер Oracle веб-сервером и всей необходимой инфраструктурой для создания веб-приложений. Такое решение имеет двухуровневую архитектуру
    • Браузер
    • БД Oracle с PL/SQL шлюзом и Oracle Application Express

    Преимуществами данного варианта являются отсутствие необходимости отдельной установки и простота настройки. Т.к. данная архитектура двухуровневая, то нет возможности разделения самого сервера БД и прослушивателя, взаимодействующего с пользователем. Кроме того, шлюз не обладает таким широким набором настроек защиты и журналирования, как первые два варианта. Поэтому, не рекомендуется использование встроенного шлюза для обеспечения работы готового APEX-приложения в сети интернет.

Если же сервер будет использоваться для знакомства с APEX и локальной разработки приложений, то для упрощения установки целесообразно выбрать именно 3-й вариант встроенного PL/SQL шлюза.

Проверка переменных окружения

Если сервер БД Oracle уже настроен и функционирует, то переменные окружения скорее всего настроены должным образом. В любом случае стоит их проверить. Настройки должны быть подобны следующим:

  • Для платформы Windows
    ORACLE_BASE= c:\oracle
    ORACLE_HOME=%ORACLE_BASE%\product\11.2.0\dbhome_1
    ORACLE_SID=orcl
    ORACLE_UNQNAME=orcl
    PATH=%PATH%;%ORACLE_HOME%\bin
    
  • Для платформы UNIX и Linux
    ORACLE_BASE= /opt/oracle
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
    ORACLE_SID=orcl
    ORACLE_UNQNAME=orcl
    PATH=$PATH:$ORACLE_HOME/bin
    

Региональные настройки и кодировка (значение параметра NLS_LANG зависит от предпочтений – utf8, koi8-r или win1251):

NLS_DATE_LANGUAGE=RUSSIAN
NLS_LANG=RUSSIAN_RUSSIA.AL32UTF8
NLS_LANG=RUSSIAN_RUSSIA.CL8KOI8R
NLS_LANG=RUSSIAN_RUSSIA.CL8MSWIN1251
NLS_SORT=RUSSIAN

Установка

Загруженный архив (в нашем случае, apex_4.1.1.zip) следует распаковать в директорию $ORACLE_HOME. Примечание: там может уже присутствовать директория apex более ранней версии. Ее можно перенести в другое место или просто удалить, если она не используется.

В командной строке следует перейти в директорию apex и запустить sqlplus.

  • Для платформы Windows (предположим, БД расположена на диске C:)
    C:
    cd %ORACLE_HOME%\apex
    sqlplus /nolog
    SQL> CONNECT SYS as SYSDBA
    
  • Для платформы UNIX и Linux:
    cd $ORACLE_HOME/apex
    $ sqlplus /nolog
    SQL> CONNECT SYS as SYSDBA
    

Т.к. сервер устанавливается для разработки, необходима полная установка среды разработки (Full development environment). Синтаксис команды установки имеет следующий общий вид:

@apexins tablespace_apex tablespace_files tablespace_temp images

Параметры:

  • tablespace_apex имя табличного пространства, в котором будут храниться объекты схемы Oracle Application Express.
  • tablespace_files имя табличного пространства для хранения файлов.
  • tablespace_temp имя временного табличного пространства.
  • images виртуальная директория, где будут располагаться все изображения для Oracle Application Express. Для обеспечения возможности обновления Oracle Application Express обязательно должна быть задана директория /i/.

Пример:

@apexins SYSAUX SYSAUX TEMP /i/

В большинстве случаев для стандартной установки достаточно использовать вариант из примера без изменений.
Во время установки Oracle Application Express создается 3 новых пользователя БД:

  • APEX_040100 – Здесь хранятся все объекты Oracle Application Express и метаданные. Номер, следующий за нижним подчеркиванием, зависит от версии APEX.
  • FLOWS_FILES – Схема, где хранятся все загружаемые файлы.
  • APEX_PUBLIC_USER – пользователь с минимальными привилегиями, используется при работе с Oracle Application Express Listener или Oracle HTTP Server и mod_plsql.

Установка пароля для администратора APEX

Снова следует запустить sqlplus из той же директории apex.

  • Для платформы Windows
    C:
    cd %ORACLE_HOME%\apex
    sqlplus /nolog
    SQL> CONNECT SYS as SYSDBA
    
  • Для платформы UNIX и Linux:
    cd $ORACLE_HOME/apex
    $ sqlplus /nolog
    SQL> CONNECT SYS as SYSDBA

Команда установки пароля для администратора apex:

@apxchpwd

При появлении вопроса, введите пароль для пользователя admin.

Настройки после установки

Теперь можно запустить все процессы, остановленные перед началом установки.

Настройка выбранного варианта HTTP-сервера – встроенного PL/SQL шлюза

Снова следует запустить sqlplus из той же директории apex.

  • Для платформы Windows
    C:
    cd %ORACLE_HOME%\apex
    sqlplus /nolog
    SQL> CONNECT SYS as SYSDBA
    
  • Для платформы UNIX и Linux:
    cd $ORACLE_HOME/apex
    $ sqlplus /nolog
    SQL> CONNECT SYS as SYSDBA
    

Для настройки системных иконок необходимо запустить скрипт apex_epg_config.sql. В качестве параметра следует указать директорию, куда был распакован архив apex_4.1.1.zip. Важно! Не указывайте в пути саму директорию apex.

  • Для платформы Windows
    @apex_epg_config C:\oracle\product\11.2.0\dbhome_1
  • Для платформы UNIX и Linux
    @apex_epg_config /opt/oracle/product/11.2.0/dbhome_1

Далее необходимо разблокировать пользователя ANONYMOUS:

ALTER USER ANONYMOUS ACCOUNT UNLOCK;

Активация сервера Oracle XML DB HTTP

Для использования этого сервера экземпляр Oracle должен быть сконфигурирован c XML DB. Если изначально это не было сделано, добавить XML DB можно с помощью Database Configuration Assistant (dbca).

Проверка порта, назначенного для XML DB HTTP

Запускаем sqlplus

  • Для платформы Windows
    C:\ sqlplus /nolog
    connect sys as sysdba
    
  • Для платформы UNIX и Linux
    $ sqlplus /nolog
    connect sys as sysdba
    

Проверка значения заданного порта:

SELECT DBMS_XDB.GETHTTPPORT FROM DUAL;
Установка нового значения порта

Если значение порта равно 0, значит, сервер XML DB HTTP отключен. В этом случае, для активации сервера необходимо назначить порт, по которому будут выполняться обращения к серверу APEX (например, 8080).

Синтаксис команды:

EXEC DBMS_XDB.SETHTTPPORT(port);

Пример:

EXEC DBMS_XDB.SETHTTPPORT(8080);

Доступ к сетевым службам

Для использования в среде APEX различных сетевых служб, например, отправка и получение электронной почты средствами APEX, необходимо настроить политику доступа ACL.

На этом первая часть – установка сервера APEX закончена. Далее необходимо подготовить рабочие пространства, где будут создаваться приложения, и пользователей, которые будут работать с APEX.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Замена уплотнителя на холодильнике вестел своими руками пошаговая инструкция
  • Посудомоечная машина hjalpsam инструкция по применению на русском
  • Фурацилин для глаз инструкция по применению
  • Крепс рв ровнитель для пола инструкция
  • Флип инсектицид инструкция по применению