Spring Web Flow — системные настройки (system setup)

10. Spring Web Flow — системные настройки (system setup)

10.1. Введение

Эта глава покажет как настроить систему Web Flow для использования в любой веб-среде.

10.2. Java конфигурация и пространство имён XML

Web Flow предоставляет полную поддержку конфигураций двух видов — Java или XML.

Чтобы начать с конфигурации через XML необходимо объявить пространство имен webflow config XML:

Для использования Java конфигурации необходимо расширить AbstractFlowConfiguration в классе @Configuration:

10.3. Базовая системная конфигурация

Следующий раздел показывает минимальные настройки, требующиеся для подключения системы Web Flow в ваше приложение.

10.3.1. FlowRegistry

Зарегистрируйте ваши потоки в FlowRegistry используя XML:

Зарегистрируйте ваши потоки в FlowRegistry с использованием Java:

10.3.2. FlowExecutor

Разверните FlowExecutor — главный сервис для выполнения потоков с использованием XML:

Разверните FlowExecutor  главный сервис для выполнения потоков с использованием Java:

Обратитесь к разделам Spring MVC и Spring Faces данного руководства, чтобы узнать как объединить Web Flow с MVC и JSF окружением соответственно.

10.4. Опции flow-registry

Этот раздел рассматривает различные опции настроек flow-registry.

10.4.1. Указание местоположения потока

Используйте элемент location для указания пути к файлу описания потока. По умолчанию потокам будут назначены идентификаторы соответствующие их именам файлов без расширения, в случае, если не указан другой путь.

В XML:

В Java:

10.4.2. Назначение собственного идентификатора потока

Укажите id для присвоения собственного идентификатора потока. XML:

Укажите id для присвоения собственного идентификатора потока. Java:

10.4.3. Назначение мета-атрибутов потока

Используйте элемент flow-definition-attributes для указания собственных мета-атрибутов в зарегистрированном потоке.

В XML:

В Java:

10.4.4. Регистрация потоков с использованием шаблона местонахождения

Используйте элемент flow-location-patterns для регистрации потоков, соответствующих шаблону местонахождения ресурсов:

XML:

Java:

10.4.5. Базовый путь местонахождения потоков

Используйте атрибут base-path для определения базового местонахождения всех потоков в приложении. Все местонахождения потоков будут относительными к базовому пути. Базовый путь может быть путём к ресурсам, таким как ‘/WEB-INF’ или ‘classpath:org/springframework/webflow/samples’.

XML:

Java:

После указания базового пути алгоритм присвоения идентификаторов потока немного изменится. Теперь потоки будут доступны по идентификаторам соответствующими сегменту между базовым путем и именем файла. Например, если поток определен в ‘/WEB-INF/hotels/booking/booking-flow.xml’ и базовый путь указан как ‘/WEB-INF’ то оставшийся путь к этому потоку ‘hotels/booking’ станет id потока.

[Tip] Директория для определения потока
Напомним, что лучшей практикой является распределение каждого потока в уникальную директорию. Это улучшает модульность, а так же позволяет расположить зависимые ресурсы в папке где определен поток. Это также предотвратит наличие у двух потоков одинаковых идентификаторов при использовании этого соглашения при присвоении идентификаторов.

Если базовый путь не назначен или если определение потока находится прямо в базовой директории, то поток получит идентификатор по имени файла без расширения. Для примера, если поток определен в файле ‘booking.xml’, то идентификатором потока будет просто  ‘booking’.

Шаблоны местонахождения являются особенно мощны в сочетании с регистрацией базового пути. В замен идентификатора потока вроде ‘*-flow‘, они будут основаны на базовой директории. Пример в XML:

Java:

В примере выше, если предположить, что потоки расположены в директориях /user/login, /user/registration, /hotels/booking и /flights/booking внутри WEB-INF, то идентификаторы id будут соответственно: user/login, user/registration, hotels/booking и flights/booking.

10.4.6. Конфигурирование иерархии FlowRegistry

Используйте атрибут parent для указания иерархии двух зарегистрированных потоков. В случае, если не будет найден запрашиваемый дочерний поток, то запрос будет передан его родителю.

XML:

Java:

10.4.7. Конфигурирование собственного сервиса FlowBuilder

Используйте атрибут flow-builder-services для модификации сервисов и настроек, используемых для создания потоков в flow-registry. Если не указан тег flow-builder-services, то будет использована реализация по умолчанию. Когда тег определен, то необходимо указать ссылки на сервисы, которые будут использованы в собственных настройках.

XML:

Java:

Сервисы, которые нужно модифицировать это — onversion-service, expression-parser и view-factory-creator.

Эти сервисы настраиваются путем указания ссылки на собственные бины, которые вы определили.

Пример с использованием XML:

Java:

conversion-service

Используйте атрибут conversion-service для модификации ConversionService, используемый системой Web Flow. Тип преобразования используется для конвертации из одного типа в другой, когда это требуется при выполнении потока, например при обработке параметров запроса, внедрения действий и т.д.. Поддерживается большинство общих типов объектов, таких как числа, классы и перечисления. Однако вам возможно понадобится свой собственный тип преобразования или форматирования для собственных типов данных. Для этого обратитесь к Section 5.7, “Performing type conversion” для получения важной информации по предоставлению собственной логики преобразования типов.

expression-parser

Используйте атрибут expression-parser для модификации ExpressionParser, использующийся системой Web Flow. По умолчанию ExpressionParser использует Unified EL если он доступен в classpath, в противном случае используется OGNL.

view-factory-creator

Используйте атрибут view-factory-creator для модификации ViewFactoryCreator, использующийся системой Web Flow. Использующийся по умолчанию ViewFactoryCreator предоставляется Spring MVC ViewFactories способный к отрисовке представлений JSP, Velocity и Freemarker.

Настраиваемые настройки это development. Эти настройки — глобальные конфигурационные атрибуты, которые могут быть доступны на протяжении всего процесса построения потока.

development

Установите в значение true, чтобы переключить поток в development mode. Development mode переключает в горячую перезагрузку изменений в описании потока, включая изменения в зависимых для потока ресурсах, например в message bundles.

10.5. Опции flow-executor

В этом разделе рассматриваются опции настройки flow-executor.

10.5.1. Прикрепление слушателей flow execution

Используйте элемент flow-execution-listeners для регистрации слушателя, который будет наблюдать на протяжении жизненного цикла выполнения потока. Пример XML:

Java:

Вы также можете настроить слушателя для наблюдения только за конкретными потоками. Пример XML:

Java:

10.5.2. Настройка персистенции FlowExecution

Используйте элемент flow-execution-repository для дополнения к настройкам персистентности.

XML:

Java:

max-executions

Настройте атрибут max-executions aдля указания числа выполняемых потоков, которые могут быть созданы на протяжении пользовательской сессии. Когда будет достигнуто максимальное кол-во выполняемых потоков, то наиболее старые будут удалены.

[Note] Важно
Атрибут max-executions указывается для пользовательской сессии, таким образом он будет работать внутри любого экземпляра из определения потока

max-execution-snapshots

Настройте атрибут max-execution-snapshots для указания числа сохраняемых snapshots, которые можно получить на протяжении выполнения потока. Для отключения snapshotting, установите значение в 0. Для включения неограниченного количества, установите значение в -1.

[Note] Важно
История snapshots включает поддержку кнопки назад в браузере. Если snapshotting выключено, то кнопка назад в браузере работать не будет.Это результат попытки запроса выполняемого ключа, который указывает на snapshot, но не может быть записан.
Share Button
2
1036 Total Views 1 Views Today

Добавить комментарий