我正在寻找有关在基于PureMVC的应用程序中实施流程/工作流程管理的建议。
我们的Flex应用程序包括许多流程,例如帐户创建,付款处理等。
在我们的团队中,我们讨论了我们应该如何严格遵守PureMVC模型。
在PureMVC模型中,可以在代理中管理流程中的当前状态。
命令显然负责处理每个节点和节点转换所需的操作。
管理用户界面的调解员。
但是,我认为这里仍有一点重要:ProcessController。
我们审查过的方法似乎都违反了PureMVC模型(即使只是略微)或制作了不可读的代码。
代理将维护进程的状态。因此,它似乎是实现控制器的适当方式。但是,这会在代理中添加许多业务逻辑。
Mediator空间更有意义,但该空间中的控制器不一定直接与任何特定的UI元素交互,而是协调/委托给专用的Mediators。
另一个模型会让我们将流程转换信息放入命令中。虽然这似乎是该工作的最佳位置(考虑到命令相对于代理和调解器的作用),但这种方法看起来会产生一些特别令人发指的代码,其中过程转换逻辑分布在多个命令中。
那么其他人如何处理这个问题?
感谢 柯蒂斯
答案 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来说,让不能管理可见组件的调解员完全没问题