Hallo,
ich habe ein kleines Problem.
Mittels Agent möchten wir in allen Maildatenbanken auf unserem Server die Replikationsprotokolle und das CutOffDate löschen.
Die Replikationsprotokolle lösche ich per LS-Agent, für das CutOffDate habe ich nur in JavaScript eine Lösung gefunden.
Jetzt zu meinem Problem:
Wie rufe ich aus dem 1.Agent heraus den JS-Agent auf und übergebe die Werte der aktuellen Datenbank. Zum besseren Verständnis hänge ich mein Script an.
Vielen Dank im voraus.
Gruß
Andreas
<schnipp>
Agent1:
Option Public
Option Declare
%INCLUDE "lsconst.lss"
Sub Initialize
On Error Goto ErrHandler
Dim out As String, server As String
'server = Cstr(Inputbox$("Bitte Server eingeben"))
server = "server1"
Dim s As New NotesSession
Dim ldb As NotesDatabase
Set ldb = s.CurrentDatabase
Dim dbdir As New NotesDbDirectory( server )
Dim db As NotesDatabase
Set db = dbdir.GetFirstDatabase(DATABASE)
Dim doc As NotesDocument
Dim item As NotesItem
Dim nid As String,nextid As String
Dim formula As String
Dim rep As NotesReplication
Dim nc As NotesNoteCollection
Dim i As Integer
Dim fileNum As Integer
fileNum% = Freefile()
Open "E:\temp\Protokoll_" & Left(Server,8) & "." & Date$ & ".txt" For Append As fileNum%
out = "Beginne mit den Aufräumarbeiten: "+Date$+"---"+Time$
Print #fileNum%,out
Do While Not (db Is Nothing)
If Not db.IsOpen Then
If Strconv (Left(db.FilePath,5), SC_LowerCase) = "mail\" Then
Call db.Open( db.Server , db.FilePath )
out = "Bearbeite Datenbank: " & db.Filepath
Print #fileNum%,out
Set nc = db.CreateNoteCollection(False)
nc.SelectReplicationFormulas = True
Call nc.BuildCollection
Set doc = db.GetDocumentByID("FFFF0800")
If Not (doc Is Nothing) Then
nid = nc.GetFirstNoteId
For i = 1 To nc.Count
nextid = nc.GetNextNoteId(nid)
Set doc = db.GetDocumentByID(nid)
doc.RemovePermanently(0)
nid = nextid
Next
End If
out = "AdvancedReplicationSettings bearbeitet"
Print #fileNum%,out
Set rep = db.ReplicationInfo
Call rep.ClearHistory()
Call rep.Save()
out = "Replication History gelöscht"
Print #fileNum%,out
Dim agent2 As NotesAgent
Set agent2 = ldb.GetAgent("Agent2")
Call agent2.run
out = "CutOff-Date gelöscht"
Print #fileNum%,out
End If
End If
Set db = dbdir.getnextdatabase
Loop
Goto Ende
ErrHandler:
If Err > 1 Then
out = Lsi_info(2) & " called by " & Lsi_info(12) & ": Error (" & Cstr(Err) & ") Line: " & Cstr(Erl) & " - " & Error$ & Chr(10)
Print #fileNum%,out
End If
Resume Next
Ende:
out = "Fertig! "+Date$+"---"+Time$
Print #fileNum%,out
Close fileNum%
End Sub
Agent2:
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Agent agent = agentContext.getCurrentAgent();
Database db = agentContext.getCurrentDatabase();
Replication replication = db.getReplicationInfo();
if (agent.getComment().equals("")) {
replication.setCutoffDelete(false);
System.out.println("No cutoff date"); }
else {
Integer i = new Integer(agent.getComment());
replication.setCutoffDelete(true);
replication.setCutoffInterval(i.longValue());
System.out.println("Cutoff date is " +
replication.getCutoffDate()); }
replication.save();
} catch(Exception e) {
e.printStackTrace();
}
}
}
<schnapp>