Domino 9 und frühere Versionen > ND7: Entwicklung
Werte eines LS-Agenten an einen JS-Agenten übergeben (CutOff)
Toady:
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>
Toady:
Hi,
anscheinend ist das doch kein so kleines Problem wie ich angenommen hatte.
Da ich von Java Script leider keinen blassen Dunst habe, hatte ich gehofft, dass mir hier im Forum jmd. helfen kann.
Es muss auch nicht unbedingt der 2. Agent(JS) aus dem 1.Agent heraus gestartet werden. Mir würde auch reichen, wenn der 2.Agent so erweitert werden würde, dass er alle Datenbanken in einem bestimmten Verzeichnis bearbeitet und die Ergebnisse in eine Protokolldatei ausgibt.
Bin für jede Hilfe dankbar.
Gruß
Andreas
dirk_2909:
--- Zitat ---Da ich von Java Script leider keinen blassen Dunst habe, ..
--- Ende Zitat ---
...habe ich einen JAVA-Agenten geschrieben :-X
Einen Agenten rufst Du genau so auf, wie Du es gemacht hast (agent.run .. ).
Wo genau leigt jetzt Dein problem?
Läuft der Agent nicht an oder macht er nicht das, was er machen soll ?!
klaussal:
--- Zitat ---Wo genau leigt jetzt Dein problem?
--- Ende Zitat ---
Hier ?
--- Zitat ---Wie rufe ich aus dem 1.Agent heraus den JS-Agent auf und übergebe die Werte der aktuellen Datenbank
--- Ende Zitat ---
dirk_2909:
--- Zitat ---Hier ?
Zitat
Wie rufe ich aus dem 1.Agent heraus den JS-Agent auf und übergebe die Werte der aktuellen Datenbank
--- Ende Zitat ---
OK. I see ... :-[
In dem fall "muss" man ein ein Dokument erstellen/festlegen/ermitteln das die Werte beinhaltet.
Die Note-ID dieses Doks kann man dem Agenten (Agenbt2 ) übergeben (siehe Designerhilfe ).
Im Agent2 muss man das Dok neu initialisieren und die Werte auslesen ...
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln