通过程序的方式来删除一个数据库中所有预定的代理

通过程序的方式来删除一个数据库中所有预定的代理


环境

产品:Lotus Domino Designer
平台:Windows
版本:7.x,6.x

问题

Lotus Domino Designer的联机帮助中提到可以通过LotusScript中Remove的方法来移出或者删除一个代理。帮助中的样例展示了如何根据名字来删除相应的代理。有没有办法来删除所有预定的代理呢?

以下是LotusScript Remove方法的例子:

下面的Script在当前数据库中,删除名字叫CalculateTotals 的代理。
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Forall a In db.Agents
If ( a.Name = "CalculateTotals" ) Then
Call a.Remove
End If
End Forall

解答 NotesAgent类中包含一个Trigger属性,可以用来决定代理是否是预定的代理。在一个Forall循环中可以通过If条件来检查符合条件的代理:

为了删除所有预定的共享代理,可以采用下面的代码逻辑:

Forall a In db.agents
If a.trigger=TRIGGER_SCHEDULED And a.ispublic Then
Call a.remove
End If
End Forall

下面是相关代理类型的可用值:

对于“按事件”触发的选项:

TRIGGER_AFTER_MAIL_DELIVERY (2) 代表 “新邮件到达后”
TRIGGER_BEFORE_MAIL_DELIVERY (6) 代表 “新邮件到达前”
TRIGGER_DOC_PASTED (3) 代表 “当文档被粘贴时”
TRIGGER_DOC_UPDATE (5) 代表 “文档被创建或修改之后”
TRIGGER_MANUAL (4) 代表 “‘操作’菜单选择” 或者 “代理列表选择”
TRIGGER_NONE (0)

对于“按日程安排”触发的选项
TRIGGER_SCHEDULED (1) 代表 每天多于一次,每天一次,每周一次, 每月一次, 或 从不

附加信息:

如果你想简单地启用或者禁用数据库中的预定的共享代理,可以仿照如下的逻辑:
Forall a In db.agents
If a.trigger=TRIGGER_SCHEDULED And a.ispublic Then
If a.isenabled Then
a.isenabled=False
Call a.save
End If
End If
End Forall

你可能感兴趣的:(数据库)