Туториал по Oracle Application Express. Обзор IDE

  • Tutorial

Недавно я с удивлением обнаружил, что, оказывается, толковых туториалов по 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. Я пока не могу сказать, что четко продумал структуру этого туториала, возможно, в будущем я добавлю еще скриншоты и описания в эту статью или опишу дополнительные возможности в других статьях. Осталось придумать, как оповещать заинтересованных о значительных правках старых статей.

Поддержать автора
Поделиться публикацией

Похожие публикации

Комментарии 29

    0
    Спасибо большое — отличная статья.

    Я пользовался APEX раньше много и часто. Это практически единственный быстрый способ для DBA донести какую-то информацию в «человеческом» виде без знания дизайна, framework, всякого программирования GUI и прочего. Очень помогает для внутренних каких-то систем метаданных, Inventory.
    Было очень полезно вспомнить какие-то моменты и узнать новые — как раз активно пользовался до выхода 5-й версии.

    Единственно, может это глюк приложения Habr под Android, но из TOC по любой ссылке на начало статьи просто переходит.
      0
      Единственно, может это глюк приложения Habr под Android, но из TOC по любой ссылке на начало статьи просто переходит.
      Интересно, не задумывался над этим. Я вообще-то не знаю, как правильно такие ссылки делать. Попробовал у себя: браузер на компьютере просто переходит к нужному разделу, Safari на iOS перезагружает страницу и переходит к нужному разделу, но картинки догружаются только потом, поэтому нужное место немного уползает.
        0
        Единственно, может это глюк приложения Habr под Android, но из TOC по любой ссылке на начало статьи просто переходит.
        Говорят, это баг Хабра.
        0
        Было бы интересно посмотреть варианты использования внешних источников данных и реализация REST API
          0
          Мне тоже ;) Я пробовал осилить REST еще в версии 4.2, но не осилил. Но тогда мне это было совсем не нужно, да и я не понимал я толком, что это за REST и зачем он нужен. Осилю и напишу.
          0
          Вспоминаю как страшный сон, меня хватило на 2 месяца
            0
            Непонятно, что там такого страшного? ИМХО уникальный инструмент, который позволяет очень быстро сделать отображение данных из БД. Да еще с таким простым входом для новичков.

            Мне наоборот печально, что ничего подобного нет, например, для Postgres-a. А в свете нынешних реалий очень бы хотелось иметь подобный инструмент.
              0
              Абсолютно согласен. Ещё в APEX есть уже внутри полный набор инструментов для коллективной разработки, поддержки версионности, переносимости приложений и пр.

              По поводу PostgreSQL был прецендент — в APEX делал небольшое приложение — отчёты по старой системе тикетов, данные которой хранились в PostgreSQL. В Oracle можно сделать db_link к любой базе через odbc (не считая «родных» gateways). Собственно, так и было сделано — APEX приложение работало со схемой Oracle, данные в которую выбирались из внешней PostgreSQL базы. Есть определённые танцы с бубном для типов данных, но это решаемо. DB_Link позволяет и писать данные в удалённую базу, но такой метод, считаю, может как-то работать только для каких-то простых случаев и, конечно, ни разу не заменит родного APEX для PostgreSQL, если бы он был.

              Я думаю, всё-таки подобные решения в природе есть — в принципе этому почти любой ORM можно научить (вопрос — сколько времени и сил убить на это), просто PG админы слишком брутальны, чтобы их использовать :)
                0
                Непонятно, что там такого страшного?
                На 100% не уверен, конечно, но мне кажется, что для человека, пришедшего откуда-нибудь из мира фронтенд-разработки, нормальная реакция. Я-то сам с БД разработки начинал, первые лет 5 тоже был в диком восторге.
                  0
                  Я начинал разработки еще с дос-овского клариона. Поэтому апекс пришелся вообще идеально.
                  0
                  Очень быстро позволяет отобразить данные из БД банальный Excel, какой то там разовый отчет, быстро накидал (или тебе дали уже готовую форму, они часто уже имеются именно в Excel) один раз выгрузил и забыл. Система где прописал что то в одном окошке, перешел к какой то формочке, еще что то прописал ущербна по своей сути. Из серии очень быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой. А эти «простые вещи» обязательно нужно будет сделать. Начинается дикое нагромождение костылей, которые потом «интересно» разбирать если нагромождал их не ты. Специалист APEX это как специалист 1С — раб довольно окукленной технологии, брррр
                    0
                    Очень быстро позволяет отобразить данные из БД банальный Excel
                    Банальный excel в сравнении с апексовским интерактивным отчетом/гридом это как велосипед и супекар. Его интерактивный отчет позволяет закрыть потребности пользователей в отчетах процентов на 85. Это вообще несравнимые вещи.
                    Система где прописал что то в одном окошке, перешел к какой то формочке, еще что то прописал ущербна по своей сути
                    Что значит ущербна? Другого подхода в этих системах просто не бывает. Посмотрите на 1С, R3 и т.п. у них примерно такой подход везде.
                    быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой
                    Тут просто надо принять апексовский подход к решению проблем, а не пытаться его заставить его делать то, для чего он не предназначен.
                    Специалист APEX это как специалист 1С — раб довольно окукленной технологии,
                    Это да. Но об этом и пишется, что технология заслуживает большего распространения.
                      0
                      Есть другой подход, сел в любимой IDEшечке, открыл проектик на одном из гораздо более распостраненных фреймоврков с MVK и маршрутизацией, который уже имеет из коробки классы и шаблоны для отображения таблиц и форм и начинаешь писать.
                      Ну а насчет «не пытаться заставить» тут такое дело, в общем случае не программисту решать что пытаться а что не пытаться доводом от заказчика будет «а я там вот видела что там вот так сделано». У меня впечатление от APEXа это как попытка Oracle создать свой лунапарк.
                        0
                        открыл проектик на одном из гораздо более распостраненных фреймоврков с MVK и маршрутизацией, который уже имеет из коробки классы и шаблоны для отображения таблиц и форм и начинаешь писать.
                        А в апексе, надо полагать, всего этого нет? Чтобы показать страницу с результатом выполнения SQL запроса в апексе, нужно сделать примерно 10 кликов мышкой и написать SQL запрос. Больше не надо ничего вообще. Никакой другой «обычный фреймворк» такого не позволяет. Лично мне есть с чем сравнивать: в 2010-м году я начал делать свой проектик для веба (не зная о вебе ничего вообще) на апексе (не зная апекса вообще и попутно его изучая), и за два-три месяца довел его до более-менее вменяемого рабочего состояния. В 2016-м я попробовал начать делать другой свой проектик на Spring Boot (не зная Spring Boot вообще и попутно его изучая), но к тому моменту я уже намного больше знал, что и как устроено в вебе, при этом три месяца спустя в проекте все еще конь не валялся. Так что по уровню входа и по скорости разработки у апекса конкурентов нет. Проблемы появляются, когда нужно сделать что-то, не предусмотренное фреймворком. Тогда да, скорость разработки падает до обычной, как везде.

                        У меня впечатление от APEXа это как попытка Oracle создать свой лунапарк.
                        Смешно, особенно на фоне чуть ли не каждую неделю выходящих на Хабре статей о том, что новые фронтенд-«лунапарки» для js выходят каждые полгода. Оракл, на секундочку, создал этот «лунапарк» в 2004-м, как сейчас модно говорить — «до того, как это стало мейнстримом» ;)
                          0
                          Чтобы показать страницу с результатами SQL запроса вообще никакого фреймворка не нужно:) А если ты не в первый раз в жизни это делаешь или это не первая страничка в проекте с результатом некоего запроса, там вообще все копипастом делается, просто имена колонок на русском прописать:) Ну и я бы хотел посмотреть на оракловский лунапарк образца 2004.
                            0
                            Чтобы показать страницу с результатами SQL запроса вообще никакого фреймворка не нужно:

                            Покажите хоть что-нибудь близкое по функционалу IR апекса. Я специально искал, не нашел.
                            Отчеты в стиле «выгрузил в excel и забыл» — это не отчеты, это наколеночное исполнение.
                            Апекс не предназначен для рисования сайтов в интернете, на что заточены все остальные фреймворки, он предназначен для представления данных и управления ими.
                              0
                              Отчеты в стиле «выгрузил в excel и забыл» — это не отчеты, это наколеночное исполнение.

                              … пока вы не взвоете от того, что юзеры регулярно просят сделать в фиксированном отчёте этот столбец уже, а тот шире, тут шрифт увеличить, а там уменьшить, и т.п. — ведь «это не трудно!», а после исполнения их пожеланий — новое пожелание в том же духе, и так далее до бесконечности.
                              В итоге, большая часть вашего рабочего времени будет уходить на очередные бесконечные корректировки оформления отчёта, потому что и отчётов и юзеров — много, и каждому нужно «сделайте мне красиво!» (откажешься — будут считать тебя козлом, и регулярно жаловаться на тебя начальству).
                              Уж проще и эффективнее дать им Excel, и «делай с ним что хочешь!».
                                0
                                отчёте этот столбец уже, а тот шире, тут шрифт увеличить
                                Хотя в апексе многое решено в гриде, но разговор не об этом. IR/IG позволяют решить большинство запросов пользователя типа: а мне нужно
                                отфильтровать по этому столбцу, сгруппировать по этому, посчитать сумму и т.п. И в зависимости от уровня пользователя он многие отчеты для анализа данных может сделать сам, не привлекая программиста.
                                А вот за оформлением уже можно послать в эксель.
                                0
                                1) Я думаю в каждом конкретном проекте не нужно 90% из функционала APEXa, нам же просто нужно вывести результат запроса, или уже нет?:)
                                2) Если это не первый отчет в проекте — каждый последующий делается банальным копипастом из подобного оному, при этом будет сделан именно так как вам нужно, в него легче добавить не предусмотренную АРЕХом фичу, при этом сам отчет будет легковеснее и для сопровождения проекта проще нанять программиста более широкого профиля чем узкого специалиста по АРЕХу
                                3) Наконец у самого АРЕХа несколько версий, и я даже не знаю как перевести сотню другую отчетов из старой версии в новую, может вы расскажете?
                                  0
                                  1. В любом продукте используется 10% возможностей. Но разные люди используют разные возможности.
                                  Результат запроса выведенный АПЕКС-ом это намного больше чем «просто запрос»
                                  2. И на каждое новое требование пользователя будет писаться новый отчет этим программистом.
                                  3. Если это переход с classic report на interactive то никак. В остальном проблема перехода от версии к версии решается примерно как у всех.
                                    0
                                    3) Наконец у самого АРЕХа несколько версий, и я даже не знаю как перевести сотню другую отчетов из старой версии в новую, может вы расскажете?
                                    Зависит от того, что вы называете «переходом на новую версию». Если у вас на сервере стоял апекс 4.2, вы на него установили, например, 5.1, и всё, что вам нужно — это чтобы приложение осталось работоспособным — то ничего делать не надо, оно таки останется работоспособным. А если нужно что-то другое — сформулируйте.
                          0
                          Из серии очень быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой.
                          Это применимо вообще к любому фреймворку.
                          Специалист APEX это как специалист 1С — раб довольно окукленной технологии
                          В целом да, но специалист 1С — специалист только на территории бСССР, а за ее пределами он — никто. А специалист по APEX — специалист во всем мире (и как правило, он еще и специалист по Oracle, что все еще востребовано также во всем мире).
                            0
                            Не к любому, фреймворки гораздо гибче. И еще раз работать с проектом на уровне файлов из IDE гораздо проще чем в конгломерате окошек с кусками кода и формочек с настройками.
                              0
                              Апекс совершенно не мешает вам писать PL/SQL и javascript в виде файлов в IDE. Я сейчас, например, параллельно с написанием этого туториала делаю пару плагинов для апекса, и процентов 90 времени делаю это в Intellij IDEA. Вам тоже никто так не запрещает.
                      0
                      АРЕХ — крутая вещь. Если к нему правильно прикручивать AJAX-обработчики, он вполне современен, а функционален — почти из коробки.
                      Было бы очень интересно почитать про нагрузочное тестирование APEX-приложений. Мои кривые руки полагают, что при нескольких десятках пользователей, они вешают сервер намертво. Мб, я что-то делал не так, но при всех достоинствах АРЕХа на нем почти нет сайтов в Интернете (навскидку, только askTom).
                      А приложения для ограниченного количества внутренних пользователей успешно работают, например, во многих банках.
                        0
                        Навскидку, из больших сайтов знаю только shop.oracle.com. Но, насколько я понимаю, apex идеальнее всего подходит для интранета, и в нем существуют большинство проектов на апексе.
                          0
                          В администрировании я понимаю чуть больше чем ничего, но буквально недавно мне попадалось на глаза это: ora-00001.blogspot.com/2015/07/installing-oracle-xe-ords-and-apex-on-centos-linux-part-four.html
                          На просторах интернета попадались упоминания о том, что на подходщем железе до 2К пользователей апекс держит (но это уже не XE версия оракла должна быть).
                          0
                          Добрый день!
                          Нужно четко сформулировать назначение продукта и ограничения по его использованию.
                          И от этого плясать.
                          Пока APEX(на мой взгляд) это пример от Oracle как нужно\не нужно писать интернет приложения c использованием БД.
                          Еще было бы интересно узнать про внутреннюю реализацию. Мониторю с точки зрения производительности одно приложение на APEX так там большая часть ожидания сети Не совсем понятно для чего вообще нужна мощь транзакционной БД.
                          Похоже на гланды будем рвать через… Или на БД Oracle можно сделать все, даже грабли
                          Но это мое личное впечатление :)

                            +1
                            Я только сейчас увидел ваше сообщение.
                            Еще было бы интересно узнать про внутреннюю реализацию.
                            Внутренняя реализация — заврапленные PL/SQL пакеты, так что узнаете вы ее только устроившись в оракл разработчиком. Также для отладки можно воспользоваться отладчиком апекса. Надо залогиниться в IDE, потом из IDE запустить приложение (тогда внизу появятся дополнительные кнопочки), нажать на «Debug», потом — «View Debug». Там можно найти по шагам отчет, какая часть выполнения страницы сколько времени занимает.

                            Пока APEX(на мой взгляд) это пример от Oracle как нужно\не нужно писать интернет приложения c использованием БД.
                            Так нужно или не нужно? ;) Вы определитесь.

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

                          Самое читаемое