我有 6 个代理、1 个表单(“代理状态”)、1 个视图(“代理状态列表”)和 1 个脚本库(“进程代理”)。
表单字段:AgentName(存储代理的名称),LastDate(代理的上次运行日期和时间)
视图:基于表格。AgentName 是第一列。
每个代理命名如下(带括号):(Agent01),(Agent02),(Agent03),(Agent04),(Agent05),&(Agent06)
脚本库代码
Option Public
Option Declare
Dim vw As NotesView, doc As NotesDocument
Sub Initialize
End Sub
Sub setLastRun(db As NotesDatabase, a As NotesAgent, dte)
Set vw=db.Getview("Agent Status List")
Set doc=vw.Getdocumentbykey(a.Name, True)
If doc Is Nothing Then
Set doc=New NotesDocument(db)
doc.form="Agent Status"
doc.AgentName=a.Name
doc.LastDate=CDat(dte)
Call doc.save(True, True)
Call vw.Refresh()
Else
Call doc.Replaceitemvalue("LastDate", CDat(dte))
Call doc.Save(True, True)
Call vw.Refresh()
End If
End Sub
Function getLastRun(db As NotesDatabase, a As NotesAgent)
Set vw=db.Getview("Agent Status List")
Set doc=vw.Getdocumentbykey(a.Name, True)
If Not doc Is Nothing Then
getLastRun=doc.LastDate(0)
Else
Call setLastRun(db, a, Now)
getLastRun=CDat(Now)
End If
End Function
在每个代理的代码中,我包括以下内容:
在顶部:Use "Process Agent"
在代码的开头(从“代理状态列表”视图中获取此代理的最后运行日期):
Dim s As New NotesSession, db As NotesDatabase
Dim a As NotesAgent, lastdate
Set db=s.Currentdatabase
Set a=s.Currentagent
lastdate=getLastRun(db, a)
在代码末尾(为此代理设置新的上次运行日期):Call setLastRun(db, a, now)
现在的问题是它似乎无法在“代理状态列表”视图中查找代理名称。
代理名称 Lotus 帮助文件的描述为: 只读。代理的名称。在数据库中,代理的名称可能不是唯一的。
当我查看视图时,它每次都会创建一个新文档,而不是引用和更新现有文档。视图中的名称仅显示为“Agent01”,不带括号。是这个原因吗?或者由于名称不是唯一的描述,因此无法查找。我不明白这一点。如果一切正常,视图中应该只有 6 个文档。