【问题标题】:Representing application navigation表示应用程序导航
【发布时间】:2010-10-20 17:00:45
【问题描述】:

我有一个包含许多页面的复杂应用程序。

每个页面可以有许多可能的路径到其他页面:“A”可以到“B”或“C”,“B”可以到“A”但不能到“C”。等等

我不想在每个页面中嵌入这种“下一个去哪里”逻辑(太可怕了!),我当然希望将它封装在一个主要控制点中。 “A”不需要知道“B”或“C”。

更好的是,我想将问题简化为配置问题。

这不是特定于语言/框架的问题,而是如何最好(简单、实用)来表示和解释工作流逻辑。

有没有人有将应用程序中点之间的复杂流表示为可配置设置的经验?

【问题讨论】:

  • 是否可以为用户或开发人员配置?这是针对网络应用程序还是软件?
  • 你说的是图形用户界面吗?你的问题不是很清楚。
  • 对于这两个问题——由谁配置?和图形用户界面? -- 如果它做得对,那应该没关系,因为它在概念上以两种方式大致相同。如果要由用户配置,只需将地图/配置(无论它是什么)呈现给用户进行编辑即可。

标签: language-agnostic configuration navigation computer-science


【解决方案1】:

你描述的是一个非常经典的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>

【讨论】:

    【解决方案2】:

    您也许可以使用 .NET 工作流基础之类的东西来巧妙地表示这一点。

    【讨论】:

      【解决方案3】:

      这基本上是一个状态机,其中每个页面代表一个状态,并且转换存储在您的配置中。谷歌,你会得到可能有帮助的样本。

      【讨论】:

        【解决方案4】:

        几乎每个 Web 应用程序框架都必须解决这个问题。对于 java,看看 Struts2、Spring MVC、Tapestry、Wicket 等,看看各种方法。 (XML 自然是在外部配置文件中捕获转换信息的常用方法。)

        【讨论】:

          【解决方案5】:

          Press On 在一定程度上涵盖了这类事情。 (在用户界面的设计和实现中使用状态机和状态图的显式表示。)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-03-02
            • 2014-09-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-12
            • 1970-01-01
            相关资源
            最近更新 更多