【问题标题】:Implementing process workflow in PureMVC在 PureMVC 中实现流程工作流
【发布时间】:2011-10-11 14:00:59
【问题描述】:

我正在寻找有关在基于 PureMVC 的应用程序中实施流程/工作流管理的建议。

我们的 Flex 应用程序包括许多流程,例如帐户创建、付款处理等。

在我们的团队中,有一些关于我们应该如何严格遵守 PureMVC 模型的讨论。

在 PureMVC 模型中,进程中的当前状态可以在代理中进行管理似乎是合理的。

命令显然负责处理每个节点所需的操作和节点转换。

用于管理 UI 的中介。

但是,我认为这里仍然缺少一个重要的部分:ProcessController。

我们审查过的所有方法似乎都违反了 PureMVC 模型(即使只是轻微的),或者使代码难以阅读。

  • 代理会维护进程的状态。因此,这似乎是实现控制器的合适方式。但是,这会将大量业务逻辑放入代理中。

  • Mediator 空间更有意义,但该空间中的控制器不一定会直接与任何特定的 UI 元素交互,而是会协调/委托给专用的 Mediator。

  • 另一个模型会让我们将进程转换信息放入命令中。虽然这似乎是这项工作的最佳场所(考虑到命令相对于代理和中介的角色),但这种方法看起来会生成一些看起来特别令人发指的代码,其中进程转换逻辑分布在大量命令中。

    李>

那么其他人是如何处理这个问题的呢?

谢谢 柯蒂斯

【问题讨论】:

  • 简单,不要使用 PureMVC,因为它太可怕了:P
  • 我完全同意 PureMVC!在我打扰 PureMVC 之前,我会将整个该死的事情转移到互联网标准技术(HTML5、REST)上。
  • 至少你可以在 Flex 中选择 MVC 库。如果您要迁移到 HTML5/Javascript,除非您使用 Google Web Toolkit 之类的工具,否则您将受到更大的伤害。

标签: apache-flex workflow puremvc processmodel


【解决方案1】:

这正是 PureMVC StateMachine Utility(以及一般的有限状态机)旨在解决的问题。

在简单的 XML 格式中,您可以定义状态、到其他状态的有效转换以及触发这些转换的操作。

这都是基于通知的,因此您发送 StateMachine.ACTION 通知,使 StateMachine 执行任何可能需要的进入/退出保护逻辑(例如,仅在所有数据有效时才允许退出 FORM_ENTRY 状态,或仅如果用户具有管理员权限等,则允许进入 FORM_PROCESSING 状态)。如果发生状态更改,则会发送通知,这些通知可用于在进入新状态时组织视图或执行逻辑。

这是一个 StateMachine 概述演示文稿,可以让您更好地了解 http://puremvc.tv/#P003/

【讨论】:

  • Cliff,StateMachine 看起来很合适。我一定会看看的。
【解决方案2】:

我认为您对“ProcessController”的想法可能是更好的方法。就个人而言,我不是 PureMVC 的粉丝,也不使用它,因为它没有足够的灵活性或扩展点来帮助解决此类问题。

坦率地说,很难就您的问题提出建议,因为我不确切知道您想要完成什么。我同意这个问题需要由一个对象来处理。如果可以,尝试创建一个模型来存储流程的数据,并让另一个类在整个过程中管理它。不确定这是否有意义,但话说回来,你的问题也不是很清楚。

作为额外的补充,我会研究依赖注入。我试图记住 PureMVC 是否这样做(我不认为它这样做),但是使用 DI 将是一个相当简单的问题来解决。 Parsley 和 Robotlegs 等框架在这方面非常出色。

【讨论】:

  • 很抱歉,如果描述不佳。本质上,我希望在基于 Flex 的应用程序中实现功能上与 Spring WebFlow 甚至 Struts 等效的东西。 PureMVC 中没有 DI :(
  • Flex 中的 Spring/Struts 称为 Parsley 或 Robotlegs ;)
  • 我经常使用 RobotLegs,但您遇到了同样的问题。除了 DI 和中介的自动处理,RobotLegs 和 PureMVC 非常相似。哦,RobotLegs 使用从特定于上下文的“事件调度程序”而不是 PureMVC 的通知类调度的库存 flash 事件。实现方式不同,但思路是一样的。我使用 RobotLegs 是因为它更简单,样板更少,为我处理大部分注册,并且有 DI。 FWIW,我认为下面的 Cliff(PureMVC 的作者)解决方案是您所需要的。我想知道 RL 是否存在这样的实用程序!?
  • 哦!它确实存在:github.com/joelhooks/robotlegs-utilities-StateMachine 非常酷。
  • 感谢您指出 RobotLegs。替换 PureMVC 不是一种选择(无论如何我也不是很喜欢),但我真的很喜欢 AS3 中的 DI 的想法。谢谢!
【解决方案3】:

在 pureMVC 中,状态机实用程序可能是过程控制器的最佳选择 - 顺便说一句,根据 Implementation Idioms & best Practices 文档。对于 PureMVC,拥有不管理可见组件的中介是非常好的

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多