如何全面地分析数据,可视化的展示数据分析结果,并及时有效将关键数据传递给用户,是互联网时代的商业智能(Business Intelligence)所关注的核心问题。BI分析工具已经不再仅仅是分析和展示数据的工具,而为向自动化和智能化演进,希望可以主动地把数据结果传递给用户。因此,数据看板通过截图的形式被主动推送给相关用户便是一种及时且有效的数据分析结果触达到用户侧的方式。
目前现有BI产品中看板推送的主要技术方案为利用浏览器内核对数据看板的URL(Uniform Resource Locator,统一资源定位器)进行页面渲染再截图的处理流程,这样可以保证用户接收到看板截图和其在浏览器页面上看到的内容与格式一致,具有所见即所得的高保真性。
通过看板的URL直接进行截图,存在以下缺点:
本方案希望设计一种数据看板的动态截图方案,以实现以下效果:
本方案具体内容如下:
用户通过“推送规则配置模块”设置看板推送规则并保存在数据库(DB)中进行持久化,推送规则内容包括待推送的看板列表、消息接收人列表、截图布局类型(PC端布局或移动端布局)、推送定时规则等等。
“推送任务调度模块”定时从DB中获得待执行的推送规则,并根据不同的推送人拆分为不同的截图推送任务,发起执行流程。
执行流程包括“渲染截图”、“截图保存”、“内容推送”三个步骤,每一步都由独立的模块执行,每个模块在执行后无论成功还是失败都会向“推送任务调度模块”反馈任务的执行状态;“推送任务调度模块”会在数据库中记录任务的执行状态,以方便管理推送任务的声明周期。
“任务补偿”模块定时从DB中获取到执行失败的任务,从上次失败的步骤重新开始执行,确保失败任务可以进入补偿流程。
“渲染截图”模块负责根据接收人的身份权限生成看板页面的动态URL,并根据此来渲染和截图,以保证看板截图内容因人而异的推送效果。具体内容如下:
5.1 利用非对称加密算法(如SHA1_WITH_RSA),生成包含接收人的身份数字签名(data signature),该签名在有效期内可以用于验证登录用户身份;
5.2 根据推送规则的配置信息(如是PC端布局还是移动端布局)和接受者的权限筛选条件,动态生成对应看板的URL。
5.3 根据待截图看板内的可视化组件的数量,等比例设置合适的看板截图超时失败时间;
5.4 基于无头(headless)浏览器内核执行截图脚本:截图脚本首先会将5.1中生产的用户身份数字签名提交给指定的登录接口,签名的时效性和正确性通过之后,当前会话便进入数字签名对应用户的身份的登录态;基于之前登录后的会话,脚本依次访问5.2中生成的看板动态url,并待其渲染完毕后进行截图操作;如果看板在等待超过5.3中设置的超时时间之后也没有完成渲染,则认为截图任务失败,进入任务补偿流程;反之,如果截图在超时时间之前顺利完成,则会被保存在指定临时目录下,等待被上传。
“截图保存”模块负责将5.4中生产的截图上传到简单存储服务(Simple Storage Service,简称S3)模块,S3模块返回截图的保存地址链接,这些链接将用于推送消息的生成,具体细节如下:
“内容推送”模块负责根据推送配置规则将6.2中记录的截图S3存储链接生成Markdown格式文本,并通过IM模块给用户发送消息,达到消息推送的效果,具体细节如下:
尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili