Domino -宝典(一)

Domino -宝典(一)

1 【需掌握】编写代码:有一个数组,10个数值,整形的,按照冒泡程序将他们从小到大排列

http://r853.test.com/mianshiti/mianshiti.nsf/bubbleSort?OpenAgent

Option Public

Option Declare

Sub Initialize

Dim vArray(100) As Integer

Dim i As Integer

For i=0 To 99

vArray(i)= Int(100 * rnd)

Next

Call BubbleSort2(vArray)

MsgBox "-----------------------------"

For i=0 To 99

MsgBox vArray(i)

Next

End Sub

Sub BubbleSort2(vArray As Variant)

Dim tmp As Integer

Dim nLow As Integer

Dim nHigh As Integer

Dim x As Integer

Dim y As Integer

Dim i As Integer

Dim Temp As Variant

Dim bSwap As Boolean

nLow=LBound(vArray)

nHigh=UBound(vArray)

For x=nLow To nHigh -1

bSwap = False

For y=nLow To nHigh -1 -x

If vArray(y) > vArray(y+1) Then '若是递减,改为vArray(y) < vArray(y+1)

Temp=vArray(y)

vArray(y)=vArray(y+1)

vArray(y+1)=Temp

bSwap = True

End If

Next

If bSwap = False Then

Exit For

End If

Next

End Sub

package test;

