在PureMVC中实现流程工作流程

时间:2011-10-11 14:01:00

标签: flex workflow puremvc processmodel

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

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

在我们的团队中,我们讨论了我们应该如何严格遵守PureMVC模型。

在PureMVC模型中,可以在代理中管理流程中的当前状态。

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

管理用户界面的调解员。

但是,我认为这里仍有一点重要:ProcessController。

我们审查过的方法似乎都违反了PureMVC模型(即使只是略微)或制作了不可读的代码。

  • 代理将维护进程的状态。因此,它似乎是实现控制器的适当方式。但是,这会在代理中添加许多业务逻辑。

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

  • 另一个模型会让我们将流程转换信息放入命令中。虽然这似乎是该工作的最佳位置(考虑到命令相对于代理和调解器的作用),但这种方法看起来会产生一些特别令人发指的代码,其中过程转换逻辑分布在多个命令中。

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

感谢 柯蒂斯

3 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

在pureMVC中,状态机实用程序可能是过程控制器的最佳选择 - 顺便提一下,根据实施惯例和实施例最佳实践文档。对于PureMVC来说,让不能管理可见组件的调解员完全没问题