CRM 中间件里的发布 - 订阅者模式
从事务码 SMW01 里能观察到一个 BDOC 可能被发送往不止一个目的 site 去,比如下图所示的 5 个 site 都会收到该 site,而高亮显示的 SMOF_ERPSITE 代表 ERP 系统 QI3 的 client 504 会接收到这个 BDOC。
所以上图列表里的 site 是从哪里读取出来的?
以 BDOCPRODUCT_MAT 为例,在视图 SMW3FDBDOC 里维护回调函数:
第一个回调 SMOH_REPLICATION_WRAPPER_MSG 负责决定需要从 CRM 将该 BDOC 发送到哪些 site 去。
这个回调是自动生成的:
在我的系统里,一共决定出了有 6 个 site 需要接收:
上图的 ABAP 代码里使用了 guid A17123B82C2DD5118BC8080006277F8D 来查询表 smohsubsit,那么这个 guid 到底指什么东西?
可以在表 SMOHPUBL 里查询到 guid 对应的对象描述:Product Materials(MESG)
到这里我们发现它就是我们熟悉的在事务码 SMOEAC 里为某个 site 订阅它希望监听的众多对象之一。如下图,QI3/504 的 site 注册了"Product Materials(MESG)"的发布,意味着一旦 CRM 的 Product 发生了修改,对应的 BDOC 就会发送到 QI3/504.
要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙":
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/f7d5c466823210104cf2ef065】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论