Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Дополнительные инструменты в панели инструментов   
Шаблоны и примеры Читать статью
 
Классы для работы со стабами удалённых документов для Windows64   
Шаблоны и примеры Читать статью
 
Базовые компоненты XPages Extension Library: Widget Container   Серия статьей дающая представление о базовых компонентах Extension Library, их основных свойствах и мест применения
О 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
Комментарий * :
Код подтверждения * :


Мероприятия
18.12.2012   Опыт реализованных проектов на базе технологий IBM
24.10.2012   Решения IBM для построения надежной ИТ-инфраструктуры и сервисов
09.10.2012   Форум «Ударим СЭДом по бездорожью, разгильдяйству и непрозрачным бизнес-процессам! Система электронного документооборота CompanyMedia 4.0: вперед в будущее!»
Пресс-релизы
02.06.2011   ООО "АДБ.РУ" выпустило очередную версию системы управления контентом для Lotus Domino - Logosphere 2.7.
21.01.2010   Компания «Поликом Про» выполнила для компании «Синергия» пилотный проект по внедрению системы защиты электронной почты IBM Lotus Protector for Mail Security
22.12.2009   Новые технологии разработки приложений на базе Lotus Domino
Биржа труда
18.04.2012 - разработчик Lotus Notes (ОАО "УРАЛСИБ")
26.07.2011 - Программист Lotus (удаленная работа) ()
06.06.2011 - Эксперт (Lotus Notes/Domino) (Крупный банк (ТОП-5))
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU