天天看点

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

一个例子:

我在SalesLead TI页面的这个tab里配置了一个url Mashup,点击之后会跳转到bing的页面:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

然而从Chrome开发者工具的Elements标签页里并未看到target url.

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

这个mashupID末尾为10,我在运行时点击之后:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

在Chrome开发者工具的network标签页里,看到一个HTTP请求去读取Mashup component:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

下图可见,我们在RUI里创建Mashup,保存之后生成的也是一个UI component:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

相关的Mashup实现文件:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

ttps://c4cstatic.hana.ondemand.com/resourcesvc/2002.2.1.0.1583807562475/SAP_UI/HTML5/resources/sap/client/mashup/common/util/Util-dbg.js

https://c4cstatic.hana.ondemand.com/resourcesvc/2002.2.1.0.1583807562475/SAP_UI/HTML5/resources/sap/client/mashup/rt/util/InportAdapter-dbg.js

注意,url mashup lazy load,未点超链接之前,没有url生成,也没有上述这些文件的加载。

点击超链接之后:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

传递到Mashup的输入参数,在InportAdapter._getSystemParameters里生成:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

下面这行代码执行完之后,新的Chrome tab就打开了:

that.emit(“inportFired”, mData);

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

InportFire的处理函数:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

从inport里解析出action:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

跳转的目的地已经维护在oAction变量里了:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

oService.createUrl, 开始拼凑Mashup的url了:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
https://c4cstatic.hana.ondemand.com/resourcesvc/2002.2.1.0.1583807562475/SAP_UI/HTML5/resources/sap/client/mashup/common/model/MashupComponentModelService-dbg.js?eval

最后打开浏览器新窗口的代码是在window.open里实现的:

SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的
SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

继续阅读