6 つのエージェント、1 つのフォーム (「エージェント ステータス」)、1 つのビュー (「エージェント ステータス リスト」)、および 1 つのスクリプト ライブラリ (「プロセス エージェント」) があります。
フォーム フィールド: AgentName (エージェントの名前を格納)、LastDate (エージェントの最終実行日時)
表示: フォームに基づく。AgentName は 1 列目です。
各エージェントの名前は次のとおりです (括弧付き): (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)
問題は、[エージェント ステータス リスト] ビューでエージェント名を検索できないように見えることです。
エージェント名ロータス ヘルプ ファイルの説明: 読み取り専用。エージェントの名前。データベース内では、エージェントの名前は一意ではない場合があります。
ビューを見ると、既存のドキュメントを参照して更新するのではなく、毎回新しいドキュメントを作成します。ビュー内の名前は、括弧なしで「Agent01」としてのみ表示されます。それが原因ですか?または、名前が一意ではないため、検索できないという記述があります。私はこれを理解していません。すべて問題なければ、ビューには 6 つのドキュメントしか表示されません。