我正在尝试将一个相当复杂的页面流(100多页)作为传统的Web应用程序实现。我找到了一些选项,但没有一个是100%令人信服的
此外,我发现了许多这样的废弃项目:http://javasteps.sourceforge.net/
我想知道为什么所有这些项目都被放弃了,2012年实现复杂页面流的方式是什么?
答案 0 :(得分:2)
我个人推荐单页架构:
Architecture of a single-page JavaScript web application?
我不确定您的申请是否可行。我已经使用了你上面提到的所有流程,目前正在处理单页应用程序,我喜欢它。我们在客户端使用Dojo,它在服务器上调用REST API。这真的很不错。
Vaadin也很稳固,而且比简单的GWT更容易设置。如果您的项目中有很多UI人员喜欢用CSS和Javascript编写代码,他们会讨厌这种方法。
Spring Webflow实际上非常可靠。我有一段时间没有看过它,但是当我使用它时,它完成了我当时工作的工作。
答案 1 :(得分:1)
Vaadin组件模型有一个名为Lexaden Web Flow的新MVC框架和Web流程实现
您可以尝试将其作为您的应用程序替代。
答案 2 :(得分:1)
这已经很晚了但是我没有看到这个问题的满意答案,并希望分享我在最近的一个项目中尝试过的方法,我认为这个方法比弹簧网络流程方法更好,这种方法严格限制在春天的意见。我使用带有Spring MVC的角度js创建了一个SPA。在角度js中我没有使用路由器或状态,而是在控制器中创建了一个div,如下所示
<div width="100%" id="fullertonDataPanel" ng-include="page"></div>
在服务器端捕获从一个帧(我指的是SPA中的特定屏幕)到另一个帧的所有可能的转换,我使用MVEL创建了一个规则树。所以在数据库中我有一个结构,它存储了每个帧的规则树。 MVEL表达式中的数据由每个操作调用的各种服务设置。因此,在任何行动中都遵循以下步骤。
1)验证行动。
2)调用各种服务。
3)从这些服务中捕获数据并将其与用户的现有数据合并。
4)将捕获的数据提供给每个帧的规则集以及当前帧的详细信息。
5)将w.r.t树的规则运行到当前帧并获取其输出。
6)如果只有一个转换,那么这是最后的转换。如果有2个转换,其中一个是默认转换,则忽略默认转换并使用另一个转换。
7)将转换的模板名称返回到角度控制器,并在控制器范围内设置页面变量的值。
使用这种方法,我所有的服务都必须将数据存储在不同的数据字段中,而不是特定的操作。 Web Flow的所有复杂的if-else条件或任何复杂的流程定义(如Spring-Web Flow中定义的那些)都不是必需的。 MVEL规则引擎管理了所有这些,因为它全部在数据库中,所以可以在不需要重新启动服务器的情况下进行更改。
我相信这种使用MVEL的通用方法是一种灵活的方法,可以全面处理复杂流的问题,而不会使应用程序代码变得混乱或添加额外的不必要的xml文件。