Когда выдалось начинать осваивать написание расширений под OeBS, первым делом был полнейший шок, так как это был, так сказать, этакий монстр, и как к нему подойти даже не представлялось :).
Но, в принципе, так как сроки по расширению были критичными, первым делом было сделано copy-paste другого расширения, и его доведение до рабочего состояния.
После некоторого облегчения от выполненной задачи, была прочитана куча документации:
- сначала – по flexfields – после чего, поняв принцип гибких полей, оставалось только искать таблицу-первоисточник, и правильно с ними работать, а это оказалось очень просто.
- затем – application developer guide – после чего, написание форм под OeBS совсем не пугало, и более того, это было не сложнее, чем при разработке в обычных проектах, из которых как раз переносил куски кода по работе с визуальными элементами 🙂 🙂
- и еще куча всего
После написания десятка расширений возникло желание написать универсальный механизм управления установки/удаления расширения, так как от расширения к расширению приходилось писать ручное создание, а тем более удаление объектов расширения, приходилось постоянно искать разные куски кода для вставки.
Так родилось расширение для инсталляции/деинсталляции других расширений. Но так как в проекте не удалось его зарегистрировать как расширение (оно даже и к лучшему), то далее во всех проектах оно было переделано как PL/SQL-скрипт. И требовалось исправить только в двух местах, которые определяли схему размещения пользовательских объектов базы данных.
Рассмотрим подробнее
Основные достоинства
- универсальный механизм установки и удаления расширения
- гибкая возможность удаления расширения
- автоматическое ведение лога проводимых операций
Установка расширения (скрипт регистрации расширения)
- регистрация расширения для запуска под указанными полномочиями
- регистрация функции в меню
- регистрация новой формы, автоматически создается функция и меню
- регистрация отчета с его параметрами
- регистрация таблицы
- создание независимого списка значений (список значений)
- создание независимого списка значений (без списка, проверка)
- создание табличного списка значений
- создание кода поиска
- создание профиля
- создание сообщений
Удаление расширения (скрипт удаления расширения)
- установка признака удаления набора значения при удалении расширения (это необходимо, если набор значений данного расширения используется в другом расширении (например, параметр другого отчета использует этот набор значений), то при попытке его (набора значений) удалить, получаем ошибку)
- установка признака удаления объектов базы данных
- ручное и/или автоматическое заполнение списка объектов OeBS и серверных объектов (объектов базы данных) для удаления
- удаление параллельной программы
- удаление файла параллельной программы
- удаление параллельной программы и ее файла
- удаление списков значений
- удаление кодов поиска
- удаление профиля
- удаление сообщений
- удаление регистрации таблицы
- удаление формы
- удаление функции
- удаление меню
Для автоматического заполнения списка для удаления объектов базы данных выбираются следующие типы объектов
- CONSUMER GROUP
- CONTEXT
- EVALUATION CONTEXT
- FUNCTION
- INDEX
- INDEX PARTITION
- INDEXTYPE
- JAVA CLASS
- JAVA DATA
- JAVA RESOURCE
- JAVA SOURCE
- LIBRARY
- LOB
- MATERIALIZED VIEW
- OPERATOR
- PACKAGE
- PACKAGE BODY
- PROCEDURE
- QUEUE
- SEQUENCE
- SYNONYM
- TABLE
- TABLE PARTITION
- TRIGGER
- TYPE
- TYPE BODY
- VIEW
Дополнительные утилиты
- Выгрузка кода поиска в текстовый вариант для последующей корректировки и вставки в скрипт регистрации расширения
- Вызов процедуры пересоздания MSB файлов (пользовательских сообщений)