Domino 数据库和模板 的相关问题
看来这个问题还是系统地说一说比较好。
我先胡诌一下子,反正不对的话可以由其他人补充的。
为什么要有模板?
Notes数据库是个文档型数据库,集成了包含设计、权限、数据、索引等各类信息。
那么如何开发数据库,应用到现有数据,并且可以对其进行升级维护呢?直接修改设计,不仅因为测试不及时不能保证质量,还会影响到正常数据库的使用。
因此,如果有个数据库,可以作为模板,将修改好的设计刷新到目前正在使用的数据库中,既可以事先测试保证质量,又可以不断地增加功能,满足日益变化的需求,这样才算是理想的解决方案。
数据库和模板有什么差别呢?
其实很简单,在数据库属性对话框中(可以通过“文件->数据库->属性”菜单打开)中,单击第四个标签(设计标签),可以看到“数据库文件是主模板”,以及后面的“模板名称”这两栏,只要你勾上后填写了模板名称,它就是个模板了。
为什么很多地方都在说NTF呢?NTF是不是也是模板?
我们打开domino\data目录,可以看到数据库文件名的后缀主要有.nsf和.ntf两种,主要是为了直观地让大家在操作系统中区分,.nsf后缀的文件是数据库,.ntf后缀的文件是模板。
(注:有点像穿了军装的就是军人,不穿的就是群众一样)
但是真正的模板,哪怕后缀名是.nsf,只要在数据库属性框中填上了“模板名称”才算有效。
(其实要拿得出军人证的才真正是军人,不管你穿没穿军装。)
不过把文件后缀名改成了.ntf,还是有用处。如果你把该文件名放在domino\data目录下后,你新建数据库时,可以在“指定新数据库的模板”选择了服务器,就可以发现你的这个模板显示在列表中了。
一定要满足这两个条件:1)文件后缀名是.ntf;2)文件必须放在domino\data目录下,放在notes\data下就显示在local下,但是放在任何一个子目录下都不行。
注意这个时候,其实你没有在数据库属性框中填上“模板名称”,也是有效的。
(这就像穿了军装,很多地方就当你军人了,比如需要军人见义勇为的时候,不管你有没有军人证。)
还有其他用到模板列表的地方,比如“文件->数据库->替换设计”,也是一样。
小贴士:
反过来,你如果文件名是.nsf的话,并且在数据库属性框的设计标签中勾上“显示在打开数据库对话框”中,你就可以通过“文件->数据库->打开”列表中找到这个数据库了,改成.ntf等就不行。
(老百姓也有老百姓的好处呀,呵呵。)
怎么从模板中刷新设计呢?
还是回到那些真正的模板上,你在数据库属性框中填上了模板名称,你就可以方便地对数据库进行更新。
注意:模板名称在一个domino\data目录下的所有子目录下必须、必须唯一,否则有可能会出现异常效果!
如果你希望从模板中更新设计,那么同样在数据库属性框的这个设计标签上,你要在“从主模板继承设计”选项上打勾并且填写“模板名称”。
这个时候你要更新设计的话,你可以手工从“文件->数据库->刷新设计”菜单中,对某个数据库进行刷新了。
Domino也好,Notes也好,都能从自己的data目录包括其任何一级子目录下,找到模板名称一样的模板,将数据库的设计对照模板中的设计一一进行更新;当然如果设计一致,就不用更新了。(思考:更新依据是什么?是不是不管怎样都换一遍?)
另外,服务器上还有个凌晨执行的任务——Design,你们可以在notes.ini文件中找到:
ServerTasksAt1=Catalog,Design
运行了这个任务,服务器会在凌晨1点钟将所有填写了“从主模板继承设计”的模板名称的数据库做一遍刷新设计。当然如果找不到,它也会提示无法定位模板xxx。
从上面可以知道,数据库模板名称重要性了。
是不是可以对表单定义一些和其他数据库不同的设计模板?
除了数据库中可以定义模板名称外,还可以对每一个设计元素进行不同的模板名称定义。
比如我们可以切换到表单设计视图下,用“设计->设计属性”菜单打开设计属性对话框,同样是第3个设计标签中,可以看到“继承的设计模板”一栏,填写我们希望从中刷新设计的模板名称,就可以刷新设计了。
有什么用处呢?比如我们设计了许多不同的流程数据库,但是其中都要选择办理人,我们可以设计一个通用的人员选择框,这个选择框可以专门从一个公用资源库中继承设计。
是不是可以设置某些设计元素不刷新?
或者,
为什么有的时候明明改好了设计,也做过刷新设计,为什么还是以前的界面或功能?甚至还是以前的错误呢?
那就是设计属性中的下一个栏目:“刷新/替换设计时不允许修改”。
如果我想自己做一个测试的属性,或者在Domino系统模板里面增加一些属性,又不希望被它自己的模板给替换掉,我们可以把这个选项打上勾。
那么随之也会带来一个问题,在已经设置“从主模板继承设计”了以后,你每创建一个数据库,都有可能被打上勾,导致数据库中有很多无法被替换的设计元素。
所以记得养成修改设计模板,测试完再更新最终数据库的良好习惯。虽然可能调试起来会麻烦一点,但是安全、保险,不容易出错,也容易对大型项目做版本控制和质量管理。