class Test {

public static void main(String[] args) {

Date[] days = new Date[5];

days[0] = new Date(2006, 5, 4);

days[1] = new Date(2006, 7, 4);

days[2] = new Date(2008, 5, 4);

days[3] = new Date(2004, 5, 9);

days[4] = new Date(2004, 5, 4);

bubbleSort(days);

for(int i=0; i<days.length; i++) {

System.out.println(days[i]);

}

}

public static Date[] bubbleSort(Date[] a){

int len = a.length;

for(int i = len-1;i>=1;i--){

for(int j = 0;j<=i-1;j++){

if(a[j].compare(a[j+1]) > 0){

Date temp = a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

return a;

}

}

class Date {

int year, month, day;

Date(int y, int m, int d) {

year = y; month = m; day = d;

}

public int compare(Date date) {

return year > date.year ? 1

: year < date.year ? -1

: month > date.month ? 1

: month < date.month ? -1

: day > date.day ? 1

: day < date.day ? -1 : 0;

}

public String toString() {

return "Year:Month:Day -- " + year + "-" + month + "-" + day;

}

}

2 【未验证】写个代理来删除视图中所有的过期文档

你做一个视图。这个视图的选择条件就是选择所有过期的文档。。
然后你在代理里面这样写就可以了
set view = db.getview("(存放过期文档的视图)")
set doc = view.getfirstdocument
while not(doc is nothing)
call doc.remove(true)
set doc = view.getnextdocument
wend

3 【需掌握】编写代理删除当前库的所有过期文档:

发布日期域:A ;
有效期域:B (天数)

http://r853.test.com/mianshiti/mianshiti.nsf/frmDelOutOfTheTime?OpenForm

http://r853.test.com/mianshiti/mianshiti.nsf/DelOutOfTheTime?OpenAgent

http://r853.test.com/2.nsf/a?OpenAgent

准备数据:

建立form

添加域

添加提交按钮

document.forms[0].submit();

Option Public

Option Declare

Sub Initialize

Dim session As NotesSession

Dim note As NotesDocument

Dim dbCurrent As NotesDatabase '当前数据库

Dim nmCurUser As NotesName '当前用户

Dim doc As NotesDocument

'引用tempdoc的原因:

'doc.Remove( True ),有可能产生错误,信息为"Function requires a valid ADT argument"

'当把doc删除了后,doc对象就会自动置为null了。所以就不能指向下一个文档。

'所以解决办法是可以设置一个中间变量,记录当前文档。然后操作下一个文档,再删除当前文档。

Dim tempdoc As NotesDocument

Dim dc As NotesDocumentCollection

Dim searchFormula As String

MessageBox "---------------------------------"

Set session = New NotesSession

Set note = session.documentcontext

Set dbCurrent = note.parentdatabase

'@Adjust(@Date(@Now);0;0;-7;0;0;0)<@TextToTime(@Left(SysFinishDateLK;10),

searchFormula = {Form = "frmDelOutOfTheTime" & @Adjust(faburiqi;0;0;youxiaoqi;0;0;0)<@Date(@Now)}

Set dc = dbCurrent.Search(searchFormula, Nothing, 0)

Set doc = dc.GetFirstDocument()

While Not(doc Is Nothing)

MessageBox doc.GetItemValue( "faburiqi" )(0)

Set tempdoc = doc

Set doc = dc.GetNextDocument(doc)

tempdoc.Remove( True )

Wend

End Sub

4 【需掌握】@DbColumn

Returns a column of values from a view or folder in a Domino database.

Syntax

@DbColumn( class : cache ; server : database ; view ; columnNumber )

@DbColumn("";"":"2.nsf";"listall";1)

@DbColumn("":"NoCache"; "" : "2.nsf" ; "listall"; 1 )

例子

database := appPath+"/zsj.nsf";

@DbColumn("";"":database;"vwCostTypeGroup";1)

REM {应用路径};

dbDirPath := @Left(dbPath ; "/");

REM {模版管理路径};

dbmbgl :=dbDirPath + "/mbgl.nsf";

REM {服务器};

server :=@Subset(@DbName;1);

REM {使用的流程定义数据库};

dbFlowdefPath := @DbLookup("": "nocache" ; server : dbmbgl ; "vwDbByTitle"; dbpath; "fldflowdbpath" );

REM {==本部门所有流程定义文档===};

entryList := @DbColumn("":"NoCache"; server : dbFlowdefPath ; "vwcyy"; 1 );

@If(@IsText(entryList);entryList;"")

tmp := @DbColumn("":"";"":"indishare/office.nsf";"(vwCurEditor)";1);

curEditor := @If(@IsError(tmp);"";@Text(@Subset(tmp;1)));

"indishare/editor" + @If(curEditor="0";"";curEditor) + ".nsf"

@DbColumn("";"";"vwgwlx";1)

temp:=@DbColumn("": "NoCache"; @Subset(@DbName;1):"indishare/gwpz.nsf" ; "vwgwpzb_sw"; 2);

otherDep:=@If(@IsError(temp);"";temp);

@Unique(@Trim(otherDep))

REM{取出发文代字或发文类型};

entryList:=@If(fldflag="fwdz";@Unique(@DbColumn("":"NoCache";"":"";"vwMark";2));@Unique(@DbColumn("":"NoCache";"":"";"vwRedHeader";2)));

@If(@IsText(entryList);entryList;"")

@Elements(@DbColumn("";"";"vwgwlx";4)) < 2 | !@Contains(@LowerCase(viewname);"vwdocby":"vwpubliced")

strUnid := @Text(@Subset(@DbColumn("";"";"vwgwlx";4);1));

strViewName:=@Subset(@Subset(fldViewName;@Member(condition;ConditionIndex));-1);

strViewColumn:=@Subset(@Subset(fldViewColumn;@Member(condition;ConditionIndex));-1);

@If(strViewName="N";"";@If(strViewColumn="N";"";@Unique(@DbColumn( class : cache ; server : database ; strViewName ; @TextToNumber(strViewColumn) ))))

dbcfg :=appPath+"/zsj.nsf";

no := @IfError(@DbColumn("":"nocache";"":dbcfg;"vwProfitCenter"; 1); @DbColumn("":"nocache";"":dbcfg;"vwProfitCenter"; 1));

name := @IfError(@DbColumn("":"nocache";"":dbcfg;"vwProfitCenter"; 2); @DbColumn("":"nocache";"":dbcfg;"vwProfitCenter"; 2));

abbr := @IfError(@DbColumn("":"nocache";"":dbcfg;"vwProfitCenter"; 3); @DbColumn("":"nocache";"":dbcfg;"vwProfitCenter"; 3));

name

num:=@UrlQueryString("restricttocategory");

num:=@If(@IsError(@TextToNumber(num));1;@TextToNumber(num));

numSubjectCount:=@Elements(@DbColumn("";"";"vwCate";1));

@If(numSubjectCount!=0;num;"")

5 【需掌握】@dblookup

创建表单

创建视图

必须有一个排序字段

administrator中观察下

Given a key value, looks in the specified view (or folder) and finds all documents containing the key value in the first sorted column within the view. For each selected document, @DbLookup returns either the contents of a specified column in the view, or the contents of a specified field.

Syntax

@DbLookup( class : cache ; server : database ; view ; key ; fieldName ; keywords ) or
@DbLookup( class : cache ; server : database ; view ; key ; columnNumber ; keywords)

@DbLookup( "" : "NoCache" ; "" : "2.nsf" ; "listall" ; "abc" ; "faburiqi" )

@DbLookup(class : "NoCache" ; "" : "2.nsf" ; "listall" ; "ggg" ; "faburiqi" )

username:=@Name([Abbreviate];@UserName);

appname:=@DbLookup( class : "NoCache" ; "" : "indishare/indinames.nsf" ; "vmUserApp" ; username ; "appname" );

@If(@IsError(appname);"Error";appname+"/")

username:=@Name([Abbreviate];@UserName);

appname:=@DbLookup( class : "NoCache" ; "" : "indishare/indinames.nsf" ; "vmUserApp" ; username ; "appname" );

appmanager:=@If(@IsError(appname);@Author;"#Admin_"+appname);

@If(@IsError(appname);"LocalDomainServers":@Author;"LocalDomainServers":appmanager)

dbcfg :="indishare/gwpz.nsf";

server :=@Subset(@DbName;1);

dblist := @DbLookup("": "nocache" ; server : dbcfg ; "vwGwpz_APP_Cat2";appName+"^文档一体化";"fldSjkwjm");

@If(@IsText(dblist);dblist;"")

server :=@Subset(@DbName;1);

dblist :=@DbColumn("":"nocache";"";"vwFlowDefDb";3);

flowmbgl:=@If(@IsText(dblist);dblist;"");

dbcfg :="indishare/gwpz.nsf";

dblist := @DbLookup("": "nocache" ; server : dbcfg ; "vwGwpz_APP_Cat2";appName+"^流程定义";"fldSjkwjm");

flowgwpz:=@If(@IsText(dblist);dblist;"");

@Unique(flowmbgl:flowgwpz)

tmp:=@DbLookup("":"nocache";"":"";"vwTempletReg";fldTempName;4);

@If(@IsError(tmp);"";@Subset(tmp;1))

username:=@Name([Abbreviate];@UserName);

appname:=@DbLookup( class : "NoCache" ; "" : "indishare/indinames.nsf" ; "vmUserApp" ; username ; "appname" );

@If(@IsError(appname);"Error";appname+"/")

username:=@Name([Abbreviate];@UserName);

appname:=@DbLookup( class : "NoCache" ; "" : "indishare/indinames.nsf" ; "vmUserApp" ; username ; "appname" );

appmanager:=@If(@IsError(appname);@Author;"#Admin_"+appname);

@If(@IsError(appname);"LocalDomainServers":@Author;"LocalDomainServers":appmanager)

dbcfg :="indishare/gwpz.nsf";

server :=@Subset(@DbName;1);

dblist := @DbLookup("": "nocache" ; server : dbcfg ; "vwGwpz_APP_Cat2";appName+"^文档一体化";"fldSjkwjm");

@If(@IsText(dblist);dblist;"")

itemNum:=@UrlQueryString("selectitem");

itemFullPath:=@If(@IsError(@TextToNumber(itemNum));"";

@DbLookup("";"";"vwCateByBh";@TextToNumber(itemNum);"numSubjectFullPath";[FailSilent] )

);

strFullPath:="";

@For(i:=1;i<=@Elements(itemFullPath);i:=i+1;

@If(strFullPath="";strFullPath:=@Text(itemFullPath[i]);

strFullPath:=strFullPath+","+@Text(itemFullPath[i]))

);

@If(strFullPath="";"";"&selectitem="+strFullPath)

strPort := @DbLookup("";"":"indishare/appmap.nsf";"VwAppByName";appName;"fldAppHttpport";[FailSilent]);

strHost := @DbLookup("";"":"indishare/appmap.nsf";"VwAppByName";appName;"fldAppServerHost";[FailSilent]);

strDns := @If(strPort = ""|strPort = "80";strHost;strHost+":"+strPort);

ishttps :=@DbLookup("";"":"indishare/appmap.nsf";"VwHostByServer";@Name([Canonicalize];@DbName);"fldHttps";[FailSilent]);

@If(ishttps = "1"; "https://"+strDns;"http://"+strDns)

REM {应用路径};

dbDirPath := @Left(dbPath ; "/");

REM {模版管理路径};

dbmbgl :=dbDirPath + "/mbgl.nsf";

REM {服务器};

server :=@Subset(@DbName;1);

REM {使用的流程定义数据库};

dbFlowdefPath := @DbLookup("": "nocache" ; server : dbmbgl ; "vwDbByTitle"; dbpath; "fldflowdbpath" );

REM {==本部门所有流程定义文档===};

entryList := @DbColumn("":"NoCache"; server : dbFlowdefPath ; "vwcyy"; 1 );

@If(@IsText(entryList);entryList;"")

REM {模版管理路径};

dbmbgl :=appName + "/mbgl.nsf";

REM {服务器};

server :=@Subset(@DbName;1);

REM {使用的流程定义数据库};

dbFlowdefPath := @DbLookup("": "nocache" ; server : dbmbgl ; "vwDbByTitle"; dbpath; "fldflowdbpath" );

REM {==本部门所有流程定义文档===};

entrylist:=@DbLookup("":"NoCache";server:dbFlowdefPath;"vwBySingleDBWithFilePath";dbpath;2);

@If(@IsText(entryList);entryList;"")

msg:= @DbLookup("":"NoCache";"":"indishare/oaconfig.nsf";"vwconfigforcoding";"ifAddErrorInfoButton";2);

@If(msg="1";0;1)|ifShowHelpButton="0"

6 【需掌握】服务器常用命令:

Load compact -d

删除所有的视图索引

Load compact xxx/yyy.nsf –d

删除指定数据库的视图索引

删除索引

Load updall xxx\yyy.nsf -t vwtest

更新数据库中的指定视图

创建索引

load updall -?

updall帮助

Load http

加载web服务

Tell HTTP Quit

关闭 Web Server 任务。

Tell HTTP Restart

更改设置来刷新 Web 服务器

Exit

关闭服务器

Help

显示服务器命令列表

Restart server

禁用当前服务器,然后在短暂延迟后重新启动服务器。

Set Secure abracadabra

ü 若当前没有有效口令,请设置口令保护控制台

ü 如果控制台已经受口令(这里为“abracadabra”)保护,请再次输入带有此口令的 Set Secure 命令,来清除该口令

Set Secure abracadabra sesame

将现有口令“abracadabra”更改为“sesame”。

trace 127.0.0.1

trace r853.test.com

trace Test/R853

使用 Trace 命令测试与服务器的连接。此命令显示每个服务器跳段的详细信息,并且有助于解决网络连接的疑难问题。

Show Allports

显示服务器上的所有启用或禁用端口的配置。

Show Server

仅显示核心服务器状态信息

Show Disk

显示全部服务器驱动器的磁盘释放统计信息

Show Memory

显示此数据库的内存统计信息

以下为参考:

Broadcast message 向该服务器的用户广播消息
Broadcast message usernames 向该服务器的某一用户广播消息
Dbcache Flush 关闭当前在数据库高速缓存中打开的所有数据库。使用此命令可以在高速缓存中维护数据库,例如:备份或恢复数据库。
Drop username 关闭一个或多个服务器会话。如果希望亲眼确认哪些会话已被关闭,则必须在服务器的 NOTES.INI 文件中输入
Log_Sessions=1 的设置。
Drop "username" 关闭在指定用户名下运行的当前会话
Drop " username1 " " username2 " 关闭在用户username1和username2下运行的会话
Drop All 关闭所有服务器会话
Exit 关闭服务器,注:不能用远程控制台重起服务器
Hangup portname 挂断指定端口
Help 显示服务器命令列表,并附有每个命令的简短描述、参数(如果有的话)和正确的语法。
Load 启动服务器外接程序
Load Fixup 加载并运行 Fixup 服务器任务
Load Object Info OBJECT.NSF 加载并运行共享邮件管理者,并传递执行 Info 任所需的参数
Load http 加载web服务
Load decs 加载外部数据连接服务
Load calconn 加载日历管理器
Load event 加载事件管理器
Load sched 加载日程安排管理器
Load stats 加载统计信息收集管理器
Load maps 加载路由表(路由拓扑结构)管理器
Load Router 加载邮件路由管理器
Load Replica 加载复制管理器
Load Update 加载更新管理器
Load Amgr 加载代理管理器
Load AdminP 加载管理进程
Pull servername 强制与指定服务器进行单向仅拉入复制。
Pull servername databasename 强制从指定服务器单向仅拉入复制指定的数据库文件。
Push servername 强制与指定服务器进行单向仅推出复制。
Push servername databasename 强制将指定的数据库文件单向仅推出复制到指定服务器。
Replicate 初始化与指定服务器之间的双向复制强制在两个服务器之间进行复制。发起复制的服务器(也就是当前正在使用的服务器)首先将其他服务器上的更改拉入进来,然 后让将它的更改推出到其他服务器。使用该命令可以快速传递数据库的更新,或者解决复制或通讯疑难问题。
Replicate servername 在本地服务器和指定服务器之间发起复制。服务器控制台显示指明复制进行的起始时间的信息。
Replicate servername databasename 在本地服务器和指定服务器之间发起,指定数据库文件的复制。
Restart server 禁用当前服务器,然后在短暂延迟后重新启动服务器。
Restart Port portname 禁用指定端口上的事务(或消息)然后在短暂延迟后重新启动端口。此命令使您不用停止 Domino 服务器就可以停止并启动端口。
Route servername 使用特定服务器发起邮件路由。初始化与指定服务器的待发邮件的未安排邮件传送。
Set Configuration setting 在 NOTES.INI 文件中增加或更改设置。

Set Secure currentpassword 口令保护Domino服务器控制台如果不输入口令,则无法使用 Load、Tell、Exit、Quit 和 Set Configuration 服务器命令,也无法使用那些不是通过“Domino 目录”中的“程序”文档或 NOTES.INI 文件来自动运行的程序。除非使用相同口令再次输入 Set Secure 命令来清除口令,否则控制台的安全性将保持有效。

Set Secure abracadabra 若当前没有有效口令,请设置口令保护控制台。在本例中新口令为“abracadabra”。如果控制台已经受口令(这里为“abracadabra”)保护,请再次输入带有此口令的 Set Secure 命令,来清除该口令。

Set Secure abracadabra sesame 将现有口令“abracadabra”更改为“sesame”。
Set Statistics statisticname 重设累计的统计信息。Statisticname 是命名待重设的统计信息所需参数。此参数不能使用通配符 (*)。
Show Cluster 本地服务器的群集名称缓存区,它包括一个所有群集成员及其状态的列表
Show Config 显示Notes.ini文件中参数设置的值
Show Database 显示指定数据库的文档和视图信息
Show Directory 在Notes目录中显示每个数据库的信息
Show Disk 显示全部服务器驱动器的磁盘释放统计信息
Show Memory 显示此数据库的内存统计信息
Show Performance 触发性能统计信息的一分钟显示
Show Allports 显示服务器上的所有启用或禁用端口的配置。
Show Port 显示指定端口的信息
Show Schedule 显示安排但未执行的命令
Show Server 仅显示核心服务器状态信息
Show Tasks 显示运行在服务器上的所有任务的状态信息
Show UserS 显示所有活动会话的使用信息
Stop Port Portname 禁用端口禁用指定端口的事务(或消息)。此命令允许更改端口,而且不用停止 Domino server 就可以立即生效。
Stop Port TCP 禁用名为 TCP 的端口。
Start Port portname 启用指定端口的事务(或消息)。
Start Port TCP 启用名为 TCP 的端口
Tell serverprogram 将命令串发送给任务。
Tell Router Quit 只关闭 Router 任务。服务器上其他所有任务继续运行。
Tell Adminp Process All 处理所有新的和更改过的立即、时间间隔、每天和延迟的请求。该命令并不重设计时请求的执行时间。
Tell Adminp Process Daily 处理下列请求:所有新的和更改过的每日请求,以更新“Domino 目录”中的“个人”文档。 任何突出的Rename Person in Unread List 请求。
Tell Adminp Process Delayed 处理所有新的和修改过的延迟请求。这些请求通常依照“服务器”文档中的“开始执行日期”和“开始执行时间”设置运行。
Tell Adminp Process Interval 处理所有立即请求,以及所有依照“服务器”文档中的“时间间隔”设置执行的请求。
Tell Adminp Process New 处理所有新请求。
Tell Adminp Process People 处理所有新的和修改过的请求,以更新“Domino 目录”中的“个人”文档。
Tell Adminp Process Time 处理所有新的和修改过的请求来删除未链接的邮件文件。
Tell Adminp Show Databases 显示(并在服务器的日志文件中记录)下列信息:特定的管理服务器更新的数据库。 在所更新数据库中更新了“读者”和“作者”域的位置。没有为其指定管理服务器的数据库。
Tell Adminp Quit 关闭服务器的 Administration Process。
Tell Amgr Pause 暂停代理的日程安排。
Tell Amgr Resume 继续代理的日程安排。
Tell Amgr Schedule 显示预定在当天运行所有代理的时间安排表。此外,该命令也显示代理触发类型、代理预定的运行时间、代理名称和代理运行于其上的数据
库名称。检查 Agent Manager 的日程安排表可查到代理是否在 Agent Manager 队列中等候。
Agent Manger 队列:
E = 能够运行的代理 S = 预设运行的代理 V = 等待事件发生的事件触发代理
触发类型:
S = 预设运行的代理 M = 新邮件触发代理 U = 新建 / 更新文档触发代理
Tell Amgr Status 快速显示 Agent Manager 队列并且在“服务器”文档中显示“代理管理器”的设置。
Tell Amgr Quit 关闭服务器的 Agent Manager。
Tell Clrepl Log 立即在服务器日志 (LOG.NSF) 中记录信息,而不是等待下一个日志时间间隔。
Tell Clrepl Quit 关闭服务器上 Cluster Replicator 的所有实例。为了防止 Clrepl 任务在以后的会话中运行,那么请删除NOTES.INI 文件的 ServerTasks 设置中所有 Clrepl 任务实例。禁用服务器的 Clrepl 任务只能防止此服务器到其他服务器的复制,而不防止其他群集服务器向此服务器进行复制。
Tell NNTP Newgroup groupname 新建一个新闻组,使用此命令创建在新闻事务期间没被自动创建的新闻组。
Tell NNTP Newgroup Delete group_name(s) 删除指定新闻组。
Tell NNTP Newgroup groupname pathname 提醒 NNTP 将带有指定群组名和路径名的群组添加到它的当前高速缓存列表。通过模板创建群组时使用此命令。
Tell NNTP print cache list 打印当前 NNTP 讨论群组和相应 Notes 数据库的列表。
Tell NNTP Print config 打印当前 NNTP 配置变量和他们的值的列表。
Tell NNTP Quit 终止 NNTP 任务。
Tell NNTP Reset servername 重新设置新闻事务,以便此服务器的下次输入或输出可以象首次输入或输出一样对文章进行推出或拉入。
Tell NNTP Show Config 显示 NNTP 服务器配置设置,此设置在“服务器”文档的 NNTP 区段中进行指定。
Tell NNTP Show Groups 显示服务器的新闻组的名称和路径。
Tell LDAP reloadschema 更新 LDAP 服务器上的目录模式以反映由定制“Domino 目录”而引起的更改。
Tell LDAP exportschema 建立或更新 Domino LDAP Schema 数据库。
Tell Router Delivery Stats 显示 Router 邮递的统计信息。
Tell Router Compact 压缩 MAIL.BOX 并清理开放的 Router 队列。
Tell Router Show Queues 显示发向指定服务器的传送队列中的邮件。
Tell Router Exit 终止服务器上的 Router 任务。
Tell Router Use databasename 创建指定的共享邮件数据库,并将 NOTES.INI 的 Shared_Mail 的值设置为 2,这样
就能为了将邮件传送和邮递到该服务器而启用共享邮件数据库。
Tell Router Quit 关闭服务器的 Router 任务。
Tell Sched Stats 显示空闲时间数据库中预定和约会的总数。
Tell Sched Show username 在服务器控制台上显示指定用户的时间安排。使用此命令来调查空闲时间数据库中存在的问题。
Tell Sched Validate 立即校验服务器上的空闲时间数据库。
Tell Sched Validate username 校验指定用户的信息。
Tell Sched Quit 关闭服务器上的 Schedule Manager 任务。
Tell Collector Collect 在所有指定服务器上运行统计信息收集,并生成统计信息报告。
Tell Collector Quit 关闭服务器的 Collect 任务。
Tell Web Help 列出所有的 Web Navigator 服务器控制台命令。
Tell Web Refresh 刷新所有的 Web Navigator 的全局设置。如果在运行 Web 服务器任务时编辑了“管理”文档,就需要使用这个命令。
Tell Web Quit 停止所有运行 Web Navigator 的复本。
Tell HTTP Restart 更改下列各项中的设置来刷新 Web 服务器:为用作“Web 服务器”而设的“服务器”文档。“Domino 目录”中的“文件保护”、“虚拟服务器”和“URL 映射”文档。影响 HTTP 服务器任务的 NOTES.INI 文件。
HTTPD.CNF 和 BROWSER.CNF 文件。对 Java 服务器小程序或 servlet.properties 文件的更改。
Tell HTTP Show File Access 显示计算机及虚拟服务器上有关文件系统保护的信息。
Tell HTTP Show Security 显示关于 SSL 和服务器密钥集文件的信息(包括关于服务器是否启动 SSL 的信息)。如果在计算机上设置了虚拟服务器,则会显示有关虚拟服务器的 SSL 信息。
Tell HTTP Show Users 显示使用基于会话验证进行用户验证的用户名、IP 地址和会话的过期时间,基于会话的验证只使用基本验证。
Tell HTTP Show Virtual Servers 显示运行于计算机上的虚拟服务器的列表。
Tell HTTP Quit 关闭 Web Server 任务。
Trace servername 使用 Trace 命令测试与服务器的连接。此命令显示每个服务器跳段的详细信息,并且有助于解决网络连接的疑难问题。
Trace portname !!! servername 测试与服务器的连接跟踪指定的端口。

7 【参考】Compact

Compact - 基本

选项

命令行参数

描述

只压缩指定的数据库或文件夹。选择第一个选项卡来指定要压缩的数据库,在第一个面板中选择数据库。

database path
在database path后面可以指定其他的选项

为了在Domino Data文件夹中压缩数据库,首先输入文件名,比如sales.nsf。
在Domino Data路径下中压缩一个文件夹,请指定对于Data文件夹的相对路径,比如,压缩Data\Sales中的所有数据库,指定Sales。
如果你选择“压缩所有数据库”或不指定数据库路径,Compact命令会压缩在Data文件夹下的所有文件夹和数据库。

Compact - 选项

选项

命令行参数

描述

只有当未用空间大于百分之x的时候执行压缩

-S percent

压缩指定未用空间比例的数据库。例如,如果你指定这个比例是10,那么未用空间是10%或以上的数据库会被压缩。注意,未用空间的计算并不是总是可靠。

删除所有的视图索引

-D

删除建立的视图索引。在准备将数据库备份到磁带之前使用这个选项。压缩是复制方式的。

Load compact -d

保持或回复数据库到之前的格式

-R

压缩数据库但并不把它转成当前存储数据库的服务器的文件格式,或者转换成之前的文件格式。例如,在Domino6服务器上,这个选项压缩Domino 5的数据库却并不把它们转成Domino 6的文件格式,并把Domino6的数据库转成Domino 5的格式。
这个选项用复制方式的压缩。

Compact - 方式

选项

命令行参数

描述

In-place (recommended)

-b

用现场压缩方式并且回收未用空间,并不会减少文件大小,除非数据库的结构会有变化。当有结构性变化时,会引发复制方式的压缩。
这是我们推荐的压缩方式。

In-place with file size reduction

-B

用现场方式压缩,恢复未用空间并且减少文件大小,除非有会引起复制方式压缩产生的数据库结构的变化。如果你启用事务日志,请在压缩完成之后对所有数据库进行备份。

Copy-style

-c

用复制方式的压缩。用这种方式来解决数据库损坏的问题。

Copy-style: Allow access while compacting

-L

让用户能够在数据库压缩时候持续访问数据库。如果用户在压缩过程中编辑数据库,压缩将取消。当复制方式的压缩完成时候有效。

Copy-style: Ignore errors and proceed

-i

启用压缩并且忽略错误(比如文档损坏)。只适用于复制方式的压缩。

Compact - 高级
注意高级压缩选项在Domino Administrator的文件选项卡的压缩工具中并不可用。

选项*

命令行参数

描述

Document table bitmap optimization: Off

-f

禁用数据库的“文档表格位图优化”属性。进行复制方式的压缩。

Document table bitmap optimization: On

-F

启用数据库的“文档表格位图优化”属性。进行复制方式的压缩。

Don't support specialized response hierarchy: Off

-h

禁用数据库的“不支持指定的回复层次结构”属性;换句话说,支持指定的回复层次结构。进行复制方式的压缩。

Don't support specialized response hierarchy: On

-H

启用数据库的“不支持指定的回复层次结构”属性;也就是说,不支持指定的回复层次结构。进行复制方式的压缩。

Enable transaction logging: Off

-t

禁用事务日志。

Enable transaction logging: On

-T

启用事务日志。

Don't maintain unread marks: Off

-u

禁用数据库的“不保留未读标记”属性;也就是说,保留未读标记。

Don't maintain unread marks: On

-U

启用数据库的“不保留未读标记”属性;也就是说,不保留未读标记。

注意:在你启用或禁用任何一个上面的属性之前,请选择“设置高级属性”。

8 【参考】Updall

中文解释的参考文档

http://www-900.ibm.com/cn/support/faqhtmlfaq/1997669F08000.htm

Purpose: Updates one or all database(s).

Usage: UPDALL [path] [options]...

[path]: single database to update or all databases if omitted.

[options]:

 

Load updall mail

Load updall mail\mail.nsf

 

-t "name"

Load updall xxx\yyy.nsf -t vwtest

Update single view named "viewname" only.

更新数据库中的指定视图。可以用-R去修复损坏的问题。

-c

Load updall mail\admin.nsf -c

Build unused view indexes.

重建从未访问过的视图以及全文索引。需要指定一个特定的数据库。

-v

 

Update existing and already built view indexes only.

更新视图但是不更新全文索引

-f

 

Update only full text indexes, regardless of their update frequencies.

更新全文索引但是不更新视图

-h

 

Update only full text indexes of 'immediate' or 'hourly' frequency.

     

-m or -s

 

Update only full text indexes of 'immediate', 'hourly' or 'scheduled' frequency.

-l

 

Update only full text indexes of 'immediate', 'hourly' or 'daily' or 'scheduled' frequency.

-x

 

Rebuild all full text indexes.

-r

 

Rebuild all already built view indexes.

重建所有访问过的视图。用这个选项会占用较大的资源,因此把它作为解决某个数据库损坏的最后一种选择。

-p

 

Obsolete, on by default.

-a

 

Incremental full text index update of search site databases (faster).

-b

 

Complete full text index update of search site databases (slower).

-y or -Y

 

Recurse through subfolders (-Y, default) or do not recurse (-y)

-g

 

Remove build-on-first-use collations when rebuilding views

9 【需掌握】公式的用法

文档创建时间

@Created

对于服务器上的数据库,返回当前用户的角色列表。

@UserRoles

 

@Name([key]; name)

更改用户名的格式。关键字包含 [CN] 以从一个专有名字中解析出公共名,[Abbreviate] 缩写规范格式的专有名字,[Canonicalize] 与上述作用相反,[ToKeyword] 将名字各部分按相反顺序排序,用反斜杠分开(用于分类视图)。

 

@UserName

@Name([Canonicalize];@UserName)

CN=阮玉霞/O=R853

 

@Name([Abbreviate];@UserName)

阮玉霞/R853

获取当前用户的普通名

@Name([CN];@UserName)

阮玉霞

 

@Name([O];@UserName)

R853

获得一个列表的第一个值

@Subset("aa":"bb":"cc";1)

   

获得当前数据库路径信息

@ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName;-1);" ";"+");"\\";"/")

