JSF单页面应用程序流程
问题描述:
我目前正在JSF 2(Primefaces,CDI EJB和JPA)中开发单页面应用程序。应用程序(页面)在幕后有一些复杂的工作流程。JSF单页面应用程序流程
例如,如果用户输入某种数据,则必须首先出现对话框,以便首先进行确认,然后根据答案执行某种工作流。在工作流程内部,还可以根据插入的数据或某些数据库值弹出一些其他对话框。
我的问题:
是否有任何最佳实践来实现这样的工作流引擎。 (只是看着GOV模式状态机和Activiti的项目)
问候
答
JSF 2.2将提供一个名为面孔流动范围机构流出
这符合我的需要 感谢您的帮助
答
您可以使用视图名称基于您的条件,使JSF将呈现匹配的名称这些观点的动作方法的返回值的返回值。 (动态navgationa)
public String yourActionMethod(){
if(condition1){
return "view1";
}else if(condition2){
return "view2";
}else if(conditionN){
return "viewN";
}
}
为XML示例::
处理工作流程可以使用Java代码或声明你在流动面-config.xml中
为Java示例来完成(静态导航)
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/welcome.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/failed.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
对于你的用例动态导航(使用java代码)是好的。
如果你想显示基于服务器端的条件对话框,您可以使用某事像这样:
public void doSomething(ActionEvent actionEvent) {
RequestContext context = RequestContext.getCurrentInstance();
context.execute("dialogVar.show()");
}
,如果你的使用情况更复杂,你有一个复杂的工作流程,请尝试使用的Activiti并从中获取输出将其作为ViewIds并返回到您的操作方法中,以便JSF将呈现它们。
您也可以编写自己的状态机并获取它的输出并将其作为ViewId返回到您的操作方法中。
答
我相信这个博客帖子是关系到你想要做什么,它可能会有所帮助:
“页面流量与流程 - 流程 - 一个UI中介者可以如何帮助” http://www.bpm-guide.de/2012/04/04/pageflow-vs-process-flow-and-ui-mediator-pattern/