大家好,才是真的好。
感谢AI的辅助,本篇虽然写得很快,但内容还是很扎实,主题是Domino中的数据可视化问题。
本文详细分享了在Domino中实现数据可视化可视化的强大而简单的方式,实现业务和逻辑的完全分离,避开了32K数据限制,最重要的是,类型丰富,界面好看。
主要是来自于上个月Engage大会中Phora Group公司的的Richard Moy的分享,他从自1995 年开始使用 Notes,分享了从数据可视化的定义、价值、原则、最佳实践和方法等方面核心内容。
我们先看看当前主流的可视化开源工具:
采用开源工具也要考虑许可类型以及数据兼容,并能否在Domino平台运行,还要考虑工具是否足够轻量,拥有较好的性能和良好的集成特性,等等。
废话不多说,大家最喜闻乐见的就是Demo分享环节。
这里有一个案例,就是Gross Point 啤酒厂有8种啤酒、8名销售人员;2025 年目标销售额 115 万美元;销售数据都储存在Domino数据库中,现在要进行可视化展现。
这里有两个库,一个是dvdata.nsf用来存储数据,另一个是dvdemo.nsf,用来进行前端可视化页面展示,我们建议在Domino服务器中创建一个文件夹,例如engage用来存放该两个数据库(可以在我们的公众号中回复“可视化”来获取,不带引号哦),你也可以使用其他文件夹,但会涉及到一点js改动,如下图:
可以在domino服务器上运行load fixup engage来识别该两个数据库,也别忘记了签名。
之后你可以通过浏览器来直接访问https://hostname/engage/dvdemo.nsf/demo01看到效果:
当你点击2025按月汇总的柱形图,则会跳到详细页面中查看对应月份每一天的销售情况:
这一页我没有做文字汉化。
我们再来解析一下该基于Domino的Web应用的结构。
通常,在Domino上做Web开发,可以考虑很多技术,例如传统的Domino Web(表单、视图、可计算字段、可计算文本、代理结合HTML和Javascript等),也可以考虑XPages;还有Node.js或其他Web技术,然后使用DAS、readviewentries、XAgents、LotusScript/Java 代理或REST JSON API来进行获取Notes库中的数据。
而这里采用的就是最为传统的Domino Web技术方式,严格做到了表单、数据和业务逻辑分离,并且没有32k数据限制。
我们先来看看,每个 Web 页面(例如本例中的demo01)都由一个 Web 导航器(Navigators,如demo01),然后对应有一个Web表单(如$$NavigatorTemplate for demo01),如下图:
这就共同构成了一个网页容器。
用户通过浏览器访问的是demo01导航器,就会自动加载表单NavigatorTemplate for demo01,而该表单上有一个叫做html的富文本字段和其他CGI字段
这时就会触发表单中的 WebQueryOpen (buildWebPage) 代理程序,buildWebpage 代理从对应Demo01文档中的 RTF 字段(html)中读取要生成并显示 Web 内容的 HTML,已经存在的Demo01文档不必位于同一数据库中,如下图:
该文档可以双击打开查看,里面是写好的Html(你甚至可以使用VSCode写好,然后推送到这里):
静态网页这样做就可以了,但我们这里是可视化显示,因此要动态地从另一个Notes库中加载销售数据。
上图文档html里面关键和有趣的是格式为 <$DX(something)$> 的 DX 标记,将 DX 标记替换为您需要的业务逻辑,并输出响应以包含在 Web 页的 html 生成中。响应可以是 html、text、JSON 或其他。这取决于具体的需要。
例如在<$DX(CurrentYear)$>,它调用了一个返回当前年份的 LotusScript 函数;如果你在这里使用计算文本元素来代替的话,返回其他数据库或服务器上的数据,有32K限制,对不对?但在这里没有,因为这些html在RTF字段中,并且我们采用LotusScript来替换的。
具体的lotusscript代理代码我们这里就不讲解了,Demo里面都有,非常简单,主要是思路的问题。
本文参考了站点内容:https://dominointerface.blogspot.com/2025/06/out-with-old-in-with-old-building-your.html,你也能在该站点下载到本文的Demo应用。
今天就介绍到这里。