获得当前数据库路径信息(只包括路径部分)

@Left(@ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName;-1);" ";"+");"\\";"/");"/")

   

10 【需掌握】javascript

获得一个域的值

alert(document.all.appPath.value)

alert(document.all["appPath"].value)

根据id号定位标签:跟域没关系

var ifr = document.getElementById("ifrForward");

   
   

11 【需掌握】通过公式访问关系型数据库

   

@DbColumn

@DbColumn("ODBC";"myoracle";"scott";"tiger";"emp";"sal")

 

@DbColumn("ODBC";"myoracle";"scott";"tiger";"emp";"sal||'|'||empno")

@DbLookup

@DbLookup("ODBC";"myoracle";"scott";"tiger";"emp";"ename";"job";"CLERK")

 

@DbLookup("ODBC";"myoracle";"scott";"tiger";"emp";"ename||'|'||empno";"job";"CLERK")

@DbCommand

@DbCommand("ODBC";"myoracle";"scott";"tiger";"SELECT ename from emp ")

 

@DbCommand("ODBC";"myoracle";"scott";"tiger";"SELECT ename||'|'||empno from emp ")

12 【需掌握】ls访问关系型数据库

%REM

Agent c

Created 2012-6-17 by admin/R853

Description: Comments for Agent

%END REM

