1

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

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

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

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

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

用于管理 UI 的中介。

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

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

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

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

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

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

感谢 Curtis

4

3 回答 3

4

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

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

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

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

于 2011-12-13T17:20:12.430 回答
1

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

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

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

于 2011-10-12T05:22:06.113 回答
0

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

于 2011-11-11T12:47:27.343 回答