`
wind_bell
  • 浏览: 287001 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

OA++中基于Notes平台上浏览器的开发

阅读更多

莲花(Lotus)公司的群件产品Lotus Domino/Notes 自推出之后,备受大家的关注和关爱。经过不断的发展、不断成熟,目前其最新版本4.6x已是一个相当可靠、稳定、友好、健壮的系统。

Domino/Notes是一套以邮件为基础的数据库平台,其处理文档型数据的功能尤其强大。利用表单、视图、导航
器等设计元素,以及公式、Lotus Script等代码方式,它将数据库及代码揉和在一起,形成一个既是开发平台也是应用平台的系统。Domino是系统的服务器端,Notes是系统的客户端。邮件、数据库可以全都装载在服务器端,这样用户只需用自己的ID在任何一台客户机上登录,就可以根据权限访问数据库。进而基于这种机制,加上其完善的权限控制(存取控制列表、角色),构成了一套完整的工作流基础平台,为办公应用系统提供了良好的开发应用构架。

  而现在另一个如日中天的应用就是浏览器了。自从有了浏览器之后,人们似乎开始不习惯其他的界面起来。在浏览器里,文字、图片、声音、动画等媒体尽呈于大家的面前,我们只需要轻点几下超链,就可以将不同地域、不同时间、不同系统的信息用图文并贸的形式“呼唤”出来。这些特性注定其成为局域网、广域网中的一种信息组织流行方式。Lotus公司Domino/Notes的下一个版本5.0中据说对浏览器有完美的支持。但即使在4.6x版本中,对浏览器的支持,Domino/Notes也不可谓不强大。PSKY-OAS是长天公司基于Notes平台上开发的以管理为目的的OA系列产品,其中系列产品之一:PSKY-OA++,就是为全面适应和满足中小型企业的要求,在Notes客户端运行也可以在浏览器上运行的办公系统(对NotesClient/Browser的双重适性)。

  基于Notes上的浏览器,目前有两种解决方案。一种是用数据库外部的HTML文件构造应用系统的引导模块,到功能级应用时再交由数据库去解释;另一种解决方案是完全基于Domino/Notes自身的,所有的代码都在数据库内部书写,全部交由Domino去解释。显然后一种方法更加好一些,因为前一种方法不可避免的要放弃一定的跨平台性、代码灵活性以及易实施性。现在我就后一种方法着重阐述一下NotesClient/Browser的双重适应性的目标及实现,以及我们在设计开发PSKY-OA++时方法与技巧。


首先,Domino本身就是一个Web服务器(其实,它同时还可以是一个Internet邮件服务器、传真服务器),与一般Web服务器不同的是,它可以解释扩展名如(.nsf)的Notes数据库文件。Domino首先一如既往的根据用户要求,对数据库存取、处理,当它要将数据传送给用户时,Domino会聪明的将输出信息翻译为所有安装了浏览器的计算机都能识别的HTML语言,再将此经过翻译的信息输送给用户。这是Domino对浏览器的最基本的支持,也是最重要的支持。这一切只从您在Domino窗口中敲入“Load http”开始。在客户机上的浏览器软件中,用户只按照正常的方法键入需要打开的数据库的超链(如http://pskyoas_server/psky-oas.nsf),Domino会找到psky-oas.nsf,并以HTML的形式打开。我们可以查看一下打开数据库的HTML源文件,其中的图片资源都是一个长长的临时文件名,暂时生成并暂时存放在数据库中。而在Notes中对文字信息的格式的描述都自动转换为了HTML语言标注,显示效果基本一致。

  对浏览器的第二个重大支持,就是表单中的HTML应用。表单这一个组织信息的最基本的元素,它可以用两种方式直接输入浏览器通用HTML语言。一种是将整个表单直接作为HTML文本文件,交给浏览器解释;另一种是在表单局部插 入“内置HTML”。第二种方式比较灵活一些。在表单内部适当用一些内置HTML,并且对Notes隐藏,就可以实现两种客户环境的不同显示风格。把HTML书写在Notes内部表单中比在外部用HTML文本文件要灵活的多。在表单中,我们可以插入一些计算型的域,比如数据库的文件名。在表单中Domino看到有可计算的域,它会先将域值计算出来,再将HTML传送给浏览器,这样就可以很容易的实现不同用户点击同一个链接能够打开不同的数据库之类的应用。比如在浏览器上想插入一张GIF动画,直接贴进来是不行的,Domino会把它解释为一张静态的GIF图片。我们可以将图片用一个附件的形式附在某一个表单当中,在表单中插入一段对Notes隐藏的内置HTML:<IMG SRC = "/pskyoas_server/psky-oas.nsf/Image/AniGif/ $file/AniGif.gif" 
那么,在Notes中毫无影响,而在浏览器中,您就可以看到一张动感的GIF图片。
又如,插入一个计算域“MailDbName”,用@UserName获得用户名,并查找Domino的Name.nsf数据库,获得邮件数据库
名称,添入计算域中。这样,只需要在表单中写上: 卨och _fcksavedurl="MailDbName>卨och" 就可以对同一个超链,不同用户打开各自的邮件数据库,实现灵活应用。

第三个重大的支持,就是浏览器对设计元素的模板表单。以下几种是最常用的设计元素模板表单:
$$NavigatorTemplate for NavgatorName
$$ViewTemplate for ViewName
$$SearchTemplate for SearchName
这是默认的模板表单的名字,它有其固定的格式。
$$NavigatorTemplate是固定的默认部分,它告诉Domino名为NavigatorName的导航器在浏览器上打开时,使用此表单
作为模板。然后,开发人员就可以在这个表单中施展拳脚了。同样,$$ViewTemplate代表名为ViewName的视图在浏览器上将 用此表单打开。

比如我想在Notes中打开数据库时就打开名为NavFirst的导航器,而在浏览器上用另一种方式表现,可以创建一个名为
“$$NavigatorTemplate for NavFirst”的表单,在里面书写提供给用户在浏览器上看到的数据,就可以轻易实现进入数据库系统的NotesClient/Browser的双重性。

Notes还为浏览器的开发提供了很多的接口以及工具,比如Web代理等,只要灵活应用,就能创建一个优秀的浏览器版本的Notes 办公系统或其他系统的应用。但我们还需要注意的是,并不是Notes中的每一项功能都能对应的移植到浏览器上。象布局、自动刷新域等功能在浏览器上就没有对应的实现方法。还有一些Domino/Notes没有直接提供的功能,我们可以换一种方法去模拟。比如浏览器上没有提供可以选择又可以新建的关键字框,可以通过选择框加上输入文本框,通过公式来模拟它的实现。 功能是一套办公应用系统的基础,但易操作性也不可忽略。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics