Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


Шаблоны и примеры

Главная   Библиотека   Шаблоны и примеры

Классы для работы со стабами удалённых документов для Windows64

Классы для работы со стабами удалённых документов для Windows64
Николай Норкин
nickanor@mail.ru

Автор представляет на суд читателя доработку ранее публиковавшегося решения для работы со стабами документов, адаптированного для работы в серверных агентах на серверах под 64-разрядной Windows
(с исходным решением можно ознакомиться, например, здесь)

Библиотека DeleteStubs.lss (скачать файл)

В библиотеку добавлены функции для работы с таблицей IDTable типа DHANDLE
Declare Function W64IDEntries Lib "nnotes" Alias "IDEntries"(Byval hTable As Double) As Long
Declare Function W64IDScan Lib "nnotes" Alias "IDScan"(Byval hTable As Double, Byval fFirst As Integer, retID As Long) As Integer
Declare Function W64IDDestroyTable Lib "nnotes" Alias "IDDestroyTable" (Byval hTable As Double) As Integer
Declare Function W64NSFDbGetModifiedNoteTable Lib "nnotes" Alias "NSFDbGetModifiedNoteTable" (Byval hDb As Long, Byval NoteClassMask As Long, Byval sinceDate As Double, retUntil As TIMEDATE, rethTable As Double) As Integer

Пример использования кода (при размещении файла библиотеки в программном каталоге Notes)

%INCLUDE "DeleteStubs.lss"
Sub Initialize
	Dim session As New NotesSession
	Dim currentDatabase As NotesDatabase
	Set currentDatabase = session.currentDatabase
	Dim stubs As DeletionStubCollection
	Dim stub As DeletionStub
	Dim nextStub As DeletionStub
	Set stubs = New DeletionStubCollection(session, currentDatabase, NOTE_CLASS_ALL, 0)
	Print "Количество обрабатываемых документов", stubs.count
	
	Set stub = stubs.getFirstStub()
	
	Dim i As Long
	Dim stubs_all As Long, stubs_count As Long
	Dim cutoff_date As Variant
	cutoff_date = Datenumber(2015, 10, 17)
	Do
		If stub Is Nothing Then Exit Do
		Set nextStub = stubs.getNextStub(stub)
'		Print stub.noteId, stub.unid, stub.created, stub.sequence, stub.sequenceTime
		i= i + 1
		If i Mod 10000 = 0 Then Print "Найдено стабов", i, stubs_count
		If stub.sequenceTime < cutoff_date Then Call stub.remove : stubs_count = stubs_count + 1 : Goto red
		If Not stub Is Nothing Then Delete stub
red:
		Set stub = nextStub
	Loop
	Print "Количество стабов в базе", i
	Print "Количество удалённых стабов", stubs_count
End Sub


Результаты обработки кода на базе с 700 000 документов и 600 000 стабов на четырёх серверах Windows64
На двух серверах агент не смог построить таблицу IDTable, закончив работу ч ошибкой

20.11.2015 06:03:11   Agent Manager: Agent 'DeletionStubs Agent' error: New.DeletionStubCollection(256): Notes C API Error: Unable to extend an ID table - insufficient memory.

На третьем сервере агент выполнился, а вот на четвёртом выдал ошибку при конвертации sequenceTime
20.11.2015 06:10:37   Agent Manager: Agent 'DeletionStubs Agent' error: ConvTIMEDATEtoDateTime(182): Type mismatch
при обработке двух стабов
После чего в код библиотеки была добавлена обработка ошибки в свойстве sequenceTime и саойство класса isErrorSequence

	Property Get sequenceTime As Variant
		On Error Goto ErrH
		Call Me.ConvTIMEDATEtoDateTime(Me.NoteOID.sequenceTime, sequenceTime)
Eos:	Exit Property
ErrH:
		On Error Goto 0
		If Err = ERROR_ErrTypeMismatch Then sequenceTime = Cdat(0) : Me.errorSequenceConvert = True
		Resume Eos
	End Property


Ни автор, ни владелец сайта notesnet.ru не несут ответственности за возможные последствия при работе кода
 
  Опубликовано — 11/21/2015 |    



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU