资讯专栏INFORMATION COLUMN

观察者模式在One Order回调函数中的应用

tinysun1234 / 3032人阅读

摘要:利用框架,这种的变化和的读取这种依赖关系实际上通过设计模式里的观察者模式来完成的。每当,数据发生变化时,这个变化通过下图的发布出去,其他观察者就能基于这个发布者发布的事件进行对应处理,在我文章的这个例子里,就会调用根据最新的读取的数据。

例如需求是搞清楚function module CRM_PRODUCT_I_A_CHANGE_ORGM_EC在什么样的场景下会被调用。当然最费时间的做法是设一个断点,然后跑对应的场景,观察断点何时被触发。也有另一种不通过调试的分析方法:

使用事务码CRMV_EVENT, 输入函数名称CRM_PRODUCT_I_A_CHANGE_ORGM_EC:

得到结果:

上述结果的业务含义是:每当Sales area被创建或者更新时,我们查询的function module都会自动被One Order框架调用。

观察如下调用栈:

那么为什么从业务上来说,每当一个订单的Organization Model组织架构数据发生变化之后,就需要调用这个回调函数呢?打开这个函数的源代码,在102行看到了CRM Product的settype之一, CRMM_PR_SALESG(Set type allowing you to group products for various purposes. As this set type is dependent on distribution chains, a distribution chain has to be selected before data can be maintained)的数据被读取。

关于这个settype更多说明,请参考SAP Help).

这个settype是一个Distribution Chain相关的settype, 离开了某个具体的Sales area则无意义。

因此每当订单的Organization model数据发生变化时,CRMM_PR_SALESG的数据必须根据变化后最新的Organization model数据重新读取。利用One Order框架,这种Organization model的变化和CRMM_PR_SALESG的读取这种依赖关系实际上通过设计模式里的"观察者模式"来完成的。CRM_PRODUCT_I_A_CHANGE_ORGM_EC是Organization model数据变化的众多观察者之一,通过事务码CRMV_EVENT订阅了Organization model数据变化这一事件。每当Organization ,model数据发生变化时,这个变化通过下图的CRM_EVENT_PUBLISH_OW发布出去,其他观察者就能基于这个发布者发布的事件进行对应处理,在我文章的这个例子里,就会调用CRM_PRODUCT_I_A_CHANGE_ORGM_EC根据最新的Organization model读取settype CRMM_PR_SALESG的数据。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/51964.html

相关文章

  • 察者模式One Order回调函数中的应用

    摘要:利用框架,这种的变化和的读取这种依赖关系实际上通过设计模式里的观察者模式来完成的。每当,数据发生变化时,这个变化通过下图的发布出去,其他观察者就能基于这个发布者发布的事件进行对应处理,在我文章的这个例子里,就会调用根据最新的读取的数据。 例如需求是搞清楚function module CRM_PRODUCT_I_A_CHANGE_ORGM_EC在什么样的场景下会被调用。当然最费时间的做...

    U2FsdGVkX1x 评论0 收藏0
  • 察者模式One Order回调函数中的应用

    摘要:利用框架,这种的变化和的读取这种依赖关系实际上通过设计模式里的观察者模式来完成的。每当,数据发生变化时,这个变化通过下图的发布出去,其他观察者就能基于这个发布者发布的事件进行对应处理,在我文章的这个例子里,就会调用根据最新的读取的数据。 例如需求是搞清楚function module CRM_PRODUCT_I_A_CHANGE_ORGM_EC在什么样的场景下会被调用。当然最费时间的做...

    princekin 评论0 收藏0
  • node异步非阻塞的杂谈

    摘要:引言作为服务器的优势就在于适合处理高并发的请求,对于网站后台这种密集型的后台尤其有优势,其核心就在于是一个异步非阻塞模型。关于异步,同步,阻塞,非阻塞这些概念,本文不做讨论。另外两个的调用时间需要判断是否都在主线程中被执行。 引言 node作为服务器的优势就在于适合处理高并发的请求,对于web网站后台这种I/O密集型的后台尤其有优势,其核心就在于node是一个异步非阻塞模型。关于异步,...

    izhuhaodev 评论0 收藏0
  • 设计模式察者模式

    摘要:一什么是观察者模式观察者模式,引用维基百科的说法,一个目标对象管理所有相依与它的观察者对象,并在它本身状态改变时发生通知。四观察者模式的用途观察者模式主要用于解耦合,一个对象变了,可以通知多个对象,而不是在回调里来处理各种情况。 一、什么是观察者模式 观察者模式,引用维基百科的说法,一个目标对象管理所有相依与它的观察者对象,并在它本身状态改变时发生通知。这通常通过调用各观察者所提供的方...

    kamushin233 评论0 收藏0
  • JS之14种设计模式 (6)

    摘要:序列文章面试之函数面试之对象面试之数组的几个不操作面试之对比分析面试之数据结构与算法前言设计模式如果应用到项目中,可以实现代码的复用和解耦,提高代码质量。 showImg(https://segmentfault.com/img/bVbq2VA?w=480&h=260); 序列文章 JS面试之函数(1)JS面试之对象(2)JS面试之数组的几个不low操作(3)JS面试之http0.9~...

    luckyyulin 评论0 收藏0

发表评论

0条评论

tinysun1234

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<