Mobile Service推送原理其实很简单,调用Report Service执行报表后并保存已执行的历史版本文件(保存在content store库),同时生成mobile 所需特殊元素(上一篇提到过)并生成推送的用户列表。因此仅推送列表中的用户方可在APP端读取推送的指定报表。
鄙人根据后台mob.log,总结出如下推送工作的总体流程草图,
现在一步一步详解:
1、 启动mobile任务计划,当然前提是做一个JOB,请参考”CognosMobile工作原理--前端应用”
2、 发送请求到dispatcher,调用reportservice执行报表
3、 保存执行版本到contentstore资料库
同时,读取推送用户清单并写入MOB_USER
USER_ID
DEVICE_ID
DEVICE_PROFILE
CREDENTIAL_PATH
CAM_ID
LAST_LOGIN
LAST_UPDATED
4、 获取报表已执行版本的history信息并写入MOB_HISOTRY,该表只保存history_ID、event-time信息。前端APP读取时根据historyID去content store获取已生成的报表规范。
HISTORY_ID
EVENT_TIME
EVENT_CODE
ARGUMENTS
5、 生成mobile特有的元素并写入MOB_BLOBS和MOB_RESOURCE(在此之前会先写入临时表MOB_TEMPSTORAGE,MOB_TEMPSTOREBLOBS)。里面存储的HASH信息被加密处理了,源代码开发人员也看不懂。当然也没必要去理解它,只要知道它存储报表元素即可。
MOB_BLOBS
HASH
SEQUENCE
BLOB_VALUE
ADDED
MOB_RESOURCE
RECOURCE_ID
RENDER_ID
PATH
FORMAT
一个报表推送会产生很多HASH对象,两表通过HASH关联获取BLOB_VALUE值,并解析生成报表页面。
6、 生成MOB_RENDERS记录,每次推送后生成的RENDER_ID是唯一的,当然一个推送对象会产生多个RENDER_ID,也是mobile service对象独有的ID。
RENDER_TIME
PORTALITEM_ID
BASC_DOC
SAVED_OUTPUT_TIME
生成MOB_RENDER_HISTORY映射记录,用于关联BLOB_HISTORY获取history_id,用于从content store里得到已保存的报表规范。
7、 生成MOB_USER_RENDER映射记录,推送的用户根据RENDER_ID去获取报表对象。
NAME
LAST_VIEWED
现在我们可以根据这些个物理表画逻辑关联关系。
至此通过几篇文章,我们把MOBILE的工作原理已经全部剖析出来了。当然,以上几篇MOBILE文章纯属个人研究,89%以上正确地涵盖了MOBILE工作原理。而且鄙人相信通过这几篇文章,再加上阁下的理解,您基本上理解透了COGNOS MOBILE了,甚至可以拍着胸脯说,COGNOS MOBILE的任何问题都不在话下了。有了该基础后,下一篇,我们将去解决我在项目上遇到的那一个难题,请继续关注“4、解决The Mobile Service has caught an exception问题”。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
关于TWT使用指南社区专家合作厂商入驻社区企业招聘投诉建议版权与免责声明联系我们 © 2024talkwithtrend — talk with trend,talk with technologist京ICP备09031017号-30
添加新评论4 条评论
2015-10-16 08:31
2015-10-15 15:57
2015-10-12 11:57
2015-10-12 10:45