SAP Hybris Commerce product读取的调试截图
通过debugger观察到Product facade调用ProductService,Service又调用DAO通过flexible search去DB根据product code 358639取数据。

类似SE16,也可以直接在Hybris Admin console里执行执行flexible search:

搜到1条记录:




从DB里取出的product数据和在debugger里观察到的一致。可以看看Hybris里product有哪些重要的field:



在ABAP应用里,我们application developer用Open SQL访问database, 这些Open SQL会被Database interface转换成database provider specific的SQL然后执行。

CRM和C4C里还支持enterprise search / simple search,

实现原理实际上是application call一个RFC到TREX server上拿到查询结果。
Hybris里有类似的功能:FlexibleSearch service

FlexibleSearch service使用Hybris自己发明的一套基于SQL syntax的language,类似ABAP的open SQL.
看个例子:

select * from {Product} where {code} = ‘cris03’
这条flexible search语言被预编译成和SQL语句语法类似的查询语句:
SELECT * FROM products item_t0 WHERE ( item_t0.p_code = ‘cris03’) AND (item_t0.TypePkString IN (?,?,?,?,?,?,?) )

上述语句里7个问号代表的变量的值,可以在execution statistics里找到:

其实就是7个catalog:

搜索结果,对应两条记录:

这两条记录同样可以在backoffice里搜索得到:


如果写作这样也是可以的,
没错。这种方式是通过绝对路径来load sap-ui-core.js这个重要的文件。
如果是改成这种相对路径的方式:

http://scn.sap.com/thread/3506469
按F12打开development tool后,能够在Sources tab里看到这个sap-ui-core.js.

那么我如果本地用tomcat 运行ui5 程序,我怎么知道这个sap-ui-core.js从本地什么地方load的呢?
我们可以使用Chrome development tool里的Network tab,输入sap-ui作为filter:

然后单击其中一个文件,在http response的field x-sap-ResourceUrl 里就能找到答案了。

到本地的folder去找找,看能不能找到这个文件?

我们会发现这个folder只是temp folder,这是我们在Eclipse里run as server时,Eclipse自动把UI5 core library里的js解出来,放在这个temp folder供加载用的。
但是这只是我们在Eclipse里开发并且做单元测试的情况。如果客户使用我们的UI5,并不是用这种方式加载sap-ui-core.js. 具体方式可以等on board之后学习,因为这就需要netweaver的知识了。
关于问到的web.xml里关于Servlet的一些知识点:

可以随便用关键字tomcat+Servlet搜索一些文章来看。
我自己也写过一篇:http://scn.sap.com/community/developer-center/front-end/blog/2014/12/04/explore-the-comsapui5resourceresourceservlet
- 点赞
- 收藏
- 关注作者
评论(0)