我有一个复杂的应用程序与许多页面。每个页面可以有许多可能的路线到其他页面:'A'可以去'B'或'C','B'可以去'A'而不是'C'。等代表应用程序导航
而不是嵌入这个“在哪里去下一个”逻辑在每一页(恐怖!)我当然想要封装它在一个主要的控制点。 'A'不需要知道'B'或'C'。
更好的是,我想将问题简化为配置问题。
这不是一个语言/框架的具体问题 - 这是一个问题,如何最好(简单,实用)来表示和解释工作流逻辑。
有没有人有过将应用程序中的点之间的复杂流程作为可配置设置的经验?
我有一个复杂的应用程序与许多页面。每个页面可以有许多可能的路线到其他页面:'A'可以去'B'或'C','B'可以去'A'而不是'C'。等代表应用程序导航
而不是嵌入这个“在哪里去下一个”逻辑在每一页(恐怖!)我当然想要封装它在一个主要的控制点。 'A'不需要知道'B'或'C'。
更好的是,我想将问题简化为配置问题。
这不是一个语言/框架的具体问题 - 这是一个问题,如何最好(简单,实用)来表示和解释工作流逻辑。
有没有人有过将应用程序中的点之间的复杂流程作为可配置设置的经验?
你所描述的是一个非常经典的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>
您可能可以使用类似.NET工作流程基础的东西来表示这种整洁。
这基本上是一个状态机,其中每个页面代表一个状态,并且转换存储在您的配置中。谷歌为此,你会得到可能有帮助的样本。
几乎每一个Web应用程序框架必须解决这个问题。对于java,看看Struts2,Spring MVC,Tapestry,Wicket等,看看各种方法。 (XML是自然捕获在外部配置文件中的转换信息的常用的方法。)
Press On涵盖这样的事情在一些深度。 (使用在设计和实施的用户界面状态机和状态图的明确表示。)
配置为用户或开发者?这是一个Web应用程序或软件? – 2009-04-20 23:51:19