Платформа CUBA. Руководство по разработке приложений

Версия 5.6


Содержание

Предисловие
1. Введение
1.1. Обзор платформы
1.2. Технические требования
1.3. Release Notes
2. Установка и настройка инструментария
2.1. Установка CUBA Studio
2.2. Интеграция CUBA Studio с IDE
3. Быстрый старт
3.1. Описание задачи
3.2. Создание проекта
3.3. Создание сущностей
3.4. Создание таблиц базы данных
3.5. Создание экранов пользовательского интерфейса
3.5.1. Экраны управления Покупателями
3.5.2. Экраны управления Заказами
3.5.3. Меню приложения
3.5.4. Экран редактирования Покупателя со списком Заказов
3.6. Запуск приложения
4. Устройство платформы
4.1. Архитектура
4.1.1. Уровни и блоки приложения
4.1.2. Модули приложения
4.1.3. Базовые проекты
4.1.4. Состав приложения
4.2. Общие компоненты
4.2.1. Модель данных
4.2.1.1. Базовые классы сущностей
4.2.1.2. Аннотации сущностей
4.2.1.2.1. Аннотации класса
4.2.1.2.2. Аннотации атрибутов
4.2.1.3. Атрибуты типа enum
4.2.1.4. Мягкое удаление
4.2.1.4.1. Использование
4.2.1.4.2. Политика обработки связей
4.2.1.4.3. Ограничение уникальности на уровне БД
4.2.2. Metadata Framework
4.2.2.1. Интерфейсы метаданных
4.2.2.2. Формирование метаданных
4.2.2.3. Datatype
4.2.2.3.1. Пример форматирования даты в UI
4.2.2.3.2. Примеры форматирования дат и чисел в коде приложения
4.2.2.3.3. Пример специализированного Datatype
4.2.2.4. Мета-аннотации
4.2.3. Представления
4.2.3.1. Создание представлений
4.2.4. Управляемые бины
4.2.4.1. Создание бина
4.2.4.2. Использование бина
4.2.5. JMX-бины
4.2.5.1. Создание JMX-бина
4.2.5.2. JMX-бины платформы
4.2.5.2.1. CachingFacadeMBean
4.2.5.2.2. ConfigStorageMBean
4.2.5.2.3. EmailerMBean
4.2.5.2.4. PersistenceManagerMBean
4.2.5.2.5. ScriptingManagerMBean
4.2.5.2.6. ServerInfoMBean
4.2.6. Интерфейсы инфраструктуры
4.2.6.1. Configuration
4.2.6.2. Messages
4.2.6.2.1. MessageTools
4.2.6.3. Metadata
4.2.6.3.1. MetadataTools
4.2.6.4. Resources
4.2.6.5. Scripting
4.2.6.6. Security
4.2.6.7. TimeSource
4.2.6.8. UserSessionSource
4.2.6.9. UuidSource
4.2.6.10. DataManager
4.2.6.10.1. Запросы с distinct
4.2.6.10.2. Последовательная выборка
4.2.7. AppContext
4.2.8. Свойства приложения
4.2.8.1. Доступ к свойствам
4.2.8.2. Хранение свойств в файлах
4.2.8.3. Хранение свойств в базе данных
4.2.8.4. Конфигурационные интерфейсы
4.2.8.4.1. Использование
4.2.8.4.2. Типы свойств
4.2.8.4.3. Значения по умолчанию
4.2.9. Локализация сообщений
4.2.9.1. Пакеты сообщений
4.2.9.2. Главный пакет сообщений
4.2.9.3. Локализация названий сущностей и атрибутов
4.2.9.4. Локализация enum
4.2.10. Аутентификация пользователей
4.2.10.1. UserSession
4.2.10.2. Вход в систему
4.2.10.3. SecurityContext
4.2.11. Обработка исключений
4.2.11.1. Классы исключений
4.2.11.2. Передача исключений Middleware
4.2.11.3. Обработчики исключений клиентского уровня
4.3. Компоненты работы с базой данных
4.3.1. Типы СУБД
4.3.1.1. Поддержка произвольных СУБД
4.3.1.2. Версия СУБД
4.3.2. Скрипты создания и обновления БД
4.3.2.1. Структура SQL-скриптов
4.3.2.2. Структура Groovy-скриптов
4.3.3. Выполнение скриптов БД задачами Gradle
4.3.4. Выполнение скриптов БД сервером
4.4. Компоненты среднего слоя
4.4.1. Сервисы
4.4.1.1. Создание сервиса
4.4.1.2. Использование сервиса
4.4.1.3. DataService
4.4.2. Системная аутентификация
4.4.3. Интерфейс Persistence
4.4.3.1. PersistenceTools
4.4.3.2. PersistenceHelper
4.4.3.3. DbTypeConverter
4.4.4. Слой ORM
4.4.4.1. EntityManager
4.4.4.2. Состояния сущности
4.4.4.3. Загрузка по требованию
4.4.4.4. Выполнение JPQL запросов
4.4.4.4.1. Поиск подстроки без учета регистра
4.4.4.4.2. Макросы в JPQL
4.4.4.5. Выполнение SQL запросов
4.4.4.6. Entity Listeners
4.4.5. Управление транзакциями
4.4.5.1. Программное управление транзакциями
4.4.5.2. Декларативное управление транзакциями
4.4.5.3. Примеры взаимодействия транзакций
4.4.5.3.1. Откат вложенной транзакции
4.4.5.3.2. Чтение и изменение данных во вложенной транзакции
4.4.5.4. Таймаут транзакции
4.4.5.4.1. Особенности реализации для различных СУБД
4.5. Универсальный пользовательский интерфейс
4.5.1. Экраны
4.5.1.1. Типы экранов
4.5.1.1.1. Фрейм
4.5.1.1.2. Простой экран
4.5.1.1.3. Экран выбора
4.5.1.1.4. Экран редактирования
4.5.1.2. XML-дескриптор
4.5.1.3. Контроллер экрана
4.5.1.3.1. AbstractFrame
4.5.1.3.2. AbstractWindow
4.5.1.3.3. AbstractLookup
4.5.1.3.4. AbstractEditor
4.5.1.3.5. Инжекция зависимостей контроллеров
4.5.1.3.6. Компаньоны контроллеров
4.5.2. Библиотека визуальных компонентов
4.5.2.1. Компоненты
4.5.2.1.1. Button
4.5.2.1.2. Bulk Editor
4.5.2.1.3. CheckBox
4.5.2.1.4. DateField
4.5.2.1.5. Embedded
4.5.2.1.6. FieldGroup
4.5.2.1.7. FileMultiUploadField
4.5.2.1.8. FileUploadField
4.5.2.1.9. Filter
4.5.2.1.9.1. Использование фильтра
4.5.2.1.9.2. Описание компонента Filter
4.5.2.1.9.3. Права пользователей
4.5.2.1.9.4. Внешние параметры для управления фильтрами
4.5.2.1.9.5. Последовательное наложение фильтров
4.5.2.1.10. GroupTable
4.5.2.1.11. Label
4.5.2.1.12. Link
4.5.2.1.13. LinkButton
4.5.2.1.14. LookupField
4.5.2.1.15. LookupPickerField
4.5.2.1.16. MaskedField
4.5.2.1.17. OptionsGroup
4.5.2.1.18. PasswordField
4.5.2.1.19. PickerField
4.5.2.1.20. PopupButton
4.5.2.1.21. ProgressBar
4.5.2.1.22. Related Entities
4.5.2.1.23. RichTextArea
4.5.2.1.24. SearchPickerField
4.5.2.1.25. Table
4.5.2.1.26. TextArea
4.5.2.1.27. TextField
4.5.2.1.28. TimeField
4.5.2.1.29. TokenList
4.5.2.1.30. Tree
4.5.2.1.31. TreeTable
4.5.2.1.32. TwinColumn
4.5.2.2. Контейнеры
4.5.2.2.1. BoxLayout
4.5.2.2.2. ButtonsPanel
4.5.2.2.3. GridLayout
4.5.2.2.4. GroupBoxLayout
4.5.2.2.5. IFrame
4.5.2.2.6. ScrollBoxLayout
4.5.2.2.7. SplitPanel
4.5.2.2.8. TabSheet
4.5.2.3. Разное
4.5.2.3.1. Formatter
4.5.2.3.2. Presentation
4.5.2.3.3. Timer
4.5.2.3.4. Validator
4.5.2.4. XML-атрибуты компонентов
4.5.3. Источники данных
4.5.3.1. Создание источников данных
4.5.3.1.1. Декларативное создание
4.5.3.1.2. Программное создание
4.5.3.1.3. Собственные классы реализации
4.5.3.2. Запросы в CollectionDatasourceImpl
4.5.3.2.1. Возвращаемые значения
4.5.3.2.2. Параметры запроса
4.5.3.2.3. Фильтр запроса
4.5.3.2.4. Поиск подстроки без учета регистра
4.5.3.3. Слушатели источников данных
4.5.3.4. DsContext
4.5.3.5. DataSupplier
4.5.4. Действия. Интерфейс Action
4.5.4.1. Декларативное создание действий
4.5.4.2. Стандартные действия
4.5.4.2.1. Стандартные действия с коллекцией
4.5.4.2.1.1. CreateAction
4.5.4.2.1.2. EditAction
4.5.4.2.1.3. RemoveAction
4.5.4.2.1.4. RefreshAction
4.5.4.2.1.5. AddAction
4.5.4.2.1.6. ExcludeAction
4.5.4.2.1.7. ExcelAction
4.5.4.2.2. Стандартные действия поля выбора
4.5.4.2.2.1. LookupAction
4.5.4.2.2.2. ClearAction
4.5.4.2.2.3. OpenAction
4.5.4.3. BaseAction
4.5.5. Диалоговые окна и уведомления
4.5.5.1. Диалоговые окна
4.5.5.2. Уведомления
4.5.6. Фоновые задачи
4.5.6.1. Использование фоновых задач
4.5.6.2. Настройка окружения
4.5.7. Создание темы приложения
4.5.7.1. Тема в веб-приложениях
4.5.7.1.1. Использование существующих тем
4.5.7.1.2. Расширение существующей темы
4.5.7.1.3. Создание новой темы
4.5.7.2. Тема в десктоп-приложениях
4.5.8. Специфика Web Client
4.5.8.1. Работа с компонентами Vaadin
4.5.8.2. Компоновка главного окна приложения
4.5.9. Специфика Desktop Client
4.5.9.1. Работа с компонентами Swing
4.5.10. Создание собственных компонентов
4.5.10.1. Использование сторонних компонентов Vaadin
4.5.10.2. Интеграция компонентов в Generic UI
4.5.11. Горячие клавиши
4.6. Компоненты портала
4.6.1. Базовая функциональность
4.6.2. REST API
4.6.2.1. Включение в проект
4.6.2.2. Описание функций
4.6.2.2.1. Логин
4.6.2.2.2. Логаут
4.6.2.2.3. Загрузка экземпляра персистентного объекта из базы данных по идентификатору
4.6.2.2.4. Выполнение JPQL запроса для выборки данных
4.6.2.2.5. Коммит новых и измененных экземпляров, удаление
4.6.2.2.6. Загрузка файла из хранилища
4.6.2.2.7. Получение описания модели данных в формате HTML
4.6.2.2.8. Cоздание новых представлений на сервере
4.6.2.2.9. Вызов сервисов
4.6.2.2.9.1. Вызов сервиса с помощью GET запроса
4.6.2.2.9.2. Вызов сервиса с помощью POST запроса
4.6.2.2.9.3. Поддерживаемые типы параметров метода сервиса
4.6.2.2.9.4. Результат вызова сервиса
4.7. Механизмы платформы
4.7.1. Выполнение задач по расписанию
4.7.1.1. Spring TaskScheduler
4.7.1.2. Назначенные задания CUBA
4.7.1.2.1. Регистрация задания
4.7.1.2.2. Управление обработкой заданий
4.7.1.2.3. Особенности реализации
4.7.2. Отправка email
4.7.2.1. Методы отправки
4.7.2.2. Вложения
4.7.2.3. Настройка параметров отправки email
4.7.3. Динамические атрибуты
4.7.3.1. Управление динамическими атрибутами
4.7.3.2. Категоризируемые сущности
4.7.3.3. Динамические атрибуты в REST API
4.7.4. Пессимистичная блокировка
4.7.4.1. Блокировка редактирования сущностей
4.7.4.2. Блокировка произвольных процессов
4.7.4.3. Мониторинг блокировок
4.7.5. Статистика сущностей
4.7.6. Журнал изменений сущностей
4.7.6.1. Настройка журналирования
4.7.6.2. Отображение журнала
4.7.7. Снимки сущностей
4.7.7.1. Сохранение снимков
4.7.7.2. Отображение снимков
4.7.8. Хранилище файлов
4.7.8.1. Загрузка файлов
4.7.8.2. Выгрузка данных
4.7.8.3. Стандартная реализация хранилища
4.7.9. Генерация последовательностей
4.7.10. Выполнение SQL с помощью QueryRunner
4.7.11. Интеграция с MyBatis
4.7.12. Панель папок
4.7.12.1. Папки приложения
4.7.12.2. Папки поиска
4.7.12.3. Наборы
4.7.13. Ссылки на экраны
4.7.14. Инспектор сущностей
4.7.15. Информация об используемом ПО
4.8. Расширение функциональности
4.8.1. Расширение сущности
4.8.2. Расширение экранов
4.8.3. Расширение бизнес-логики
5. Разработка приложений
5.1. Рекомендуемый стиль кода
5.2. Файловая структура проекта
5.3. Описание скриптов сборки
5.3.1. Структура build.gradle
5.3.2. Запуск задач сборки
5.3.3. Сборка на сервере Continuous Integration
5.4. Создание проекта
5.5. Проектирование БД
5.5.1. Создание схемы БД
5.5.2. Подключение к HSQLDB внешними инструментами
5.5.2.1. Подключение с помощью Squirrel SQL
5.5.2.2. Подключение с помощью IntelliJ IDEA Ultimate
5.5.3. Особенности PostgreSQL
5.5.4. Особенности MS SQL Server
5.5.5. Особенности Oracle Database
5.6. Логгирование
5.6.1. Настройка логгирования в Tomcat
5.6.2. Настройка логгирования в десктоп клиенте
5.7. Отладка и тестирование
5.7.1. Подключение отладчика
5.7.2. Отладка виджетов в веб-браузере
5.7.3. Тестирование
5.7.3.1. Модульные тесты
5.7.3.2. Интеграционные тесты Middleware
5.7.3.3. Интеграционные тесты клиентского уровня
5.8. Рецепты разработки
5.8.1. Получение локализованных сообщений
5.8.2. Присвоение начальных значений
5.8.2.1. Инициализация полей сущности
5.8.2.2. Инициализация с помощью CreateAction
5.8.2.3. Использование метода initNewItem
5.8.3. Редактирование композитных сущностей
5.8.3.1. Реализация композиции
5.8.3.2. Глубокая композиция
5.8.4. Выполнение кода на старте приложения
5.8.5. Загрузка и вывод изображений
5.8.6. Создание собственных визуальных компонентов
5.8.6.1. Пример использования стороннего компонента Vaadin
5.8.6.2. Пример интеграции компонента Vaadin в Generic UI
6. Развертывание приложений
6.1. Каталоги приложения
6.1.1. Конфигурационный каталог
6.1.2. Рабочий каталог
6.1.3. Каталог журналов
6.1.4. Временный каталог
6.1.5. Каталог скриптов базы данных
6.2. Варианты развертывания
6.2.1. Быстрое развертывание в Tomcat
6.2.1.1. Использование Tomcat при эксплуатации приложения
6.2.2. Развертывание в WAR
6.3. Масштабирование приложения
6.3.1. Настройка кластера Web Client
6.3.1.1. Установка и настройка Load Balancer
6.3.1.2. Настройка серверов Web Client
6.3.2. Настройка кластера Middleware
6.3.2.1. Настройка обращения к кластеру Middleware
6.3.2.2. Настройка взаимодействия серверов Middleware
6.3.3. Server Id
6.4. Использование инструментов JMX
6.4.1. Встроенная JMX консоль
6.4.2. Настройка удаленного доступа к JMX
6.4.2.1. Tomcat JMX под Windows
6.4.2.2. Tomcat JMX под Linux
6.5. Создание и обновление БД при эксплуатации приложения
6.5.1. Использование механизма выполнения скриптов БД сервером
6.5.2. Инициализация и обновление БД из командной строки
6.6. Использование файла лицензии
7. Подсистема безопасности
7.1. Компоненты подсистемы безопасности
7.1.1. Окно входа в систему
7.1.2. Пользователи
7.1.2.1. Замещение пользователей
7.1.3. Часовой пояс
7.1.4. Разрешения
7.1.5. Роли
7.1.6. Группы доступа
7.1.6.1. Ограничения
7.1.6.2. Атрибуты сессии
7.1.7. Интеграция с LDAP
7.1.7.1. Базовая интеграция с Active Directory
7.1.7.2. Настройка аутентификации с использованием Jespa
7.1.7.2.1. Подключение библиотеки
7.1.7.2.2. Настройка конфигурации
7.2. Примеры управления доступом
7.2.1. Настройка ролей
7.2.2. Создание локальных администраторов
A. Конфигурационные файлы
A.1. context.xml
A.2. datatypes.xml
A.3. dispatcher-spring.xml
A.4. menu.xml
A.5. metadata.xml
A.6. permissions.xml
A.7. persistence.xml
A.8. remoting-spring.xml
A.9. screens.xml
A.10. spring.xml
A.11. views.xml
A.12. web.xml
B. Свойства приложения
C. Системные свойства
Основные определения и понятия