Суть этого практикума в том, что он показывает, то с чем приходится иметь дело в реальной разработки больших проектов. А именно модульное построение приложения, динамическое подключение модулей.
Состоит приложение из оболочки AppShell, которая использует реестр taskFlow из таблицы БД, загружает его при старте, и на его основе строит интерфейс (закладки в panelTabbed). Реализация функционала который размещается на вкладках, выполнен в разных shared library, которые самостоятельно загружены на WLS.
Для примера используется схема HR на XE. Дополнительная таблица и данные для примера:
Данные для примера (реестр taskFlow)
Состоит приложение из оболочки AppShell, которая использует реестр taskFlow из таблицы БД, загружает его при старте, и на его основе строит интерфейс (закладки в panelTabbed). Реализация функционала который размещается на вкладках, выполнен в разных shared library, которые самостоятельно загружены на WLS.
Для примера используется схема HR на XE. Дополнительная таблица и данные для примера:
-- Create table create table REGISTER_TF ( ID VARCHAR2(100) not null, NAME VARCHAR2(50), PATH VARCHAR2(100) not null ) ; -- Create/Recreate primary, unique and foreign key constraints alter table REGISTER_TF add constraint PK_REGISTER_TF_ID primary key (ID) ;
Данные для примера (реестр taskFlow)
insert into register_tf (id, name, path)values ('task-flow-employees', 'Employees', '/WEB-INF/task-flow-employees.xml'); insert into register_tf (id, name, path)values ('task-flow-departments', 'Departments', '/WEB-INF/task-flow-departments.xml');
Основу по мульти обработке во "фронте" обеспечивает - компонент MultiTaskFlow
MultiTaskFlow - привязан к списку
В свою очередь список загружается при старте из реестра
Таким образом получим две закладки, которые в свою очередь загрузят две библиотеки.
К проекту AppShell не надо добавлять явно эти библиотеки, надо только указать их в "weblogic-application.xml"
Проекты AppLib простые и содержат по одному VO, AppModule, taskFlow, и странице. Реализуют функционал для просмотра Employees и Departments соответственно.
taskFlow этих библиотек зарегистрированы в реестре, сами библиотеки размещены как shared library на WLS.
Все подключения в проектах используют - DataSource "hr", на WLS создан JNDI -
Конечно в жизни загружать весь реестр taskFlow возможно не надо, а делать это по мере необходимости.
Подобные подходы помогут обеспечить большую гибкость в разработке и функционировании приложения.
Источники:
Configuring a Page To Render an Unknown Number of Regions
http://docs.oracle.com/cd/E16162_01/web.1112/e16182/taskflows_regions.htm#CHDBDDFE
Исходный код
MultiTaskFlow - привязан к списку
public class MultiBean { private List<TaskFlowBindingAttributes> mTaskFlowBindingAttrs = new ArrayList<TaskFlowBindingAttributes>(5); public MultiBean() { } public List<TaskFlowBindingAttributes> getTaskFlowList() { return mTaskFlowBindingAttrs; }
public String initList() { ViewObject vo = ADFUtils.findIterator("RegisterVOIterator").getViewObject(); vo.executeQuery(); Row row = vo.first(); while(row!=null){ TaskFlowBindingAttributes tfAttr = new TaskFlowBindingAttributes(); tfAttr.setId((String)row.getAttribute("Name")); tfAttr.setTaskFlowId(new TaskFlowId((String)row.getAttribute("Path"), (String)row.getAttribute("Id"))); mTaskFlowBindingAttrs.add(tfAttr); row = vo.next(); } return null; }
Таким образом получим две закладки, которые в свою очередь загрузят две библиотеки.
К проекту AppShell не надо добавлять явно эти библиотеки, надо только указать их в "weblogic-application.xml"
Проекты AppLib простые и содержат по одному VO, AppModule, taskFlow, и странице. Реализуют функционал для просмотра Employees и Departments соответственно.
taskFlow этих библиотек зарегистрированы в реестре, сами библиотеки размещены как shared library на WLS.
Все подключения в проектах используют - DataSource "hr", на WLS создан JNDI -
Конечно в жизни загружать весь реестр taskFlow возможно не надо, а делать это по мере необходимости.
Подобные подходы помогут обеспечить большую гибкость в разработке и функционировании приложения.
Источники:
Configuring a Page To Render an Unknown Number of Regions
http://docs.oracle.com/cd/E16162_01/web.1112/e16182/taskflows_regions.htm#CHDBDDFE
Исходный код
Комментариев нет:
Отправить комментарий