【问题标题】:User roles and workflow status xpages and managed bean用户角色和工作流状态 xpages 和托管 bean
【发布时间】:2016-12-15 19:11:27
【问题描述】:
为了不必不断重复一些验证,例如,谁可以在 worlflow 中看到某个文档状态的按钮,我使用会话、范围和会话变量来存储用户角色和应用程序变量存储与每个区域相关的状态。
我正在评估从性能和构建的角度来看,实现托管 bean、返回用户角色和每个参与工作流区域的可能状态是否会更好。事实上,它会是最好的结构吗?你怎么看?我在java方面没有太多经验。我如何在 java 中构造结构,几种方法,一种用于角色,另一种用于与命名相关方法的区域相关联的状态集?你可以用数组返回这个方法的结果,或者有更好的返回结构。
非常感谢!
【问题讨论】:
标签:
xpages
javabeans
status
【解决方案1】:
我最好的建议是采用 pageController 方法。然后它更像是真正的 MVC。这在 NotesIn9 截屏视频中已经讨论过很多次,但基本上您有一个绑定到 XPage 的 java 对象。实际上,它是一个包含所有页面逻辑的 viewScoped bean。然后,您可以使用 isGroupMember()、hasRole() 等方法并在 pageInit 上进行计算。在我看来,几乎不需要在 sessionScope 中保留它。例如,我的 pageController 中有这个:
public boolean isGroupMember(String groupName) {
return JSFUtil.getXSPContext().getUser().getGroups().contains(groupName);
}
所以每个页面都可以使用。但我不需要将该 sn-p 复制到每个页面控制器上。在 Java 中,您可以让您的页面控制器扩展一个更通用的类。所以我有一个“base.pageController”类。所有特定的页面控制器都扩展了它。所以这个 isGroupMember() 代码进入了基础,然后它就可以在每个 XPage 上使用。这样做可以让您拥有像这样的通用功能,然后拥有更具体的功能,这些功能只适用于单个页面。
你也可以有一个 hasRole() 函数等等......
推荐你看看这个视频:http://www.notesin9.com/2016/08/25/notesin9-196-no-dependency-page-controllers/
同样对于这样的问题,我建议您只使用 xpages 标签。添加像 javabeans 这样的其他东西可以让对 XPages 一无所知的人加入进来,而 XPages 是一个足够独特的野兽,外人有时会引起一些混乱。