设计 - 我如何在持久对象改变状态时处理事件?
也许这是一个愚蠢的问题,但我是一名菜鸟开发者。设计 - 我如何在持久对象改变状态时处理事件?
可以说,在一个数据驱动的应用程序CRM'ish,我有一个客户类型,可以经过多个阶段 - 即阶段1 - 5
由于客户更改阶段 - 事件应触发。 示例 - 当客户从阶段2进入阶段3时,将发送一封电子邮件,更新一些列表并执行一些计算。
我在想象客户变化的状态可能是应用程序用户通过某种图形界面手动更新客户的结果。
所以我想知道 - 我是否应该通过断言只有一种方法来更新客户的阶段状态,然后确保每当该操作完成时执行一系列操作?
在我的想法(和场景)中,这意味着从关系数据库中检索客户,更新相位字段,坚持客户退后,然后始终对此操作做出反应,通过触发注册为依赖的任何操作该特定的相变。 但是我不确定如果我想要对10,000个客户进行批量阶段更改,这会很明智。
对此有何想法?我只是在寻找任何形式的输入 - 假设我完全无能为力。
我认为这可以分开的功能,一个用于单个客户相变,另一个用于批量更改,后者根据需要将执行或不执行额外操作,也可以以更有效的方式执行操作,或者甚至将操作排队,或者部分操作,例如发送电子邮件,对于后台处理,如果附加动作很长并且需要及时完成相位变化,则需要及时完成相位变化。
当相位变化是由于某些可能复杂的条件引起的时候,另一个问题会弹出而不是手动相变,那么你应该确定一个条件检查您的业务逻辑中的某个位置,足够低以捕获影响阶段的所有更新操作。但是正如你所写的那样,情况并非如此,因为在你的情况下,相变是手动发布的。
在许多情况下,最好在业务逻辑中有一个明确的功能来改变阶段。这应该是改变阶段的唯一方式,而且是明确的。像“ChangeCustomerPhase(客户客户,阶段newPhase)。这使得它更容易处理跟踪变化,如果一切都可以自由改变。