嗨,
库存管理里面,如果某个商品的货位发生变更了,怎样才能自动得更新其他业务表上涉及到该商品的货位?
比如,我们的订单明细表,调拨单,入库单上都记录了相关商品在某仓库上的货位,这些单据可能在商品货位变动前还没有结束。当商品的货位变动时,我想自动修改涉及到该商品的业务单据上的货位信息。
我现在能想到的是在货位调整的方法里面,不断调用修改业务单据的方法,但是如果后续再增加业务,还得修改该方法,很麻烦也很不安全。
我设想有没有什么办法,在新业务上去关联监控货位变化的事件,如果货位变化了,自动调用执行该新业务的某个方法。我看过观察者模式和订阅者模式,总感觉这些还是需要在第三方去做这个关联,总是感觉不方便。
可能是对事件理解不透彻,还望知道的大神们提供点思路或者方案,感谢啦。
在变化的时候发出一条货位变更消息.
订阅这个消息并处理
(。・∀・)ノ゙嗨,我给 @爱编程的大叔 里进一步说明了需求,还请麻烦大神看下,帮我想想办法,谢谢啦。
@HNLY: 这种业务需求的解决流程是:定义一个业务事件(货位变更)-> 定义一个或多个事件处理(在货位变更进行业务1,在货位变更时进行业务2)->将这个事件处理订阅事件.
总的来说一般都要有一个单独的事件处理平台.单独的.
这事情可以从两方面考虑
1、你的需求分析是否需要调整,如果货位是关联信息,是否有必要存储在订单明细表内?
2、假设需求分析无误的话。发布-订阅者模式很简单的,在修改货位的代码中发布货位调整事件。在所有需要响应的单据管理类中,订阅货位调整事件。
目前的需求是这样子的,业务单据中必须存放商品的货位信息。
类似下面的链接,我怎样让Mouse类的某个方法 直接 订阅到 Cat类的CatCry事件, 而无需再到Program里实例化个Mouse与Cat 关联。
http://blog.csdn.net/loveyou388i/article/details/71211292
因为后面还有其他未知的业务需要用到货位信息,我想在新业务开发时,直接绑定到货位变更上,而无需再到Controller里面再次实例化后再绑定。
@HNLY: 人家那写的只是一个示例而已。
你去看看Prism里面的发布订阅吧。
使用同一个 IEventRepository 就可以解耦 Cat 和Mouse了。
事件独立定义在一个 common类中。
@爱编程的大叔: 不好意思,Prism 这个不太懂。你能方便提供个示例吗?