我有一个带有几个实体的树状结构:一个过程由步骤组成,一个步骤可能有子过程。假设我有2种失败模式:中止和重做。我实现了树遍历逻辑,在树上上下级联失败信号。在中止的情况下,一切都很顺利;中止正确上下流动,通知其父母及其子女。在重做的情况下,同样的情况发生,除了创建一个新进程以替换失败的进程。因为我正在使用DataMapper模式,所以新对象无法自行保存,也没有办法将新对象传递给EntityManager以实现持久性,因为实体不了解持久性甚至服务。
因此,如果我没有将EntityManager传递给域层,那么如何在新对象超出范围之前了解它们呢?
这是实现AOP的好例子,例如JMSAopBundle吗?这是我读过的,但还没有找到有效的用例。
答案 0 :(得分:0)
如果我理解你的问题(你的描述似乎有点匆匆写了),我会做以下事情:
答案 1 :(得分:0)
我刚刚从Benjamin Eberlei那里找到了关于域层中业务逻辑变化的更为抽象的贡献:Doctrine and Domain Events
博客文章的简短引述和摘要:
域事件模式允许将事件附加到实体和 只有当事务处理时才将它们分派给事件监听器 实体已成功执行。这有几个好处 传统的事件调度方法:
- 重点关注域中的行为以及域触发的更改。
- 以非常简单的方式促进脱钩
- 除了Doctrine UnitOfWork之外,没有引用事件调度程序和所有必需的侦听器。
- 无需使用在所有更新操作中触发的无法显式的Doctrine Lifecycle事件。
每个需要采取行动的方法都应该:
我还没有实现这个,但听起来它应该以我实际实现的方法更自动化的方式完成我正在寻找的东西。