【问题标题】:JSF Single page application gui flowJSF 单页应用程序 gui 流
【发布时间】:2012-08-08 20:47:14
【问题描述】:

我目前正在使用 JSF 2(Primefaces、CDI EJB 和 JPA)开发单页应用程序。应用程序(页面)在幕后有一些复杂的工作流程。

例如,如果用户输入某种数据,则必须出现一个对话框,该对话框首先要求确认,然后根据答案执行某种工作流。根据插入的数据或某些数据库值,在工作流中还会弹出一些其他对话框。

我的问题:

是否有任何最佳实践来实现这样的工作流引擎。 (刚看了GoV模式状态机和activiti项目)

问候

【问题讨论】:

    标签: jsf workflow cdi state activiti


    【解决方案1】:

    您可以根据您的条件使用视图名称作为操作方法的返回值,以便 JSF 将呈现与您的返回值名称匹配的视图。

    可以使用 java 代码或在 faces-config.xml 中声明您的流程来处理您的工作流

    对于 java 示例:(动态导航)

    public String yourActionMethod(){
       if(condition1){
           return "view1";
       }else if(condition2){
           return "view2";
       }else if(conditionN){
           return "viewN";
       }
    }
    

    对于 XML 示例:(静态导航)

    <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 并从中获取输出作为您的 ViewId,然后在您的操作方法中返回,以便 JSF 将它们呈现。

    您还可以编写自己的状态机并获取它的输出并将其作为您的 ViewId 在您的操作方法中返回。

    【讨论】:

      【解决方案2】:

      我相信这篇博文与你想做的事情有关,它可能会有所帮助:

      “页面流与流程流 - UI 中介如何提供帮助” http://www.bpm-guide.de/2012/04/04/pageflow-vs-process-flow-and-ui-mediator-pattern/

      【讨论】:

        【解决方案3】:

        JSF 2.2 将提供一种称为 Faces Flows 的流作用域机制

        符合我的需要 感谢您的帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-17
          • 1970-01-01
          相关资源
          最近更新 更多