UseLSX "*LSXODBC"

Option Public

Option Declare

Dim con As ODBCConnection

Dim qry As ODBCQuery

Dim result As ODBCResultSet

Dim ename As String

Dim msg As String

Dim rows As String

Sub Initialize

Set con = New ODBCConnection

Set qry = New ODBCQuery

Set result = New ODBCResultSet

Set qry.Connection = con

Set result.Query = qry

Dim dataSource As String

Dim userName As String

Dim password As String

dataSource ="myoracle"

userName ="scott"

password ="tiger"

If Not con.ConnectTo(dataSource, _

userName, password) Then

MessageBox "Could not connect to " & dataSource

End If

qry.SQL = "SELECT * FROM emp"

If Not result.Execute Then

MessageBox result.GetExtendedErrorMessage,, _

result.GetErrorMessage

Exit Sub

End If

MsgBox "---------------------------------------------"

Do

result.NextRow

ename = result.GetValue("ename", ename)

MsgBox ename

MsgBox "CurrentRow = " & result.CurrentRow

MsgBox "NumColumns = " & result.NumColumns

MsgBox "NumRows = " & result.NumRows

MsgBox "IsBeginOfData = " & result.IsBeginOfData

MsgBox "IsEndOfData = " & result.IsEndOfData

Loop Until result.IsEndOfData

'The LastRow that precedes the loop is essential; otherwise, NumRows is not correct.

result.LastRow

MsgBox "NumRows = " & result.NumRows

MsgBox "---------------------------------------------"

result.Close(DB_CLOSE)

con.Disconnect

End Sub

13 【需掌握】java代理访问关系型数据库

oracle安装程序

\\192.168.1.109\d$\安装程序\oracle

用户名:scott

密码:tiger

主机字符串:bjsxt

第三方oracle客户端:

\\192.168.1.109\d$\安装程序\plsqldev

http://r853.test.com/2.nsf/agt?OpenAgent

参考:

在 IBM Lotus Domino Designer 中使用 Java 构建应用程序

http://www.ibm.com/developerworks/cn/lotus/d-ls-javaapps/index.html

用 Lotus Domino Designer 8.5.1 创建 Java 代理

http://www.ibm.com/developerworks/cn/lotus/designer85-javaagent/

新建代理,类型选择java

默认产生的代码:

添加一句话:

System.out.println("Hello World!");

设置:目标—》无

引入jar包,选择引入—》归档

来源:D:\oracle\product\10.2.0\db_2\jdbc\lib

选择classes12.jar

另外一个设置:

现象:

解决办法:

java源码

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import lotus.domino.*;

