具有决定“工作流程”的类似eBay的“联系我们”系统的架构指南

时间:2011-08-24 13:27:44

标签: c# asp.net architecture

我正在为应用程序创建一个新的支持中心和“自助”客户服务模块。首席信息官真的很喜欢eBay的“联系我们”页面的流程,这些页面基本上是这样的:

  • 首先,您从一组主题中选择一个特定主题(例如,在eBay上购买,销售,帐户)
  • 然后,基于您选择的主题(名称就是我在一些初步草图中称之为的名称),您将看到三种可变类型的信息之一:
    1. “描述性”:显示带有可能指向应用程序其他部分的链接的富文本。
    2. “选择”:显示其他主题列表
    3. “操作”:允许用户查找项目并执行某些操作(例如取消)

通过一些实验,选择可以列出其他选择,或描述性文本块,或行动部分。

我正在为这个适当的架构提出空白。我选择的平台是ASP.NET(遗憾的是WebForms;我们不想在这里触摸MVC)所以“Action”区域必须是一个动态加载到占位符的用户控件,但我更关心的是可能的数据库结构。我需要一种方法来了解每个主题是否导致上述三种类型中的一种,然后在页面上动态加载内容,链接列表或用户控件,这使得事情变得有点棘手,从不明白非事实技术用户必须更新并添加来自某种管理面板的信息。

有关做这样事情的任何建议吗?我没有在紧迫的期限内,但我不能花太长时间,否则我将被视为浪费时间而不是产生结果。

2 个答案:

答案 0 :(得分:1)

如果您可以以某种方式存储“知识树”,例如自定义XML文件,它将组织所有选项/可能的操作,描述等。然后您可以根据用户的选择“走”它并显示适当的用户控件根据您当前所在的XML节点的内容,动态生成内容。

您的“管理工具”需要更新/修改XML文件,而您的“公共”CMS会在ASPX表单中呈现用户控件。

我参与的其中一个项目使用了这种方法用于Intranet的用户菜单 - 实际上是超链接/操作的知识库分成了类别,因此可以深入分析。每个元素都可以包含指向其他元素的链接 - 因此您可以使用类似于可导航链/工作流的蜘蛛网。

确保每个元素都有一个唯一的ID(实现起来很简单),你总是可以通过xpath获取它。

通过让用户修改“工作副本”并在发布更改时保留实时XML文件的备份,您还可以获得版本控制/回滚,这在数据库中很难实现。

答案 1 :(得分:0)

如果我个人这样做,我会根据需要推出一些处理工作流程步骤的MVC3控制器。然而,这似乎适合你。

对于webforms,我很可能会考虑使用Windows Workflow Foundation来处理这个问题(学习曲线在这方面有点陡峭)。这是使用WF Flexible Web UI Workflow application through ASP.NET MVC & Windows Workflow Foundation的一个很好的例子。它是基于MVC构建的,但您可以使用返回UserControls轻松替换返回的Views()。

按照这样的模型,defacto会给你MVC模式。控制流量的控制器非常适合工作流场景。

编辑:因为这似乎是不可能的,所以在这一点上你最好的选择就是编写一个控制器类来手动管理流程(可能是一堆状态/如果检查)然后重定向用户或返回适当的用户控件。