diff --git a/doc/content/manual/ru/chapter_development.xml b/doc/content/manual/ru/chapter_development.xml index 0847e21b1f..765264adcc 100644 --- a/doc/content/manual/ru/chapter_development.xml +++ b/doc/content/manual/ru/chapter_development.xml @@ -117,7 +117,7 @@
Файловая структура проекта - Рассмотрим файловую структуру проекта на примере простого приложения Sales, состоящего из блоков Middleware и Web Client. + Рассмотрим файловую структуру проекта на примере простого приложения Sales, состоящего из блоков Middleware, Web Client и Web Portal.
Файловая структура проекта @@ -127,7 +127,7 @@
В корне проекта расположены скрипты сборки build.gradle, settings.gradle и проектные файлы IntelliJ IDEA. - В каталоге modules расположены подкаталоги модулей проекта − global, core, gui, web. + В каталоге modules расположены подкаталоги модулей проекта − global, core, gui, portal, web.
Структура модуля global @@ -137,9 +137,9 @@
Модуль global содержит каталог исходных текстов src, в корне которого располагаются конфигурационные файлы - sales-metadata.xml + metadata.xml и - sales-persistence.xml + persistence.xml . Пакет com.sample.sales.core содержит интерфейсы сервисов Middleware, пакет com.sample.sales.entity - классы сущностей и файлы локализации для них.
Структура модуля core @@ -155,9 +155,9 @@ src - каталог исходных текстов, в корне которого расположены файл свойств приложения блока Middleware и конфигурационные файлы - sales-spring.xml + spring.xml и - sales-views.xml + views.xml . Пакет com.samples.sales.core содержит классы Middleware: реализации сервисов, управляемые бины, JMX-бины. @@ -177,7 +177,7 @@
Модуль gui содержит каталог исходных текстов src, в корне которого располагается конфигурационный файл - sales-screens.xml + screens.xml . Пакет com.sample.sales.gui содержит XML-дескрипторы и контроллеры экранов и файлы локализации для них.
Структура модуля web @@ -190,13 +190,13 @@ Модуль web содержит следующие каталоги: src - каталог исходных текстов, в корне которого расположены файл свойств приложения блока Web Client и конфигурационные файлы - sales-web-menu.xml + web-menu.xml , - sales-web-permissions.xml + web-permissions.xml , - sales-web-screens.xml + web-screens.xml и - sales-web-spring.xml + web-spring.xml . Пакет com.samples.sales.web содержит главный класс блока Web Client (наследник DefaultApp) и главный пакет локализованных сообщений. diff --git a/doc/content/manual/ru/chapter_framework.xml b/doc/content/manual/ru/chapter_framework.xml index 54d785192b..d11d9ea465 100644 --- a/doc/content/manual/ru/chapter_framework.xml +++ b/doc/content/manual/ru/chapter_framework.xml @@ -2104,7 +2104,7 @@ Date date = timeSource.currentTimestamp();long Например, набор файлов свойств блока Middleware проекта sales задается в файле web/WEB-INF/web.xml модуля core, и выглядит следующим образом: classpath:cuba-app.properties -classpath:sales-app.properties +classpath:app.properties file:${catalina.home}/conf/app-core/local.app.properties Здесь префикс classpath: означает, что данный файл нужно искать в Java classpath, префикс file: − в файловой системе. Возможно использование системных свойств Java, в данном случае это catalina.home − путь к корню Tomcat. Порядок перечисления файлов важен, так как значения, указанные в каждом последующем файле заменяют значения одноименных свойств, заданные в предыдущих файлах. Этим достигается переопределение свойств платформы в конкретном приложении. @@ -2645,7 +2645,7 @@ public class OrderServiceBean implements OrderService { } Класс сервиса, как и класс любого другого управляемого бина, должен находиться внутри дерева пакетов с корнем, заданным в элементе context:component-scan файла spring.xml - . В нашем случае файл sales-spring.xml содержит элемент:<context:component-scan base-package="com.sample.sales"/>что означает, что поиск аннотированных бинов для данного блока приложения будет происходить начиная с пакета com.sample.sales. + . В нашем случае файл spring.xml содержит элемент:<context:component-scan base-package="com.sample.sales"/>что означает, что поиск аннотированных бинов для данного блока приложения будет происходить начиная с пакета com.sample.sales. @@ -2659,7 +2659,7 @@ public class OrderServiceBean implements OrderService { Фабрика прокси-объектов конфигурируется в файле spring.xml ссответствующего клиентского блока. - Например, чтобы в приложении sales вызвать с веб-клиента сервис sales_OrderService, необходимо добавить в файл sales-web-spring.xml модуля web следующее: + Например, чтобы в приложении sales вызвать с веб-клиента сервис sales_OrderService, необходимо добавить в файл web-spring.xml модуля web следующее: <bean id="sales_proxyCreator" class="com.haulmont.cuba.web.sys.remoting.WebRemoteProxyBeanCreator"> <property name="clusterInvocationSupport" ref="cuba_clusterInvocationSupport"/> <property name="remoteServices"> @@ -2698,7 +2698,7 @@ public class OrderWorker { Рекомендуется присваивать бину уникальное имя вида {имя_проекта}_{имя_класса}, и определять его в константе NAME. Класс управляемого бина должен находиться внутри дерева пакетов с корнем, заданным в элементе context:component-scan файла spring.xml - . В нашем случае файл sales-spring.xml содержит элемент:<context:component-scan base-package="com.sample.sales"/>что означает, что поиск аннотированных бинов для данного блока приложения будет происходить начиная с пакета com.sample.sales. + . В нашем случае файл spring.xml содержит элемент:<context:component-scan base-package="com.sample.sales"/>что означает, что поиск аннотированных бинов для данного блока приложения будет происходить начиная с пакета com.sample.sales. Если нужно обеспечить возможность подмены реализации, рекомендуется выделять бизнес-интерфейс бина, например следующим образом: package com.sample.sales.core; @@ -2838,7 +2838,7 @@ public class Orders implements OrdersMBean { - Регистрация JMX-бина в sales-spring.xml: + Регистрация JMX-бина в spring.xml: <bean id="sales_MBeanExporter" lazy-init="false" class="com.haulmont.cuba.jmxcontrol.export.MBeanExporter"> <property name="beans"> diff --git a/doc/content/manual/ru/chapter_quick_start.xml b/doc/content/manual/ru/chapter_quick_start.xml index 8199c079f2..2b0e1f372a 100644 --- a/doc/content/manual/ru/chapter_quick_start.xml +++ b/doc/content/manual/ru/chapter_quick_start.xml @@ -88,7 +88,6 @@ Разворачиваем собранные артефакты и библиотеки проекта в Tomcat: gradle deploy - Создаем базу данных на локальном сервере PostgreSQL: @@ -163,7 +162,7 @@ @javax.persistence.Column − связывает атрибут сущности с колонкой таблицы. Параметр nullable = false делает атрибут сущности обязательным к заполнению. Параметр length задает максимальную длину текстового атрибута, по умолчанию 255. - После создания класса зарегистрируйте его в файле sales-persistence.xml модуля global в элементе persistence-unit:<class>com.sample.sales.entity.Customer</class> + После создания класса зарегистрируйте его в файле persistence.xml модуля global в элементе persistence-unit:<class>com.sample.sales.entity.Customer</class> Для локализации имен сущностей и атрибутов создайте файлы messages.properties и messages_ru.properties в том же пакете, что и классы. В этих файлах определяются строки с ключом класс_сущности для названия сущности и класс_сущности.атрибут для названий атрибутов. Эти названия будут использованы при отображении списка экземпляров и в окне редактирования сущности. @@ -199,11 +198,11 @@ Order.amount=Amount Order.customer=Покупатель Order.date=Дата Order.amount=Сумма - Зарегистрируйте сущность Заказ в файле sales-persistence.xml модуля global: <class>com.sample.sales.entity.Order</class> + Зарегистрируйте сущность Заказ в файле persistence.xml модуля global: <class>com.sample.sales.entity.Order</class>
Создание пользовательского интерфейса приложения - Для ограничения списка поддерживаемых языков интерфейса откройте файл sales-web-app.properties модуля web и добавьте в него следующее значение:cuba.availableLocales=English|en;Russian|ru + Для ограничения списка поддерживаемых языков интерфейса откройте файл web-app.properties модуля web и добавьте в него следующее значение:cuba.availableLocales=English|en;Russian|ru Файлы, относящиеся к экранам, будем создавать в пакете com.sample.sales.gui модуля gui. Любой экран определяется XML-дескриптором, описывающим источники данных и расположение визуальных компонентов экрана. У экрана также может быть контроллер − Java-класс, содержащий логику инициализации и обработки событий экрана.
@@ -223,9 +222,9 @@ Order.amount=Сумма Элемент rowsCount позволяет организовать постраничный вывод данных таблицы и отобразить общее количество строк. Элемент actions задает набор контекстных действий с таблицей. В нашем случае все указанные действия являются стандартными (что определяется именем действия в атрибуте id элемента action), и не требуют дополнительного кодирования. Задание некоторого действия для таблицы приводит к появлению соответствующего пункта контекстного меню таблицы. Над таблицей находится панель (элемент buttonsPanel), содержащая кнопки для управления данными в этой таблице. Кнопки связаны с действиями (actions) таблицы, и в данном случае дублируют пункты контекстного меню. - XML-дескриптор экрана должен иметь идентификатор, по которому его можно вызвать из меню или из программного кода. Идентификатор в нашем случае назначается в файле sales-screens.xml модуля gui <screen id="sales$Customer.lookup" template="/com/haulmont/sales/gui/customer/customer-browse.xml"/> + XML-дескриптор экрана должен иметь идентификатор, по которому его можно вызвать из меню или из программного кода. Идентификатор в нашем случае назначается в файле screens.xml модуля gui <screen id="sales$Customer.lookup" template="/com/haulmont/sales/gui/customer/customer-browse.xml"/> Идентификатор sales$Customer.lookup удовлетворяет соглашению, по которому экраны списков сущностей должны иметь вид {entity_name}.lookup. Данное соглашение облегчает настройку визуальных компонентов, работающих со ссылочными атрибутами сущностей. - Чтобы вызывать экран из главного меню приложения, добавьте в файл sales-web-menu.xml модуля web следующий элемент:<menu id="sales" insertBefore="administration"> + Чтобы вызывать экран из главного меню приложения, добавьте в файл web-menu.xml модуля web следующий элемент:<menu id="sales" insertBefore="administration"> <item id="sales$Customer.lookup"/> </menu> Для того, чтобы пункт меню содержал локализованное имя экрана, добавьте в главный пакет сообщений модуля web (файлы messages.properties и messages_ru.properties пакета com.sample.sales.web следующие строки: @@ -267,7 +266,7 @@ menu-config.sales$Customer.lookup=Покупатели Атрибуты id элементов field группы полей соответствуют именам редактируемых атрибутов сущности. Атрибут expand элемента layout нужен для того, чтобы растянуть фрейм на все свободное пространство по вертикали, тогда кнопки окажутся прижатыми вверх к группе полей. - Зададим идентификатор экрана в файле sales-screens.xml модуля gui <screen id="sales$Customer.edit" template="/com/haulmont/sales/gui/customer/customer-edit.xml"/> + Зададим идентификатор экрана в файле screens.xml модуля gui <screen id="sales$Customer.edit" template="/com/haulmont/sales/gui/customer/customer-edit.xml"/> Для правильной работы стандартных действий create и edit таблицы в экране списка необходимо, чтобы идентификатор экрана редактирования соответствовал виду {entity_name}.edit Попробуем добавить и отредактировать Покупателя в работающем приложении. Для этого пересоберите проект gradle restart @@ -285,7 +284,7 @@ menu-config.sales$Customer.lookup=Покупатели Экран списка Заказов Создайте пакет com.sample.sales.gui.order и в нем файл order-browse.xml следующего содержания: Данный экран аналогичен описанному в и имеет следующую особенность: так как среди прочих отображается ссылочный атрибут Order.customer, требуется определить представление сущности Order, включающее этот атрибут (стандартные представления _local и _minimal не включают ссылочных атрибутов). - Определите представление orderWithCustomer в файле sales-views.xml модуля core: <view class="com.sample.sales.entity.Order" + Определите представление orderWithCustomer в файле views.xml модуля core: <view class="com.sample.sales.entity.Order" name="orderWithCustomer" extends="_local"> <property name="customer" view="_minimal"/> @@ -293,8 +292,8 @@ menu-config.sales$Customer.lookup=Покупатели Создайте файлы messages.properties и messages_ru.properties в пакете com.sample.sales.gui.order, и внесите в них локализацию заголовка экрана: messages.properties browserCaption=Orders messages_ru.properties browserCaption=Заказы - Далее зарегистрируйте экран в файле sales-screens.xml модуля gui: <screen id="sales$Order.lookup" template="/com/haulmont/sales/gui/order/order-browse.xml"/> - и добавьте соответствующий пункт меню в файл sales-web-menu.xml модуля web: <item id="sales$Order.lookup"/> + Далее зарегистрируйте экран в файле screens.xml модуля gui: <screen id="sales$Order.lookup" template="/com/haulmont/sales/gui/order/order-browse.xml"/> + и добавьте соответствующий пункт меню в файл web-menu.xml модуля web: <item id="sales$Order.lookup"/> Локализованные названия нового пункта меню добавьте в главный пакет сообщений модуля web (файлы messages.properties и messages_ru.properties пакета com.sample.sales.web): messages.properties menu-config.sales$Order.lookup=Orders @@ -319,7 +318,7 @@ menu-config.sales$Customer.lookup=Покупатели Добавьте в файлы messages.properties и messages_ru.properties пакета com.sample.sales.gui.order локализацию заголовка экрана редактирования: messages.properties editorCaption=Order messages_ru.properties editorCaption=Заказ - Зарегистрируйте экран в файле sales-screens.xml модуля gui: + Зарегистрируйте экран в файле screens.xml модуля gui: <screen id="sales$Order.edit" template="/com/haulmont/sales/gui/order/order-edit.xml"/> Пересоберите проект gradle restart diff --git a/doc/content/manual/ru/img/project_structure.png b/doc/content/manual/ru/img/project_structure.png index 73af2b5a48..e2c7c089b9 100644 Binary files a/doc/content/manual/ru/img/project_structure.png and b/doc/content/manual/ru/img/project_structure.png differ diff --git a/doc/content/manual/ru/img/project_structure_core.png b/doc/content/manual/ru/img/project_structure_core.png index d46e714e17..0e0a0aec65 100644 Binary files a/doc/content/manual/ru/img/project_structure_core.png and b/doc/content/manual/ru/img/project_structure_core.png differ diff --git a/doc/content/manual/ru/img/project_structure_global.png b/doc/content/manual/ru/img/project_structure_global.png index 143215f794..6cf4e1177c 100644 Binary files a/doc/content/manual/ru/img/project_structure_global.png and b/doc/content/manual/ru/img/project_structure_global.png differ diff --git a/doc/content/manual/ru/img/project_structure_gui.png b/doc/content/manual/ru/img/project_structure_gui.png index 7e74c7569c..9262aafb7d 100644 Binary files a/doc/content/manual/ru/img/project_structure_gui.png and b/doc/content/manual/ru/img/project_structure_gui.png differ diff --git a/doc/content/manual/ru/img/project_structure_web.png b/doc/content/manual/ru/img/project_structure_web.png index 3d53d08678..10f5b3e202 100644 Binary files a/doc/content/manual/ru/img/project_structure_web.png and b/doc/content/manual/ru/img/project_structure_web.png differ diff --git a/doc/content/manual/ru/manual.xml b/doc/content/manual/ru/manual.xml index e2613cb1ff..b1dc8f7305 100644 --- a/doc/content/manual/ru/manual.xml +++ b/doc/content/manual/ru/manual.xml @@ -567,7 +567,7 @@ menu-config.sales$Customer.lookup=Customers <param-name>appPropertiesConfig</param-name> <param-value> classpath:cuba-app.properties - classpath:sales-app.properties + classpath:app.properties file:${catalina.home}/conf/app-core/local.app.properties </param-value> </context-param> @@ -619,7 +619,7 @@ menu-config.sales$Customer.lookup=Customers <param-name>appPropertiesConfig</param-name> <param-value> classpath:cuba-web-app.properties - classpath:sales-web-app.properties + classpath:web-app.properties file:${catalina.home}/conf/app/local.app.properties </param-value> </context-param> @@ -921,7 +921,7 @@ menu-config.sales$Customer.lookup=Customers Resources . Используется в блоках Web Client и Desktop Client. - Пример:cuba.menuConfig=cuba-web-menu.xml sales-web-menu.xml + Пример:cuba.menuConfig=cuba-web-menu.xml web-menu.xml @@ -934,7 +934,7 @@ menu-config.sales$Customer.lookup=Customers Resources . Используется в блоке Middleware. - Пример:cuba.metadataConfig=cuba-metadata.xml sales-metadata.xml + Пример:cuba.metadataConfig=cuba-metadata.xml metadata.xml @@ -974,7 +974,7 @@ menu-config.sales$Customer.lookup=Customers permissions.xml . Используется в блоках Web Client и Desktop Client. - Пример:cuba.permissionConfig=cuba-web-permissions.xml sales-web-permissions.xml + Пример:cuba.permissionConfig=cuba-web-permissions.xml web-permissions.xml @@ -987,7 +987,7 @@ menu-config.sales$Customer.lookup=Customers Resources . Используется в блоке Middleware. - Пример:cuba.persistenceConfig=cuba-persistence.xml sales-persistence.xml + Пример:cuba.persistenceConfig=cuba-persistence.xml persistence.xml @@ -1013,7 +1013,7 @@ menu-config.sales$Customer.lookup=Customers Resources . Используется в блоке Middleware. - Пример:cuba.remotingSpringContextConfig=cuba-remoting-spring.xml sales-remoting-spring.xml + Пример:cuba.remotingSpringContextConfig=cuba-remoting-spring.xml remoting-spring.xml @@ -1026,7 +1026,7 @@ menu-config.sales$Customer.lookup=Customers Resources . Используется во всех стандартных блоках. - Пример:cuba.springContextConfig=cuba-spring.xml sales-spring.xml + Пример:cuba.springContextConfig=cuba-spring.xml spring.xml @@ -1120,7 +1120,7 @@ menu-config.sales$Customer.lookup=Customers Конфигурационный параметр, задающий набор файлов views.xml, автоматически развертываемых на старте приложения. См. Используется во всех стандартных блоках. - Пример:cuba.viewsConfig=cuba-views.xml reports-views.xml sales-views.xml + Пример:cuba.viewsConfig=cuba-views.xml reports-views.xml views.xml @@ -1133,7 +1133,7 @@ menu-config.sales$Customer.lookup=Customers Resources . Используется в блоках Web Client и Desktop Client. - Пример:cuba.windowConfig=cuba-web-screens.xml sales-web-screens.xml + Пример:cuba.windowConfig=cuba-web-screens.xml web-screens.xml