public class JavaAgent extends AgentBase {

public void NotesMain() {

Connection conn = null;

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

conn = DriverManager.getConnection(

"jdbc:oracle:thin:@127.0.0.1:1521:BJSXT", "scott", "tiger");

} catch (ClassNotFoundException e1) {

System.out.println("驱动程序类没有找到");

e1.printStackTrace();

return;

} catch (SQLException e1) {

e1.printStackTrace();

return;

}

Statement stmt = null;

ResultSet rs = null;

try {

//Session session = getSession();

//AgentContext agentContext = session.getAgentContext();

//System.out.println("Hello World!");

stmt = conn.createStatement();

rs = stmt.executeQuery("SELECT * FROM emp");

while (rs.next()) {

System.out.println(rs.getString("empno"));

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (rs != null) {

rs.close();

rs = null;

}

if (stmt != null) {

stmt.close();

stmt = null;

}

if (conn != null) {

conn.close();

conn = null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

14 【需掌握】简单描述几种访问关系型数据库的方法

@DbColumn

@DbColumn("ODBC";"myoracle";"scott";"tiger";"emp";"sal")

@DbColumn("ODBC";"myoracle";"scott";"tiger";"emp";"sal||'|'||empno")

@DbLookup

@DbLookup("ODBC";"myoracle";"scott";"tiger";"emp";"ename";"job";"CLERK")

@DbLookup("ODBC";"myoracle";"scott";"tiger";"emp";"ename||'|'||empno";"job";"CLERK")

@DbCommand

@DbCommand("ODBC";"myoracle";"scott";"tiger";"SELECT ename from emp ")

@DbCommand("ODBC";"myoracle";"scott";"tiger";"SELECT ename||'|'||empno from emp ")

java

Connection conn = null;

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

conn = DriverManager.getConnection(

"jdbc:oracle:thin:@127.0.0.1:1521:BJSXT", "scott", "tiger");

} catch (ClassNotFoundException e1) {

System.out.println("驱动程序类没有找到");

e1.printStackTrace();

return;

} catch (SQLException e1) {

e1.printStackTrace();

return;

}

ls

UseLSX "*LSXODBC"

Dim con As ODBCConnection

Sub Initialize

Set con = New ODBCConnection

If Not con.ConnectTo("myoracle", "scott", "tiger") Then

MessageBox "Could not connect to oracle"

Exit Sub

End If

End Sub

15 【需掌握】默认域

 

作用

$$querysaveagent

表单提交时需执行的代理

$$return

表单提交完毕,需自动返回的页面

16 【需掌握】URL commands

打开视图

OpenView

打开代理

OpenAgent

打开表单

OpenForm

表单操作

CreateDocument

 

DeleteDocument

 

EditDocument

 

OpenDocument

 

SaveDocument

17 【参考】URL用法

参考文档:

http://blog.csdn.net/shellup/article/details/6257209

1

2

3

4

5

6

7

8

9

10

11

12

13

13.1 Domino URL命令语法

http://Host/DominoObject?Action&Arguments

Host:DNS或IP

DominoObject:一个domino 的结构(对象)如:视图,表单,页面,代理,文件夹,导航器等等。

Action:对指定的DominoObject进行的操作,如:OPenView,OpenDatebase,OpenForm,OpenDocument,CreateDocument,Login等等。

Arguments:操作的指定条件,如:Count=10。

13.2 语法指南

ü Domino URL不使用服务器名,而通过主机名进行辨认。

ü 打开服务器文档,在 Internet 协议的 Http 标签,可以指定 URL 命令的最大允许长度,也可以在这里设置其他限制。

ü Domino URL命令中包含如下特殊标识符:$defaultView,$defaultForm, $searchForm,$file,$icon, $help,$about,和$first。

ü DominoObject  可以是如下任何形式:针对数据库对象,使用数据库名或复制 ID(replica ID);而对于其他对象,使用对象名universal ID  或特殊标识符。如用 URL 指定一个视图,可以使用视图名,视图的 universal ID或$defaultView。

ü Notes 数据库可以通过文件名来指定,比如 leads.nsf。也可以在数据库的复制 ID(replica ID)前添加两个下划线,以.nsf 为后缀来指定,如__852562F3007ABFD6.nsf

ü 在数据库的所有副本中,Domino 对象名和 Universal ID 等效。一个名称或别名可以指向两个对象。如两个同名表单,其中一个对 Notes 用户隐藏,另一个对Web 用户隐藏。

ü Action  可以显式或隐式指定。显式方式如 ?OpenDatabase,?OpenView,?OpenForm, ?OpenDocument 和?EditDocument 等。而隐式方式为?Open,?Edit,和 ?Delete 等。如果没有指定任何操作,Domino 默认为?Open。

ü 若需要用户认证,可在任意 Domino URL 后添加Login 参数。

ü 由于 URL 不能包含空格,可用+号或16 进制值%20 来代替空格,如:
http://cyb.com/discussion.nsf/By+Author
http://cyb.com/discussion.nsf/By%20Author

ü 若名称或参数中含有不符合 URL 语法, 或和 URL 语法冲突的字符,如加号(+),斜杠(/,/),连接符(&)等,需要使用%xx(xx 是 16 进制的 ASCII 码)代替。如打开一个关键字中包含“Smith&Jones, Inc.”的文档,如下:
http://cyb.com/leads.nsf/By%20Company/Smith%26Jones,%20Inc.?OpenDocument

ü 使用&符号分隔参数,如:
http://cyb.com/leads.nsf/By+Salesperson?OpenView&ExpandView

ü 对层次名称用斜杠(/)来分隔,如在指定数据库(discussion.nsf)中,名为 Docs/By Author的视图:http://cyb.com/discussion.nsf/Docs/By+Author
在应用程序的任何部分生成自己的 URL 时,若在简单别名中使用不支持的字符,一般说来这个 URL 不可能有效。

ü  URL 命令也可以指向.nsf4 或.box 为扩展名的数据库,以及模版文件(.ntf),但是这些数据库只能在预览模式下打开。

ü 在数据库属性中,选择“Web  访问:当生产页面时使用 JavaScript” ,计算 URL 时会为按钮和热点生产点击事件。如果该选项未被选中,URL 附加按钮和热点会在页面生成的时候进行计算。如果在表单中使用可以编辑域,这个选项是很有用的。?

13.3 摘要

URL commands for opening servers, databases, and views

OpenView

Syntax

http://Host/Database/ViewName?OpenView

http://Host/Database/ViewUniversalID?OpenView

http://Host/Database/$defaultview?OpenView

Examples

http://www.mercury.com/leads.nsf/By+Salesperson?OpenView

http://www.mercury.com/leads.nsf/DDC087A8ACE170F8852562F300702264?OpenView

http://www.mercury.com/leads.nsf/$defaultview?OpenView

Optional arguments for OpenView

Append optional arguments to refine the URL. Combine any of the following arguments for the desired result except where otherwise noted.

添加可选参数改善 URL。结合以下任意参数获得期望的结果,除非特别设置其他信息。

Collapse=n

Where n is the row number to display in collapsed format in a hierarchical view. Do not combine this argument with the ExpandView or CollapseView arguments.

其中n为层次视图中折叠的行数。本参数不能和ExpandView或ColapseView同时使用。

CollapseView

Displays the view in collapsed format

折叠方式显示视图

Count=n

Where n is the number of rows to display

其中 n 为需要显示的行数

Expand=n

Where n is the row number to display in expanded format in a hierarchical view. Do not combine this argument with the ExpandView or CollapseView arguments.

其中n为层次视图中展开的行数。本参数不能和ExpandView或ColapseView同时使用。

ExpandView

Displays the view in expanded format

展开方式显示视图

RestrictToCategory=category

Sets the category for "Show Single Category" object

Where category is the category to be displayed in the view.

设置分类为“显示单一分类”对象,其中 category为在视图中被显示的分类。

Start=n

Where n is the row number to start with when displaying the view. The row number in a hierarchical view can include sub indexes (for example, Start=3.5.1 means the view will start at the third main topic, sub-topic 5, document 1).

其中 n 为视图显示时起始行数。在层次视图中,行数会包含有子索引(如 Start=3.5.1
意为第 3 个主题下面,第 5 个子标题下的第 1个文档)

StartKey=string

Where string is a key to a document in the view. The view displays at that document.

其中 string 为视图中某个文档的关键字。视图从该文档开始显示。

Examples

http://www.mercury.com/leads.nsf/DDC087A8ACE170F8852562F30070226400000196?OpenView&CollapseView

http://www.mercury.com/leads.nsf/DDC087A8ACE170F8852562F30070226400000196?OpenView&ExpandView

http://www.mercury.com/leads.nsf/By+Category?OpenView&RestrictToCategory=pricing

http://www.mercury.com/leads.nsf/DDC087A8ACE170F8852562F30070226400000196?OpenView&Start=3&Count=15

http://www.mercury.com/leads.nsf/DDC087A8ACE170F8852562F30070226400000196?OpenView&StartKey=F

URL commands for opening framesets

 

URL commands for opening agents, forms, and navigators

OpenAgent

Syntax

http://Host/Database/AgentName?OpenAgent

Examples

http://www.mercury.com/sales/leads.nsf/Process+New+Leads?OpenAgent

Note Agents may only be referred to by name. The use of UNID is not supported when referring to an agent.

OpenForm

Syntax

http://Host/Database/FormName?OpenForm

http://Host/Database/FormUniversalID?OpenForm

http://Host/Database/$defaultform?OpenForm

Examples

http://www.mercury.com/products.nsf/Product?OpenForm

http://www.mercury.com/products.nsf/625E6111C597A11B852563DD00724CC2?OpenForm

http://www.mercury.com/products.nsf/$defaultform?OpenForm

使用 ReadForm命令打开表单时,所有可编辑域都不被显示。当需要以简单页面方式显示一个表单时非常有用。

Use the ReadForm command to display a form without showing its editable fields. ReadForm is useful for displaying a form as a simple Web page.

Syntax

http://Host/Database/FormName?ReadForm

http://Host/Database/FormUniversalID?ReadForm

http://Host/Database/$defaultform?ReadForm

Examples

http://www.mercury.com/home.nsf/Welcome?ReadForm

http://www.mercury.com/products.nsf/625E6111C597A11B852563DD00724CC2?ReadForm

http://www.mercury.com/products.nsf/$defaultform?ReadForm

URL commands for creating, deleting, editing, opening, and saving documents

CreateDocument

The CreateDocument command is used as the POST action of an HTML form. When the user submits a form, Domino obtains the data entered in the form and creates a document.

HTML 表单以 POST 方式提交时使用 CreateDocument 命令。当用户提交一个表单时, Domino获得表单中输入的数据并创建一个文档.

Syntax

http://Host/Database/Form?CreateDocument

http://Host/Database/FormName?CreateDocument

Where:

FormName is the name of the form being accessed.

Examples

http://www.mercury.com/products.nsf/b9815a87b36a85d9852563df004a9533?CreateDocument

http://www.mercury.com/products.nsf/basketballs?CreateDocument

DeleteDocument

Syntax

http://Host/Database/View/Document?DeleteDocument

Example

http://www.mercury.com/products.nsf/By+Part+Number/PC156?DeleteDocument

EditDocument

Syntax

http://Host/Database/View/Document?EditDocument

Example

http://www.mercury.com/products.nsf/By+Part+Number/PC156?EditDocument

Note Rich text fields containing hidden text will be visible to Web users with Editor access to documents.

Note The following items may be lost or corrupted if they are in a rich text field which is edited with a Web browser using Domino Web Server:

  • embedded images -- may be visible when editing, but will be lost when the document is saved;
  • tab tables -- only the visible row will be saved;
  • "hide when" paragraphs which are hidden from the Web -- the entire paragraph will be lost when the document is saved.

Avoid using these items in a rich text field if that field is to be edited with a Web browser.

OpenDocument

Syntax

http://Host/Database/View/Document?OpenDocument

Where:

Document is any of the following:

  • DocumentKey -- the contents of the first sorted column in the specified view.
  • DocumentUniversalID

$first

The first document in the view.

Examples

http://www.mercury.com/products.nsf/By+Part+Number/PC156?OpenDocument

http://www.mercury.com/leads.nsf/By+Rep/35AE8FBFA573336A852563D100741784?OpenDocument

SaveDocument

The SaveDocument command is used as the POST action of a document being edited. Domino updates the document with the new data entered in the form.

正在编辑的文档以 POST 方式提交时使用 SaveDocument 命令。Domino 根据表单录入的新数据更新文档内容。

Syntax

http://Host/Database/View/Document?SaveDocument

Example

http://www.mercury.com/products.nsf/a0cefa69d38ad9ed8525631b006582d0/4c95c7c6700160e2852563df0078cfeb?SaveDocument

URL commands for opening documents by key

 

URL commands for opening pages

URL commands for opening attachments, image files, and OLE objects

URL commands for searching for text

Using Next and Previous buttons or hotspots with Start and Count parameters

URL commands for required authentication

URL commands for processing SSL certificates

 
   
   

18 【需掌握】作者域、读者域分别是什么含义,如何使用

frmTestReader

http://r853.test.com/2.nsf/frmTestReader?OpenForm

vwTestReader

http://r853.test.com/2.nsf/vwTestReader?OpenView

设置default为作者,并且可创建文档

表单属性有个 打开时自动启用编辑模式的选项,这个是勾选的,正常情况下,打开文档时,自动转到编辑模式(当然是有权限的情况下)

阮玉霞登录:

访问列表:http://r853.test.com/2.nsf/listall?OpenView

只有这样才是作者域

只有这样才是读者域

编辑者

创建文档

编辑所有文档(包括他人创建的文档)

读取所有文档,除非在表单中有“读者”域(如果不能读取文档,则不能编辑它)

 

作者

创建文档

编辑其中有“作者”域且在该域中指定了此用户的文档。

读取所有的文档,除非表单中存在“读者”域。

 
   

读者权限

除非表单中有“读者”域,否则“读者”访问级别允许读取所有文档。如果表单中有“读者”域,则只有当您的姓名列在此域中时,才可以阅读文档。

 

读者域是唯一能确定谁可以读取此文档的域,不管什么权限只要不在读者域中就无权读取此文档.(一个文档中可以有多个读者域)

读者域是一个域类型为读者类型的域,它是用来控制文档的读者的。读者域能控制到ACL的任何权限,即使它是管理者。也就是说,只要读者域里没有他,即使他是管理者也不能看到该文档。编程方法同作者域。

如果希望限定对由某个表单所创建的特定文档的存取,则在表单中添加一个“读者”域。“读者”域清楚地列出了可以阅读由此表单所创建的文档的用户。例如:如果限制某个员工的人事档案只有“人力资源”部门的成员、员工本人以及员工的经理可以存取,则可将这些人员列在“读者”域中。对文档不具有“读者”权限的用户则不能在视图中查看文档。

To limit access to specific documents created from a form, include a Readers field on the form. A Readers field explicitly lists the users who can read documents created from the form. Without Reader access to a document, a user cannot see the document in a view. For example, to limit access to an employee's personnel file to members of the Human Resources department, the employee, and the employee's manager, list those people in a Readers field.

如果表单中有存取列表,那么“读者”域中的姓名将被添加到表单的存取列表中,否则,由“读者”域控制对由此表单所创建的文档的存取。

If a form has a read access list, names from the Readers field are added to the access list. Otherwise, the Readers field controls access to documents created from the form.

“读者”域中的输入项不能给用户比数据库的存取控制列表 (ACL) 中指定的权限更高的存取权限,而只能进一步限制存取权限。在数据库中被指定为“不能存取者”的用户,即使被列入“读者”域也不能读取该数据库中的文档。另一方面,在存取控制列表中具有“编辑者”(或更高)存取级别的用户,若未列入“读者”域中,也不能读文档。

Entries in a Readers field cannot give a user more access than what is specified in the database access control list (ACL); they can only further restrict access. Users who have been assigned "No Access" to a database in the ACL can never read a document, even if you list them in a Readers field. On the other hand, users with Editor access or above in the ACL can be restricted from reading documents if they aren't included in a Readers field.

在下列情况下,对数据库具有“编辑者”(或更高)存取级别的用户就可以编辑文档:
这些用户被列在表单的读存取列表、“读者”域或“作者”域中。
表单没有读存取列表限制,没有“读者”域和“作者”域。

Any users who have Editor (or higher) access to the database can read and edit a document if one of the following is true:

  • They are listed in the form's Read access list or Readers field.
  • The form has no Read access list restrictions or no Readers field.

 

read access lists

 

“作者”域与数据库存取控制列表中的“作者”存取级别协同工作。如果在存取控制列表中指定某个用户具有“作者”存取级别,那么他可以阅读数据库中的文档,但是不能进行编辑即使是他自己的文档。将用户列入“作者”域可以使他们能编辑自己所创建的文档,从而扩展了他们的存取权限。
“作者”域中的项目不能超越数据库的存取控制列表,而只能细化它。在数据库中被指定为“不能存取者”的用户,即使被列入“作者”域也绝不能编辑文档。已经具有数据库“编辑者”(或更高)存取级别的用户不受“作者”域的影响,“作者”域只影响在数据库中具有“作者”存取级别的用户。
注意在“作者”域中必须输入完整的层次名,例如:John Smith/ACME/West,而不是简化的常用名。

作者域只对在数据库中的ACL中有作者权限的人有用,设置作者域的唯一目的就是:让数据库中具有作者权限的用户可以编辑文档(因为默认具有作者权限的用户是不能编辑文档的)

作者域是一个域类型为作者类型的域,它是用来控制文档的作者的。作者域不能控制到ACL编辑者以上的权限,拥有编辑者或编辑者以上权限的,不管该文档中的作者域是否有它。作者域只能控制作者或作者以下的权限。你只须将名字,角色,群组放到作者域的公式中就可以了。

如果用户在作者域中而不在读者域中,存此用户可以读取此文档,此时应该是: 读者域=读者域+作者域.

· 读者域作者域中的用户可以使用@name([cn];@username)获得,并不需要组织名.

· 如果数据库要在Internet网络上使用,一般给Anonymous为作者权限,此时用户有权打开表单,有权创建文档,但Anonymous不能编辑文档,也不能删除文档,这样就可以保证数据库中文档的安全性,又可以很好的让Anonymous运行代理,打开表单,发表文章等.

读者域:

如 果希望限定对由某个表单所创建的特定文档的存取,则在表单中添加一个“读者”域。“读者”域清楚地列出了可以阅读由此表单所创建的文档的用户。例如:如果 限制某个员工的人事档案只有“人力资源”部门的成员、员工本人以及员工的经理可以存取,则可将这些人员列在“读者”域中。对文档不具有“读者”权限的用户 则不能在视图中查看文档。如果表单中有存取列表,那么“读者”域中的姓名将被添加到表单的存取列表中,否则,由“读者”域控制对由此表单所创建的文档的存 取。

“读者”域中的输入项不能给用户比数据库的存取控制列表 (ACL) 中指定的权限更高的存取权限,而只能进一步限制存取权限。在数据库中被指定为“不能存取者”的用户,即使被列入“读者”域也不能读取该数据库中的文档。另一方面,在存取控制列表中具有“编辑者”(或更高)存取级别的用户,若未列入“读者”域中,也不能读文档。

在下列情况下,对数据库具有“编辑者”(或更高)存取级别的用户就可以编辑文档:1.这些用户被列在表单的读存取列表、“读者”域或“作者”域中。

2.表单没有读存取列表限制,没有“读者”域和“作者”域。

读者域是唯一能确定谁可以读取此文档的域,不管什么权限只要不在读者域中就无权读取此文档.(一个文档中可以有多个读者域)

作者域:

“作 者”域与数据库存取控制列表中的“作者”存取级别协同工作。如果在存取控制列表中指定某个用户具有“作者”存取级别,那么他可以阅读数据库中的文档,但是 不能进行编辑即使是他自己的文档。将用户列入“作者”域可以使他们能编辑自己所创建的文档,从而扩展了他们的存取权限。

“作者”域中的项目不能超越数据库的存取控制列表,而只能细化它。在数据库中被指定为“不能存取者”的用户,即使被列入“作者”域也绝不能编辑文档。已经具有数据库“编辑者”(或更高)存取级别的用户不受“作者”域的影响,“作者”域只影响在数据库中具有“作者”存取级别的用户。

注意在“作者”域中必须输入完整的层次名,例如:John Smith/ACME/West,而不是简化的常用名。

作者域只对在数据库中的ACL中有作者权限的人有用,设置作者域的唯一目的就是:让数据库中具有作者权限的用户可以编辑文档(因为默认具有作者权限的用户是不能编辑文档的)

如果用户在作者域中而不在读者域中,则此用户可以读取此文档,此时应该是: 读者域=读者域+作者域.

读者域作者域中的用户可以使用@name([cn];@username)获得,并不需要组织名.

如果数据库要在Internet网络上使用,一般给Anonymous为作者权限,此时用户有权打开表单,有权创建文档,但Anonymous不能编辑文档,也不能删除文档,这样就可以保证数据库中文档的安全性,又可以很好的让Anonymous运行代理,打开表单,发表文章等.

19 ls代理如何添加读者

Sub Initialize

Dim ss As New NotesSession

Dim curDB As NotesDatabase

Dim curDoc As NotesDocument

Dim itmReader As NotesItem

On Error GoTo errhandler

Set ss = New NotesSession

Set curDoc = ss.Documentcontext

Set itmReader = curDoc.GetFirstItem("readers")

itmReader.isReaders=True

'只有一个读者

curDoc.readers = "CN=admin/O=R853"

'错误的写法

'curDoc.readers = "CN=admin/O=R853,CN=阮玉霞/O=R853"

'多个读者

'声明数组时候,必须指明长度,

Dim MyDays(7) As String '声明一个数组一共7个元素,下标为0~6

Dim MyDay(1 To 7) As String '声明一个数组下标为1~7

'多个读者

Dim valarray(2) As String

valarray(0)="CN=admin/O=R853"

valarray(1)="CN=阮玉霞/O=R853"

curDoc.readers = valarray

itmReader.isReaders=True

errhandler:

MsgBox "___Error:" & Error & ":" & Erl

Exit Sub

End Sub

20 从names.nsf取出用户名

" ":@DbColumn("";"":"names.nsf";"people";2)

21 【未整理】代理的用法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14.1 FTSearch搜索:

    Set dc=db.Ftsearch("name",0)  
         '0位置为最大的查询数,0为所有匹配的文件  FTSearch必须创建数据库索引
Set doc=dc.Getfirstdocument()、

14.2 Item:

   Set doc=dc.Getfirstdocument()
While Not doc  Is Nothing
   ForAll ritem In doc.Items
      MsgBox ritem.name
   End ForAll
Wend

14.3 取出特定的域

Set doc=view.getFirstdocument()
If doc.HashItem("yu") <> "" Then
    Set item=doc.getfirstitem("yu")
          Set doc=view.getNextdocument(doc)
End If

14.4 使用文本属性

If doc.Hashitem("yu") <> ""  Then
Set doc=dc.Getfirstdocument()
  While Not doc Is  Nothing
    ForAll itemValue In doc.yu
              itemValue = "Anonymous"
          End ForAll   
      Set doc=dc.Getnextdocument(doc)
  Wend
End If

14.5 获取域值:

   ForAll itemValue In doc.Getitemvalue("yu")

14.6 添加域

  set item =new NotesItem(doc,"newYu",session.UserName)
  Call doc.Appenditemvalue("newYu",Newvalue)

14.7 替换值:

  1)、 While Not doc Is Nothing
  Call doc.Replaceitemvalue("resName","newValue")
  Set doc=dc.getnextdocument(doc)
Wend

   2)、Set doc=dc.Getfirstdocument()
While Not doc Is Nothing
  'Call doc.Replaceitemvalue("resName","newValue")
  Set item =doc.Getfirstitem("yu")
  While Not item Is Nothing
     ForAll resitems In doc.Itemsv(0)
        resitems="newVlaue"
     End ForAll
     doc.name= doc.Itemsv(0)
     Set item =doc.getnextitem(item)
  Wend
  Set doc=dc.getnextdocument(doc)
Wend

14.8 拷贝域

