пятница, 5 марта 2010 г.

Роли в команде разработки ПО на Application Express

Роли в команде

Основные роли:

  • Database Developer
  • UI Designer
  • Apex Developer
  • QA Engineer
  • Team Leader
  • Integration Architect (может отсутствовать, если не требуется интеграция)

Дополнительная роль:

  • Apex Administrator - не участвует в процессе разработки

Database Developer

Задачи:

  • Разработка схемы данных
  • Разработка пакетов-утилит в БД

Необходимые навыки/знания:

  • проектирования баз данных
  • опыт программирования на PL/SQL

UI Designer

Задачи:

  • Разработка (и/или изменение) существующих тем
  • Создание кастомных компонентов (и их документирование, например на Wiki)
  • Интеграция с JavaScript-библиотеками (фреймворками)
  • Создание необходимых JavaScript функций-утилит (например: для валидации ввода значений)

Необходимые навыки/знания:

  • DHTML(HTML+JavaScript)
  • CSS
  • Понимание процесса генерации Apex-ом динамического HTML

Apex Developer

Задачи:

  • Разработка интерфейса пользователя средствами Apex
  • Использование кастомных компонентов и тем пользовательского интерфейса
  • Использование JavaScript функций-утилит
  • Использование пакетов-утилит в БД

Необходимые навыки/знания:

  • DHTML(HTML+JavaScript) + Ajax
  • Знание SQL и PL/SQL
  • Понимание процесса разработки приложений на Apex

QA Engineer

Задачи:

  • Функциональное тестирование приложения
  • Тестирование приложения на производительность

Необходимые навыки/знания:

  • Понимание процесса функционального тестирования
  • Понимание принципов автотестов и опыт их использования в Web-ориентированной среде

Team Leader

Задачи:

  • Разработка архитектуры приложения в соответствии с бизнес-требованиями
  • Участие в основных этапах разработки и тестирования системы
  • Планирование выпуска новых версий системы

Необходимые навыки/знания:

  • Навыки ролей “Database Developer”, “Apex Developer”, “QA Engineer” и “UI Engineer”
  • Мэппинг бизнес-требований на технологии и средства Apex и смежных технологий
  • Понимание принципов управления проектами

Integration Architect (может отсутствовать, если не требуется интеграция)

Задачи:

  • Разработка интеграционной архитектуры

Необходимые навыки/знания:

  • Понимание основ и принципов SOA и SaaS
  • Опыт интеграционных проектов:
  • Интеграция на уровне бизнес-процессов
  • Интеграция на основе сервисной шины
  • Интеграция на уровне данных (федерат.хранилища данных)
  • Интеграция на уровне пользовательского интерфейса

Apex Administrator

Задачи:

  • Администрирование Apex-приложений:
  1. Оптимизация и мониторинг производительности
  2. Бэкап схемы БД и самого приложения

Необходимые навыки/знания:

  • Навыки администратора СУБД Oracle
  • Начальные знания Apex

Взаимодействие ролей


Пример: роли в команде из 3-х и 5-и человек

Из 3-х:

  1. Team Leader (Apex Developer, Database Developer, UI Designer, QA Engineer)
  2. Apex Developer + Database Developer
  3. Apex Developer + QA Engineer

Из 5-и:

  1. Team Leader (Apex Developer, Database Developer, UI Designer, QA Engineer)
  2. Database Developer + Apex Developer
  3. Apex Developer + Database Developer
  4. Apex Developer + QA Engineer
  5. Apex Developer + UI Designer

Создание округлых кнопок вместо cтандартных в Application Express

  1. Home -> Application Builder -> Application 101 -> Shared Components -> Templates -> Button Definition:
     <a class="button_ND1" href="#LINK#" onclick="this.blur();">  
                                                    <span>#LABEL#</span></a>  
    
  2. Создать css-файл для описания кнопки:
     .clear { /* generic container (i.e. div) for floating buttons */  
      overflow: hidden;  
      width: 100%;  
     }  
     a.button_ND1 {  
      background: transparent url('bg_button_a.gif') no-repeat scroll top right;  
      color: #444;  
      display: block;  
      float: left;  
      font: normal 12px arial, sans-serif;  
      height: 24px;  
      margin-right: 6px;  
      padding-right: 18px; /* sliding doors padding */  
      text-decoration: none;  
     }  
     a.button_ND1 span {  
      background: transparent url('bg_button_span.gif') no-repeat;  
      display: block;  
      line-height: 14px;  
      padding: 5px 0 5px 18px;  
      text-decoration: none;  
     }  
     a.button_ND1:active {  
      background-position: bottom right;  
      color: #000;  
      outline: none; /* hide dotted outline in Firefox */  
      text-decoration: none;  
     }  
     a.button_ND1:active span {  
      background-position: bottom left;  
      padding: 6px 0 4px 18px; /* push text down 1px */  
      text-decoration: none;  
     }  
    
  3. Загрузить данный файл на Web-server (аналогично, интеграции Oracle Application Express и ExtJS).
  4. Загрузить рядом с css файлом две следующие картинки:

понедельник, 1 марта 2010 г.

Область применения Application Express

Краткие соображения на тему - для чего целесообразно, а для чего нецелесообразно использовать Application Express (APEX).

Целесообразно использовать для:
  • создания небольших корпоративных приложений (всё зависит от аппаратного обеспечения, но цифра для ориентировки: не более 500 одновременно работающих пользователей);
  • миграция/замена Microsoft Access и электронных таблиц;
  • создание модулей для Oracle E-Business Suite;
  • перенос унаследованных приложений (например: созданных на Borland Delphi) в Web-среду.

Не целесообразно использовать для:
  • Web-сайты с большим количеством пользователей;
  • корпоравные приложения с большим количеством одновременно работающих пользователей;
  • создания систем где, требуется интеграция с крупными корпоративными приложениями (на основе Java EE и .Net)

воскресенье, 21 февраля 2010 г.

Application Express: использование всплывающего календаря из фреймворка ExtJS

  1. Создать JavaScript-файл или добавить в Header Definition:
     function makeDateFields(){  
       var els=Ext.select("input.date-picker",true);  
       els.each(function(el){  
        var df = new Ext.form.DateField({"format":'d-M-Y',"altFormats":'j|j/n|j/n/y|j/n/Y|j-M|j-M-y|j-M-Y'});  
        df.applyToMarkup(el);  
       })  
     }  
    
  2. Добавить в onload body вызов данной функции или использовать метод onReady фреймворка ExtJS:
     Ext.onReady(function(){  
       Ext.BLANK_IMAGE_URL = '/i/1px_trans.gif';  
       // Create namespace if doesn't already exist  
       Ext.namespace('Ext.ux');  
       //Здесь последовательность вызовов функций, например:  
       makeDateFields();  
     });  
    
  3. Создать на странице Apex Item типа TEXTFIELD и указать в свойстве Element->HTML Form Element Attributes следующее значение:
     class="date-picker"  
    

Пример:

пятница, 12 февраля 2010 г.

Размышления об JavaScript-фреймворке для Aplication Express

В связи со скорым выходом Apex 4.0 (в который будет интегрирован фреймворк jQuery и основные функциональные возможности будут реализованны на данном фреймворке), думаю что использовать фреймворк ExtJS будет не рационально в большинстве случаев, с учётом большей модульности, легковесности и производительности jQuery.

Некоторые интересные посты про JavaScript-фреймворки и их сравнение:

  1. Интересный онлайн-тест производительности JS-фреймворков:
  2. Производительность JavaScript-фреймворков
  3. Сравнение скорости популярных JS библиотек