我有一个包含许多页面的复杂应用程序。
每个页面可以有许多可能的路径到其他页面:'A'可以转到'B'或'C','B'可以转到'A'而不是'C'。等
而不是在每个页面中嵌入这个“去哪里”的逻辑(恐怖!)我当然希望将它封装在一个主要的控制点。 'A'不需要知道'B'或'C'。
更好的是,我想将问题简化为配置问题。
这不是一个特定于语言/框架的问题 - 它是表示和解释工作流逻辑的最佳(简单,实用)问题。
是否有人有过将应用程序中各点之间的复杂流程表示为可配置设置的经验?
答案 0 :(得分:4)
你所描述的是非常经典的Finite State Machine。您有状态(页面),导航(转换),但您也可以使用进入/退出操作和转换条件。
有了这个说,值得考虑一下你的导航,你只想要一个动态添加到页面的导航选项列表,还是有一些额外的智能。想想当导航有效时,导航所需的信息,数据您可能想带到下一个导航等
之前我通过简单地使用XML创建了状态映射,例如:
<states>
<state name="Open">
<transition action="Close" state="Closed" />
</state>
<state name="Closed">
<transition action="Open" state="Open" />
<transition action="Lock" state="Locked" />
</state>
<state name="Locked">
<transition action="Unlock" state="Closed" />
</state>
</states>
答案 1 :(得分:0)
您可以使用.NET工作流基础之类的东西来整齐地表示这一点。
答案 2 :(得分:0)
这基本上是一个状态机,每个页面代表一个状态,转换存储在你的配置中。对此谷歌来说,你会得到可能有帮助的样本。
答案 3 :(得分:0)
几乎每个Web应用程序框架都必须解决这个问题。对于java,请查看Struts2,Spring MVC,Tapestry,Wicket等,以了解各种方法。 (XML自然是在外部配置文件中捕获转换信息的常用方法。)
答案 4 :(得分:0)
Press On在某种程度上涵盖了这种事情。 (在用户界面的设计和实现中使用状态机和状态图的显式表示。)