         Set item =doc.Getitemvalue("name")
  call item.Copyitemtodocument(doc, "name")
         call doc.save(true,false)
      Call doc1.Copyallitems(doc2,true)  ‘替换所有的

14.9 删除指定的域:

     1)、 For j=1 To dc.count
   Set item=doc.Getitemvalue("name")
   While Not item Is  Nothing
    Call item.Remove()
    Call doc.Save(true,false)
   Wend
  Set doc=dc.Getnthdocument(j)
     Next
     2)、For j=1 To dc.count  
  While Not doc.Hasitem("name")
    Call doc.Removeitem("name")
    Call doc.Save(True,false)
  Wend 
   Set doc=dc.Getnthdocument(j)   
Next

14.10 RTF文本域的输出:

Set item=doc.GetFirstItem("RtfYU")
MsgBox item.Text

14.11 在代理中使用公式:

     temp=Evaluate("@ReplaceSubstring(aa;bb;cc)",doc)

14.12 嵌入对象:

ForAll csx In doc.Embeddedobjects
    csx.name
End ForAll
    Set doc=dc.Getnthdocument(j)
       Next

14.13 激活嵌入对象:

    Call doc.EmbeddedObjects(0).Activate(True)

14.14 if的用法

    Set doc=dc.Getfirstdocument()
    If Not IsEmpty(db.Agents) Then
    ForAll agent In db.Agents
     MsgBox agent.name
    End ForAll
     End If

