2016-12-15 16 views
0

Чтобы не повторять некоторые проверки, например, кто может видеть кнопку в определенном статусе документа в worlflow, я использую сеанс, область действия и сеанс переменные для хранения пользовательских ролей и переменной приложения для сохранения статуса, относящегося к каждой области. Я оценивал, было бы лучше с точки зрения производительности и сборки реализовать управляемый компонент, чтобы вернуть роли пользователя и возможные статусы каждой участвующей области рабочего процесса. Действительно ли это была бы лучшая структура? Как вы думаете? У меня нет большого опыта в java. Как я мог построить структуру в java, несколько методов, один для ролей и другой для набора статуса, связанного с областью, которая будет называть связанный метод? Вы можете вернуть результаты этого метода в массивы или получить лучшую структуру возврата.Роли пользователей и статус рабочего процесса xpages и управляемый компонент

Большое спасибо!

ответ

2

Мое лучшее предложение - принять методологию на страницеКонтроллер. Тогда это больше похоже на настоящий MVC. Об этом много раз говорили о screencast NotesIn9, но в основном у вас есть объект java, привязанный к вашему XPage. Фактически это viewScoped bean, который содержит всю вашу логику страницы. Затем вы можете использовать методы, такие как isGroupMember(), hasRole() и т. Д., И вычислить это на страницеInit. На мой взгляд, в SessionScope мало что нужно сделать. Так, например, у меня это есть на моей странице. Контроллер:

public boolean isGroupMember(String groupName) { 

     return JSFUtil.getXSPContext().getUser().getGroups().contains(groupName); 

    } 

Так что это доступно для каждой страницы. НО мне не нужно копировать этот фрагмент на каждый контроллер страницы. В Java вы можете иметь, чтобы ваши контроллеры страниц расширяли более общий класс. поэтому у меня есть класс base.pageController. Все специальные контроллеры страниц расширяют это. Таким образом, этот код GroupMember() переходит в базу, а затем доступен для использования в каждом XPage. Выполнение этого способа дает вам возможность иметь такие общие функции, как это, а затем удерживать более конкретные функции, которые предназначены только для отдельной страницы.

Вы также можете иметь функцию hasRole() и т.д. ...

Рекомендуем Вам проверить это видео: http://www.notesin9.com/2016/08/25/notesin9-196-no-dependency-page-controllers/

Также на вопрос, как это, я рекомендую вам просто использовать XPages тег. Добавление других, таких как javabeans, может привести людей, которые ничего не знают о XPages и XPages, достаточно уникально для зверя, который посторонним может вызвать некоторую путаницу.