C4C OData服务的filter,客户端分页和排序的使用方式

举报
Jerry Wang 发表于 2022/03/31 18:22:29 2022/03/31
【摘要】 假设系统里已经有许多的Lead历史数据,而我们正在进行的微信小程序和C4C集成的项目里,又创建了许多新的Lead数据。如何将这些新的在微信小程序里调用OData服务创建的Lead数据同老的历史数据做区分呢?(1) 在C4C Sales Lead页面里,通过Source字段来标明Lead的来源。对于AI Card项目来说,所有的Lead经由微信小程序创建,因此调用OData API时,Sour...

假设系统里已经有许多的Lead历史数据,而我们正在进行的微信小程序和C4C集成的项目里,又创建了许多新的Lead数据。如何将这些新的在微信小程序里调用OData服务创建的Lead数据同老的历史数据做区分呢?

(1) 在C4C Sales Lead页面里,通过Source字段来标明Lead的来源。

对于AI Card项目来说,所有的Lead经由微信小程序创建,因此调用OData API时,SourceCode指定为“Wechat Social Channel”的代号:Z01

这样,在读取操作时,使用 f i l t e r = S o u r c e C o d e e q Z 0 1 操作,能取出系统所有 S o u r c e C o d e Z 01 l e a d . 再使用 filter=SourceCode eq 'Z01'操作,能取出系统所有SourceCode为Z01的lead. 再使用 inlinecount=allpages,能一并返回SourceCode为Z01的Lead一共有多少个。

最后的url如下:
https://my500.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/LeadCollection?filter=SourceCode eq 'Z01'&inlinecount=allpages

结果如下:

截至2020年3月20日12:23PM为止,在系统上经由微信小程序创建,Source Code字段为Z01的Lead总共有6个。

如果系统里满足这个条件的Lead越来越多,调用OData服务后,会造成规模巨大的数据量从服务器发送往消费端,所以建议使用客户端分页方式读取数据。

首先获取满足SourceCode为Z01的lead个数:

https://my500.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/LeadCollection/ c o u n t ? count? filter=SourceCode eq ‘Z01’

假设返回结果数为1000, 我们可以在客户端进行分页读取,每页读取的个数可以客户端自行决定,比如每次读取20个。

第一页的读取请求:

https://my50.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/LeadCollection?filter=SourceCode eq ''&orderby=CreatedOn desc&$top=20

20个Lead返回:

第二页:即第21到第40个:
https://my50.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/LeadCollection?filter=SourceCode eq ''&orderby=CreatedOn desc&skip=20&top=20
第三页:即第41个到第60个
https://my500.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/LeadCollection?filter=SourceCode eq ''&orderby=CreatedOn desc&skip=40&top=20

点击Sales Lead OWL里某一个Lead,进入TI页面:

TI页面里创建了一个Embedded Component:

aTargets的内容:

从上图可以看出这个navigation是从Lead TI页面screen内部,通过PublicOutportECLeadProduct到达Embedded Component.

在NavigationProcessor里有个方法inscreen_dataflow,统一处理这种屏幕内跳转:

有个很大的switch case语句,我们进入_inscreenToEC的分支。

触发fromLead的inport,完成将LeadID从Lead TI页面传递到EC的任务:

这个fireInport是通过promise实现的异步操作:

_fireInPortFired:

抛出InPortFired事件:

创建一个HTML mashup,port binding选择Lead Info:

在Mashup编辑页面里,指定type为url,输入bing搜索的网址,将查询参数绑定到LeadID上:


用key user tool定位到想要添加Mashup的View上去,

点击Add Mashup,添加HTML到页面:

默认的HTML Mashup位于屏幕偏左的列之内,将其拖拽到Full width区域内:


调整宽度之后的Mashup显示如下:

最后的运行时效果,打开某个lead,会自动将其Lead ID作为参数送到bing进行搜索:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。