22 【未整理】怎样在lotusScript中创建一个姓名域、读者域、作者域

创建一个"specialType"姓名域
Dim variableName As New NotesItem( notesDocument, name$, value [,specialType%])
创建一个"Author"作者域
Dim TAuthor As New NotesItem(doc, "Author", Auths, AUTHORS)
TAuthor.IsSummary = True

23 如何在LOTUSSCRIPT中把两个读者域的值放在一个列表变量里面去

ReadArray   =     Arrayappend   (curdoc.Fd_reader,   curdoc.Fd_reader1)

24 以下未整理

1、 什么是Notes网络域?

2、 如果客户端连不上服务器,可能什么原因?

3、 打开Notes,直接弹出“打开窗口出错”,确认后,自动退出。是什么原因造成的,如何处理?

4、 打开Notes,直接弹出“可扩充的哈希索引被破坏”,确认后,自动退出。如何处理?

5、 在ACL中,能输入哪些有效内容?

6、 在ACL中,权限优先级?(在ACL中,单个用户、群组、通配符、Default优先级)

7、 Notes客户端发生TCP/IP堆栈错误该怎么解决?

8、 对哈希索引了解多少?

9、 数据库索引错误,如何修复?

10、 批量刷新数据库设计的服务器端命令是什么?

11、 作者域、读者域分别是什么含义,如何使用?

12、 简要表(Profile)和文档(document)区别?

13、 LotusScript前端类、后端类有哪些?

14、 哪些Formular不能用在View中使用?

15、 Formular、LotusScript调试?

16、 “复制保存冲突”,产生原因是什么?如何预防和处理

17、 简单描述流程引擎的工作原理。

18、 Notes代理,有几种运行方式?

19、 Notes数据查询方式有几种,你最常用的是哪种

20、 数据库文档排序方式有几种,你最常用的是哪种?

21、 简述Lotus数据库的优缺点?(文档型数据库Vs关系型数据库)

22、 连接关系型数据库有哪几种方法?你最常用的是哪种?

23、 表格中,是否可以隐藏一列?

24、 客户端打开一个文档(C/S),系统会自动运行哪些函数和事件,顺序如何?

25、 客户端关闭一个文档(C/S),系统会自动运行哪些函数和事件,顺序如何?

26、 客户端打开一个文档(B/S),系统会自动运行哪些函数和事件,顺序如何?

27、 客户端关闭一个文档(B/S),系统会自动运行哪些函数和事件,顺序如何?

28、 什么情况下会启用事件“Querymodechange”、“Postmodechange”?

29、 文档中一个域的初始化函数,会在表单的哪两个事件之间运行?

30、 一个Notes表单中,有域和计算文本,他们的计算顺序怎么样?

31、 主表单中的域和子表单中的域,计算顺序怎么样?

32、 简述Portal的工作原理。

部分面试题及答案

1、lotus notes 5.0 数据库应用程序开发的合理顺序是怎样的?

答:开发 lotus notes 5.0 数据库应用程序的合理顺序是:

一、首先做好各个共享域、共享操作。

二、首先开发所有表单

三、其次开发所有视图

四、再次开发大纲

五、然后开发页面

