关于Aggre-Repository-eventBus的关系
Aggre产生事件,然后由Repository发送给eventBus,再由eventHandle进行处理。
那么,Repository什么时候把事件 publish 到 eventBus呢?
是当 Aggre.store 时? 还是 ... 请BANQ和各位大神帮忙赐教
Aggre产生事件,然后由Repository发送给eventBus,再由eventHandle进行处理。
那么,Repository什么时候把事件 publish 到 eventBus呢?
是当 Aggre.store 时? 还是 ... 请BANQ和各位大神帮忙赐教
需要返回吗?如果担心出错,可采取存储的事件回滚再操作。
当 commandHandle 调用时候会触发 domain aggre function. create event, 这时候 是马上publish到 event bus 吗?
当然,速度越快越好,不过是异步的,不影响领域对象自身逻辑正常运转。
关于 领域对象不暴露自己状态属性,我有些不习惯,就好比如下代码:
// changeName事件产生调用来更改属性。
function onChangeName(event){
this.name = event.data.name;
}
我想知道这样做的好处和是否必须这样做?
[该贴被brighthas于2012-07-26 13:21修改过]
因为状态是被动作操作的,而动作可能是系列动作,这些系列动作需要保证原子性,这样才能保证状态数据的完整性和一致性。
状态不被暴露,就是不允许外界直接操作状态,只能通过领域对象提供的特定方法操作,而这些方法内都有保证状态一致的操作顺序。