Некоторые известные IDE имеют API, который позволяет разработчикам создавать модули (плагины IDE, расширения), взаимодействующие с редакторами и другими компонентами IDE. Например. Embarcadero Delphi имеет Open Tools API, который позволяет разработчикам создавать (и интегрировать в Delphi IDE) модули, которые программно создают формы, размещают на них компоненты, пишут код внутри файлов и так далее. Это замечательные функции, потому что они позволяют разработчикам интегрировать эти платформы (VCL, ADF и т. д.) в рабочие процессы Model Driven Development (MDD) (будь то коммерческие или созданные по индивидуальному заказу командой разработчиков).
Вопрос в том - есть ли у JDeveloper такая фича - создавать модули программно. Например. можно представить себе рабочий процесс, в котором диаграмма классов UML создается каким-либо сторонним инструментом. Можно ли написать какой-нибудь модуль преобразования MDD (как плагин JDeveloper), который программно генерирует необходимые бизнес-компоненты и веб-формы ADF?
Конечно, бизнес-компоненты и формы можно создавать вручную, но Oracle ADF или JDeveloper предоставляют некоторый API, который позволяет программно создавать эти компоненты и формы без взаимодействия с пользователями. Все входные данные могут быть предоставлены в виде XML-файла (выводимого дизайнером UML или каким-либо другим инструментом).
Насколько я знаю, есть JDeveloper Extensions, но на форумах Oracle я получил ответы, что JDeveloper Extensions не предназначены для такого использования.
Я предполагаю, что ADF Essentials становится довольно популярным, и должен возникнуть интерес к интеграции ADF Essentials в рабочие процессы MDD. Возможно, есть какие-то скрытые функции расширений JDeveloper или, может быть, даже отдельные проекты с открытым исходным кодом, которые уже позволяют такую интеграцию.
Конечно, бизнес-компоненты и формы ADF представляют собой обычные файлы кода (XML, Java), и процесс их создания может быть реконструирован. Может быть, есть какие-то постоянные попытки сделать это? Я мог бы внести свой вклад в них и не начинать новый проект с нуля.
Сам JDeveloper имеет некоторые функции MDD, но я не уверен, что они достаточно богаты и гибки.