%REM
*********************************************
Agent ClearHistoryAll
Created Jan 13, 2015 by Rinat N. Karimov
Description: Comments for Agent
%END REM
Option Public
Option Declare
Sub Initialize
GoTo begin
errors: MsgBox Error & " Initialize:"& Erl
Exit Sub
begin:On Error GoTo errors
Dim s As New NotesSession, dbdir As New NotesDbDirectory(""), dbcl As NotesDatabase
Dim vcl As NotesView, ncl As NotesViewEntryCollection, nc As NotesViewEntry
Dim db As NotesDatabase, rep As NotesReplication, srvname As New NotesName(s.Currentdatabase.Server)
Dim srvlist As Variant,isProcess As Variant
Set dbcl=s.Getdatabase("","cldbdir.nsf")
If Not dbcl.Isopen Then Exit Sub
Set vcl=dbcl.Getview("($ReplicaID)")
vcl.Autoupdate=False
Set db = dbdir.GetFirstDatabase(1247)
While Not (db Is Nothing)
Set ncl=vcl.Getallentriesbykey(Left(db.Replicaid,8)+":"+Right(db.Replicaid,8),True)
If ncl.Count>1 Then ' есть несколько серверов на базу - значит чистим историю репликации
isProcess=False
Set nc=ncl.Getfirstentry()
Do While Not nc Is Nothing ' собираем список серверов для команды replicate
If nc.Columnvalues(1)="0" Then 'только включенные базы
If InStr(UCase(srvlist),UCase(nc.Columnvalues(2)))=0 And UCase(nc.Columnvalues(2))<>UCase(srvname.Canonical) Then srvlist=srvlist & "," & nc.Columnvalues(2)
IsProcess=True ' есть
End If
Set nc=ncl.Getnextentry(nc)
Loop
If IsProcess Then
If Not db.isOpen Then Call db.Open("","")
If db.Isopen Then
On Error Resume Next
Set rep=db.Replicationinfo
Call rep.Clearhistory()
Call rep.Save()
On Error GoTo errors
End If
End If
End If
Set db = dbdir.GetNextDatabase
Wend
srvlist=FullTrim(Split(srvlist,",")) ' реплицируемся со всеми серверами кластера
ForAll cmd In srvlist
If cmd<>"" Then
MsgBox "Console command:" & "replicate " & cmd
Call s.Sendconsolecommand("","replicate " & cmd)
End If
End ForAll
End Sub