Domino 9 und frühere Versionen > ND7: Entwicklung

Werte eines LS-Agenten an einen JS-Agenten übergeben (CutOff)

(1/3) > >>

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