六、然后开发框架集

2、如何在IE中显示视图的操作按纽?

答:要在IE中显示视图的操作按纽要做到三点:

一、操作必须有内容,即不能为空操作。

二、操作的公式必须正确,如果是错误的也显示不出来。

三、在视图的高级属性中必须起用小程序。

3、怎样在notes 或 IE 中显示时使用框架集?

答:要使用框架集则要做到三点:

一、首先创建框架集。

二、然后指定框架集中个框架的内容(内容可以是视图、大纲、或表单),并指定目标帧。

三、在数据库的高级属性中指定在浏览此数据库时使用框架集,并指定框架集的名字。

4、何时做大纲比较合理?

答:由于大纲是组织视图的,所以如果在作好大纲后并指定了各视图,以后你又修改了视图

的名字,则大纲不能提取到所要求的某个视图,则大纲便会连所有其他内容也不显示,

正常情况下,在页中嵌入一个已经存在的大纲时,会看到大纲的内容,如果大纲有错误

(比如,所要求的视图名不存在了)则不会看到大纲的全部内容。所以如果你在作好大

纲后有修改了视图名字,则建议把大纲删除掉,重新建立一个同名大纲。

5、为什么 有时 视图中的某些列在设置了分类属性后仍然象没有分类似的?但这些列在IE中

显示分类却是正常的?

答:你的列属性设置是正常的,只是notes的设计刷新功能不健全,也就是你怎么刷新都不

会把一些无用的信息去掉,这种情况下应该从新启动notes,如果还不行就要从新启动

服务器,这样就肯定可以了。这种问题在notes的其他设计中也会遇到的。

6、如何在IE和Notes中都显示数据库的帧结构集?

答:这需要设置数据库的启动属性,在notes启动时设置为帧结构集,在IE中启动时也设置

为帧结构集。

7、如何在IE中实现文档保存后返回视图?

答:要在IE中实现文档保存后返回视图需要作到两点:

一、在表单的“保存”操作中实现公式: @If(@Command([FileSave]);@Command([FileCloseWindow]);@Return( " "))

二、在表单中增加一个隐藏的保留域:$$return,其属性设置为计算文本。其值用公式实现

为 "[/ " + @Subset(@DbName;-1)+ "/ "+ "v_make_nowdept "+ "?OpenView] " 其中

v_make_nowdept是个某个视图名。这样就能返回视图v_make_nowdept了。当然可以用

@subset(@ViewTitle;-1)来取得打开某个文档时视图名字。但是当我们这样做时发现:

在视图的“创建”操作进入表单时@ViewTitle的值却总是不能返回,这个问题还有待于

进一步解决。

8、我使用了帧结构集,并且是双帧结构,左边是大纲,右边是视图,但我在点左边的大纲项

时,右边相应的大纲项没有刷新,并且在IE中的创建内容在notes中不能完全显示出来,在

notes中创建的内容也不能完全在IE中显示出来,这是为什么?

答:你肯定在大纲的属性中设置了“使用java小程序”的选项,当使用“使用java小程序”

选项时可以使大纲在IE中显示出和notes中一样的效果。而使用“使用HTML ”选项时,

Domino将忽略大纲的“展开”图表,和大纲的背景而仅显示大纲的文本,但使用“使用

java小程序”时,Domino在右边视图的刷新和“与notes保持同步”方面都不能正确处

理,从而出现上述错误。所以建议目前使用大纲时其属性还是设置为“使用HTML "为

好。

9、我怎样使得每次双击某个文挡时都让文挡在右面帧中显示?

答:你应该在表单的属性中设置启动时在指定的帧中显示。

10、我怎样在阅读文档时隐藏表单的“保存”“发布”操作?

答:你应该在表单操作的安全属性页中设置当公式为真时隐藏操作,其公式一般为:

!@IsDocBeingEdited|status= "1 "

11、我怎样在按某个视图打开文档后,用户按“返回”操作能返回相应的视图?

答:当你从某个视图打开文档后,相应的视图的名字就保存在公式@viewtitle中,所以返

回相应的使徒只需要让“返回”按纽“运行相应的打开视图的公式如:

@Command([OpenView];@If(@ViewTitle= " "; "v_make_nowdept ";@Subset(@ViewTit

le;-1)))

其中v_make_nowdept是某个视图的名字,你需要把他改成你的某个视图名字。

按理说IE和notes都支持公式,但实际上上述公式在IE中使用时没有问题,但在notes

中使用时,有时会不能正确返回。

如果用javascript则只要简单的一句 history.back()即可实现返回,但javascript

不被notes支持。即只能在IE中用。

如果使用公式 if(@Command([FileSave]);@Command([FileCloseWindow]);@Return( " "))

则可以在notes中正确实现返回,但这个公式在IE中有时不能正确返回,

综上所述,要既能在IE中实现准确返回和在notes中实现准确返回则必须创建两个“返

回”操作

其中一个使用javascript,并在notes中隐藏。一个使用公式,并在IE中隐藏。

12、为什么我每次修改表单时,表格的相对位置都要从新调?

答:这是因为表格设置为自动后,系统在你每次修改表单是从新给出表格的大小,所以需

要每修改一次表单都要从新调一下表格的相对位置。

13、我不想在IE中显示视图的名称,我该怎么办?

答:你在建立视图时,要同时赋予该视图名称和别名,在所有工作作好以后,你如果不想

在IE中显示该名称,则你应该用空格来取代原来视图的名称,Domino回自动寻找别名

来匹配的。

如果你不去掉名称的话,在IE中浏览时Domino会自动把名称显示在视图的上方的。

14、我如何控制设计元素在IE中显示时,附加一些其他风格?

答:如果Domino允许该种元素在IE中浏览时附加其他风格,则在设计时在该种元素的属性

里面会给你一个HTML属性页,你可以在该属性页里面添加其他HTML属性。

15、为什么我一点击某一大纲项,我的大纲就全没有了,取而代之的是一些没有层次的视图名

称?

答:这种情况肯定是你的大纲所在帧的目标帧没有设置,你应该把他设置为你想要连接的

那个帧,比如:一般情况下右边的 content 帧。

16、为什么我的RTF域在IE中浏览时看不到其中的内容?

答:有可能你把这个域放在表格中了吧!,如果放在表格中在IE中浏览时是看不到其中的

内容的解决办法是把它放在表格外边即可。

也有可能你在该RTF域中设置了“使用java applet "的属性,但没有设置HTML属性,

因为默认的HTML属性是RTF域的长、宽都为0,这样在浏览时是看不到的,所以你应该

把它的HTML属性设置一下,比如: "HEIGHT=\ "120\ " "600\ " "。

17、我怎样设计表单来跟踪文档的作者?

答:你可以在表单上加一个隐藏的共享域,其名字可以为 from 运行公式为:

@If(@IsNewDoc ; @UserName; From),这样这个域就记录了这片文档的作者了。

18、我怎样设计表单来跟踪文档是否已经发布?

答:你可以在表单上加一个隐藏的域,其名字可以为 status 类型为单选按纽,初试值设

置为”0“。在你的表单的发布操作中加上一句 status= "1 "即可来表示此文挡已经发

布。

19、我怎样控制文挡的操作权限?

答:对已经存在的文挡来说,权限分为编辑和阅读两种,你可以给表单增加一个”修改

“操作用以修改文档,(其运行公式为: @Command([EditDocument]))并设置该操作

的隐藏属性为当公式为真时隐藏,这样你就可以设置当文档已经发布、目前的用户不是

本文档的作者、用户不具备发布角色等任何一个条件满足时隐藏该操作,从而实现对文

档修改权限的控制。典型的公式如:@IsDocBeingEdited|!@IsMember( "[发布公

告] ";@UserRoles)|status= "1 "|from!=@UserName

20、我如何在IE里面实现notes中的 对话框列表?

(即可以添加新的项目的列表框)

答:在notes中这种列表框是系统自身就有的,实现起来比较容易,但这个功能不被IE所支

持,要在IE中实现该功能只能是采用另一种方式来仿效这种效果。

在IE中实现时,首先要把对话框列表的属性设置为不可添加新内容。(否则在IE中不

能显示为列表框,而是编辑框),其次再增加一个文本编辑域。这个域用来输入新的

项目,那么怎么才能让新的项目加入到列表框中去呢?这里用到一个小技巧,这个技

巧首先被NOtes开发人员所使用:列表框中的项目要动态的从一个视图中提取它的一个

已经分类的列,这个列实际上就是你的新输入项目所间接存取的域。

具体操作方法是:

一、对应于要在IE中实现的某个对话框列表域name,你再建一个对话框列表域web_name,

但要把它的属性设置为不可添加新内容。

二、再建一个文本编辑域web_new_name。在name的属性设置中你要设置为“为选项使用公

式”并把公式写为:@If(!@IsNewDoc & @IsDocBeingLoaded;@Unavailable;

@DbColumn( " ": "nocache "; " "; "视图名字 ";1))

三、在name的 input translation事件中 输入公式 @If(@ClientType = "Notes ";

@Trim(name); if(@Trim(web_new_name)= " ";@Trim(Web_name);@Trim(web_new_name)))

四、在web_name的属性设置中你要设置为“为选项使用公式”并把公式写为

@DbColumn( " ": "nocache "; " "; "v_bulletin_classsel ";1)

五、在notes中隐藏web_name和web_new_name域。

你可能感兴趣的:(domino,-宝典(一))