Sent: Tuesday, March 31, 2015 7:02 PM
After I log on HCP via my own user, I could see many tiles:
fiorilaunchpad-xe84733bd.dispatcher.neo.ondemand.com/sap/hana/ui…
I am very curious how and where this tile information is retrieved from HANA cloud.
Here below is my research result.
-
The tile information is fetched via restful service observed in network tab:
It is a json stream, use list a small part of it here:
{
"ID": "70c4b7f1-5579-4517-bc09-e7231f5add96-1426085327112",
"packageID": "",
"objectName": "",
"type": "chips.tiles.applauncherdynamic.DynamicTile",
"templateProperties": [
{
"key": "navigation_target_url",
"value": "#flp-runApp?html5App=cuscrmopportunity&SAPUI5.Component=cus.crm.opportunity&url=/"
},
{
"key": "formFactor",
"value": "{\"desktop\":true,\"tablet\":true,\"phone\":true}"
},
{
"key": "service_url",
"value": "/sap/opu/odata/sap/CRM_OPPORTUNITY/Opportunities/$count"
},
{
"key": "sap.hana.uis.flp.app.intentSemanticObject",
"value": ""
},
{
"key": "sap.hana.uis.flp.app.intentAction",
"value": ""
},
{
"key": "navigation_component_url",
"value": "/"
},
{
"key": "service_refresh_interval",
"value": "300"
},
{
"key": "navigation_component_name",
"value": "cus.crm.opportunity"
},
{
"key": "allow_unknown_parameters",
"value": "true"
},
{
"key": "tile_size",
"value": "1x1"
},
{
"key": "html5_application_name",
"value": "cuscrmopportunity"
},
{
"key": "sap.hana.uis.flp.app.type",
"value": "SAP_UI5_Component"
},
{
"key": "display_icon_url",
"value": "sap-icon://Fiori2/F0012"
},
{
"key": "display_title_text",
"value": "My Opportunities"
}
]
},
-
The restful service is implemented via consumption_service, whose source code could be found in HANA studio.
-
The call will delegate to FIORI_DAO:
-
FIORI_DAO is a subclass of WORKSPACE_DAO:
And workspace DAO just issue the query to HANA database via call getResultSet():
5. Finally the HANA procedure GET_APPSITE will be called:
Inside the procedure we can know the tile information in HANA HCP is retrieved based on the union of the two HANA tables below:
我们的Fiori UI不再是存在netweaver的BSP application里,而是存在HCP的cloud repository里了。 2. Fiori Launchpad及相关配置,按照wiki的介绍,现在tile configuration的内容最终是存放在HANA native的table里,通过XSE暴露的service给client端调用。 XSE的service是通过server side javascript实现的,这些javascript就是前一封邮件里在HANA studio里能找到的那些source code。和我们已经很熟悉的client side javascript相比,这些server side javascript在Chrome的F12里无法看到,也无法在client端debug,因为其是执行在server端的。
如果想要debug,需要用HCP 专门的workbench打开server端的实现,把debugger attach到client端的session上,然后trigger断点。这个debugger功能很弱,比如看不到callstack。一般情况下如果遇到HCP相关的incident,一旦能排除不是我们application的问题,我一般都直接FW到HCP的component让他们去看。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":