这里的云指FaaS,Fiori-as-a-Service
After I log on HCP via my own user, I could see many tiles:
https://fiorilaunchpad-xe84733bd.dispatcher.neo.ondemand.com/sap/hana/uis/clients/ushell-app/shells/fiori/FioriLaunchpad.html
我很好奇这些tile的数据源是什么,于是研究了一下。
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():
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:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":