Типы ScopeType (компоненты отсортированы по уменьшению области применения, вначале идут самы глобальны контексты):
- APPLICATION - компонент создается и храниться в рамках всего приложения, практически аналог глобальны переменных приложения. Это надо чтобы компонент был гарантированно один для всех пользователей.
- BUSINESS_PROCESS – компонент создается и храниться в бизнес процессе. Это нужно для хранения компонентов в контексте выполнения бизнес процесса (BEPL и все такое).
- SESSION – компонент создается и храниться в сессии пользователя (альтернатива HttpSession). Например для сохранения текущего пользователя (механизм безопасности и проверки прав) рекомендуется использовать этот контекст. Также можно в нем хранить настройки текущего сеанса пользователя.
- CONVERSATION – компонент создается и храниться в группе взаимодействии пользователя с сервером, то есть для одной группы взаимодействий может быть проставлено в соответствие несколько запросов на сервер. Применяется эта штука в мастерах, когда у нас есть ряд запросов на сервер для совершения определенного действия.
- EVENT – компонент создается и храниться во взаимодействии пользователя с сервером (альтернатива HttpRequest), причем создается на одно взаимодействие. Где его использовать вытекает из его названия, например, если вы делаете запрос на сервер, то было бы неплохо иметь один и тот же объект на один запрос (request).
- PAGE – компонент создается и храниться с привязкой к странице (компонент для страницы). Я так понял что используется этот тип если вам нужно изолировать компонент в пределах одной страницы (при запросе на сервер может быть использовано несколько страниц).
- STATELESS – компонент создается, используется и сразу удаляется (без сохранения состояния). Это надо чтобы один раз использовать компонент и в следующий раз гарантированно получить новый (похоже на паттерн “команда”).
- BUSINESS_PROCESS – я не использовал, поэтому до конца не представляю его необходимость.
- PAGE - я не понял хранятся ли состояния при обновлении страницы.