我正在尝试编写一种行为,使我的模型可以访问我设计的简单工作流引擎。工作流引擎本身作为 CakePHP 模型工作,工作流数据存储在数据库中,就像存储任何其他模型数据一样。
基本上我想要做的是让行为在基本模型上调用操作时使用工作流模型。例如,如果对 Posts 执行了 edit() 操作,则 Post(附加了行为)将使用其自己的模型名称、操作和 id 作为参数来触发工作流行为(例如 [Post, edit, 1]) . 然后该行为将调用工作流模型的功能,该模型记录了在帖子上运行编辑时要做什么(例如,向订阅该帖子的用户发送电子邮件)并将执行该操作。
我的问题是,从行为中调用模型/控制器方法的正确方法是什么?从行为中使用的模型将始终是工作流,但行为应该可以从基本上任何模型中使用(除了工作流本身)。我知道我可以直接从行为中运行 SQL 查询,但这当然不是 Cake 方式 :-)
或者,我是否以错误的方式处理这个问题?我想在数据库中存储一定数量的逻辑,以便不同用户可以轻松配置它,并且不会在模型/控制器逻辑本身内进行无休止的配置检查,以便将来可以轻松添加/更改/删除工作流步骤.