Oracle Forms как средство разработки дополнительных приложений корпоративного хранилища данных
Интерактивное средство разработки Oracle Forms довольно давно представлен в продуктовой линейки Oracle (впервые он был задуман в конце 80х годов). Oracle Forms версии 4.5, 5, 6 и 6i был средством исключительно для разработки клиент-серверных приложений, но начиная с версии 9i, он предназначен только для разработки web приложений. Данные web-приложения представляют из себя Java апплет запускаемый в браузере, который обращается к Forms Server на котором и выполняется вся логика приложения.
Oracle Forms, как и Oracle Apex, является решением для быстрого создания приложений под web.
Цель данной статьи – привести пример создания формы ввода данных для таблицы соответствия валют. Таблицы соответствия часто применяются при загрузке данных в корпоративное хранилище данных (КХД) для обеспечения согласованность данных. Например, когда необходимо однозначное определение соответствия значений существующего в КХД аналитического измерения и значений справочника, извлекаемого из системы-источника данных. Данная статья направлена на специалистов, ранее не знакомых с Oracle Forms.
Создание таблицы соответствия в базе данных
Примем следующий состав полей таблицы соответствия валют измерения КХД и справочника системы источника данных:
Наименование столбца таблицы | Тип данных | Комментарий |
---|---|---|
CUR_KHD | VARCHAR2(3) | Код валюты, определенный в КХД |
CUR_SRC | VARCHAR2(10) | Код валют, определенный в системе источнике данных |
EFCT_DT | DATE | Дата, с которой действует запись, определяющая соответствие двух кодов валют |
END_DT | DATE | Дата, до которой действует запись, определяющая соответствие двух кодов валют. Для активных записей принимает значение 01.01.2999 |
IS_ACT_IND | NUMBER(1) default 1 | Признак действующей записи. 1 – запись действует. 0 – запись не действует |
PPN_DT | DATE | Дата добавления записи |
UPD_DT | DATE | Дата изменения записи |
USR_LGN | VARCHAR2(50) | Логин пользователя добавившего/изменившего запись |
Ниже представлен SQL скрипт создания таблицы в базе данных Oracle и наполнения её несколькими записями. Для создания таблицы скрипт следует запустить в SQLPlus.
conn scott/tiger@dw;
create table MP_CURRENCY
(
CUR_KHD VARCHAR2(3) not null,
CUR_SRC VARCHAR2(10) not null,
EFCT_DT DATE not null,
END_DT DATE not null,
IS_ACT_IND NUMBER(1) default 1 not null,
UPD_DT DATE,
PPN_DT DATE,
SRC_USR_LGN VARCHAR2(50)
)
tablespace USERS;
alter table MP_CURRENCY
add constraint MP_CURRENCY_U1 unique (CUR_KHD, CUR_SRC, IS_ACT_IND);
comment on table MP_CURRENCY
is 'ТАБЛИЦА СООТВЕТСТВИЯ ВАЛЮТ';
comment on column MP_CURRENCY.CUR_KHD
is 'Код валюты, определенный в КХД';
comment on column MP_CURRENCY.CUR_SRC
is 'Код валют определенный в системе источнике данных';
comment on column MP_CURRENCY.EFCT_DT
is 'Дата, с которой действует запись определяющая соответствие двух кодов валют';
comment on column MP_CURRENCY.END_DT
is 'Дата, до которой действует запись определяющая соответствие двух кодов валют';
comment on column MP_CURRENCY.IS_ACT_IND
is 'Признак действующей записи. 1 – запись действует. 0 – запись не действует';
comment on column MP_CURRENCY.UPD_DT
is 'Дата добавления записи';
comment on column MP_CURRENCY.PPN_DT
is 'Дата изменения записи';
comment on column MP_CURRENCY.SRC_USR_LGN
is 'Логин пользователя добавившего/изменившего запись';
insert into MP_CURRENCY
(CUR_KHD, CUR_SRC, EFCT_DT, END_DT,
IS_ACT_IND, UPD_DT, PPN_DT, SRC_USR_LGN)
values
('USD', 'Евро', to_date('20-11-2010', 'dd-mm-yyyy'),
to_date('01-01-2999', 'dd-mm-yyyy'),
1, null, to_date('20-11-2010', 'dd-mm-yyyy'), 'SCOTT');
insert into MP_CURRENCY
(CUR_KHD, CUR_SRC, EFCT_DT, END_DT,
IS_ACT_IND, UPD_DT, PPN_DT, SRC_USR_LGN)
values
('EUR', 'Доллар', to_date('20-11-2010', 'dd-mm-yyyy'),
to_date('01-01-2999', 'dd-mm-yyyy'),
1, null, to_date('20-11-2010', 'dd-mm-yyyy'), 'SCOTT');
commit;
Установка Oracle Forms
- Необходимо скачать Oracle Forms с официального сайта Oracle. В версии 10g он входит в состав Oracle Developer Suite, в версии 11g в состав - Oracle Fusion Middleware. Далее все примеры приведены для версии 10g.
- Распаковать архив(ы).
- Запустить установку (setup.exe)
- В ходе установки определить Oracle Home (можно оставить предлагаемый по умолчанию).
- На закладке выбора типа установки выбрать Complete.
- Далее следовать указанию мастера установки.
- После необходимо прописать нужную БД в файл tnsnames.ora (ORACLE_HOME\NETWORK\ADMIN\).
В результате установки у Вас на компьютере появится web-сервер и среда разработки Oracle Forms.
Создание приложения ввода данных в таблицу соответствия
Ниже приведен перечень шагов, необходимых для выполнения при создании формы ввода значений таблицы соответствия MP_CURRENCY.
1. Запустить локальный web-сервер OC4J.
2. Открыть приложение Oracle Forms Builder. Показать пример.
3. Подключиться к БД. Нажать Ctrl+J. Ввести логин, пароль и имя БД.
4. Сохранить форму. Имя присвоить MP_CURRENCY_v1. Показать пример.
5. Создать канву: установить курсор на элемент Canvases и нажать кнопку.
6. Присвоить (как переименовывание файлов в проводнике Windows) имя MP_CURRENCY окну, канве, форме.
7. Вызвать панель свойств окна (правой кнопкой мышки щелкнуть на наименовании окна (MP_CURRENCY), в появившемся меню выбрать "Property Palette". В свойстве окна Title указать название формы на русском языке - "ТАБЛИЦА СООТВЕТСТВИЯ ВАЛЮТ". В свойстве Width - 400, в свойстве Height - 250. Показать пример.
8. В свойстве Background Color канвы (Canvas) установить значение gray20. Показать пример.
9. Создать визуальный атрибут с именем VSL_ATR_YELLOW и назначить свойство цвета фона «yellow». Показать пример.
10. Вызвать мастер добавления блока данных. Нажать правой кнопкой мышки на элемент Data Block в окне Object Navigator, в появившемся меню выбрать Data Block Wizard. Показать пример.
11. Используя мастер добавление блоков данных, выбираем создание блока данных на основе таблицы или представления (Table or View). Далее в выбираем таблицу MP_CURRENCY, добавляем все её поля в блок данных и нажимаем кнопку "Готово". Показать пример.
12. Отредактировать следующие свойства блока данных MP_CURRENCY (панель свойств вызывается по нажатию кнопки F4):
Number of Records Displayed – указать количество строк, которое будет отображаться на форме (в нашем примере укажем 10).
Show Scroll Bar – указать Yes.
Scroll Bar Canvas - указать канву, на которой будет располагаться Scroll Bar (в нашем примере это MP_CURRENCY).
13. Для элементов блока данных, которые будут отображаться на форме и не подлежать редактированию пользователями (в нашем примере это UPD_DT, PPN_DT, SRC_USR_LGN), установить следующие значения:
Enable установить No;
Number of Items Displayed установить 1;
Canvas установить MP_CURRENCY;
Background Color установить white;
Bevel установить Plain;
Font Name установить Arial;
Font Size установить 10;
Prompt Font Name установить Arial;
Prompt Font Size установить 8;
Width установить в 54 для UPD_DT, PPN_DT и в 100 для SRC_USR_LGN.
14. Для всех элементов блока данных, которые будут отображаться на форме и в которых предметный эксперт будет вводить соответствия (в нашем примере это CUR_KHD и CUR_SRC), установить следующие значения для свойств:
Current Record Visual Attribute Group установить VSL_ATR_YELLOW;
Canvas установить MP_CURRENCY;
Background Color установить white;
Bevel установить Plain;
Font Name установить Arial;
Font Size установить 10;
Prompt Font Name установить Arial;
Prompt Font Size установить 8.
15. Для всех элементов блока данных, которые будут отображаться на форме и в которые предметный эксперт будет вводить данные о датах активации записи срока ее действия (в нашем примере это EFCT_DT и END_DT) установить следующие значения для свойств:
Current Record Visual Attribute Group установить VSL_ATR_YELLOW;
Canvas установить MP_CURRENCY;
Required установить в No;
Background Color установить white;
Bevel установить Plain;
Font Name установить Arial;
Font Size установить 10;
Prompt Font Name установить Arial;
Width установить 54;
Prompt Font Size установить 8.
16. Для элемента IS_ACT_IND (данный элемент устанавливает признак активной или не активной записи) установить следующие значения для свойств:
Item Type установить Check Box;
Value when Checked установить 1;
Value when Unchecked установить 0;
Initial Value установить 1;
Width установить 12;
Canvas установить MP_CURRENCY.
17. Для всех элементов типа дата (в нашем примере это EFCT_DT, END_DT, UPD_DT, PPN_DT) установить для свойства Format Mask следующее значение «DD.MM.YYYY».
18. Открыть канву (двойной клик левой кнопкой мышки) и разместить элементы на нем (путем перетягивания мышкой) так, как пользователю будет удобно работать с формой.
19. Подобрать размеры канвы и размеры окна (путем перетягивания их области мышкой).
20. Дать названия полям на русском языке (двойной клин на названии или свойство Prompt элемента). Показать пример.
21. Добавить триггер WHEN-NEW-FORM-INSTANCE (содержимое триггера будет выполняться при запуске формы): установить курсор на элемент Triggers, нажать правую кнопку мышки, в появившемся окне меню выбрать нужный триггер. В теле триггера написать следующий код:
execute_query;
22. Добавить триггер PRE-INSERT (содержимое триггера будет выполняться перед вставкой строк(и) в таблицу БД) на блок данных: установить курсор на элемент Triggers, нажать правую кнопку мышки, в появившемся окне меню выбрать нужный триггер. В теле триггера написать следующий код:
:EFCT_DT:=SYSDATE;
:END_DT:=to_date('01.01.2999', 'DD.MM.YYYY');
:PPN_DT:=SYSDATE;
:SRC_USR_LGN:=get_application_property(USERNAME);
23. Добавить триггер PRE-UPDATE (содержимое триггера будет выполняться перед применением изменений в таблице БД) на блок данных: установить курсор на элемент Triggers, нажать правую кнопку мышки, в появившемся окне меню выбрать нужный триггер. В теле триггера написать следующий код:
IF :System.Record_Status = 'CHANGE' THEN
:UPD_DT:=SYSDATE;
:SRC_USR_LGN:=get_application_property(USERNAME);
END IF;
24. Добавить триггер WHEN-CHECKBOX-CHANGED (содержимое триггера будет выполняться при нажатии/отжатии "галочки") на элемент IS_ACT_IND: установить курсор на элемент Triggers, нажать правую кнопку мышки, в появившемся окне меню выбрать нужный триггер. В теле триггера написать следующий код:
IF :IS_ACT_IND = 1 THEN
:END_DT := to_date('01.01.2999', 'DD.MM.YYYY');
ELSE
:END_DT := SYSDATE;
END IF;
25. Откомпилировать форму, используя комбинацию клавиш Ctrl+T. Если ошибок нет, то никакого сообщения не появится, иначе появляется окно с указанием на ошибку. В случае возникновения ошибок необходимо их устранить и повторить попытку компиляции формы.
26. Сохранить форму: нажать комбинацию клавиш Ctrl+S.
27. Запустить форму для тестирования: нажать комбинацию клавиш Ctrl+R. Если Вы запускаете форму первый раз, то Вам будет предложено установить Oracle Java Initiator. Показать пример.
28. Используя кнопки панели управления, провести тестирование работоспособности формы на возможность ввода данных, изменения и удаления данных.
Скачать пример реализации в Oracle Forms формы данных.