缘起
“删除”是几乎所有应用程序,特别是以数据为中心(Data-Centric)的应用具有的普通功能。单纯的“删除”也和新建、保存、编辑、查找等功能一样,集成在Lotus Notes客户端中,简单到不需要编程,只要和在Windows下删除文件一样按Delete键再加F9刷新即可。但是这样方便的前提是用户有权限删除这些目标文档。而在Lotus Notes特殊的数据库设计中,一个数据库的删除文档的权限是一个不可分的单元,而不像关系型数据库那样可以细分到每个表。而且,Lotus Notes中安全性被设计成基础的特性,每一段运行的程序都有一个账户身份,这个身份具备特定的权限,该程序执行的操作被限定在权限范围内。由于Lotus Notes客户端应用程序的代码都是以客户端当前所属的用户身份在客户端上运行,而绝大部分的应用程序都不可能把整个数据库的删除文档的权限赋予每一个用户,所以Lotus Notes客户端集成的删除文档功能对大部分用户都是不可用的。
常见方案
但是删除功能很多时候又是必不可少的,所以程序员就必须绕过上述限制来实现。一般采用的是“假删除”的方法,即对要删除的文档加上某个标记,使其不符合视图的选择条件,从而“消失”。比如,在一个操作中添加如下公式:
@SetField(“DeleteFlag”