Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lotus Notes/Domino: Программирование
Войти
Регистрация
Восстановить пароль
 
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
1

Ошибка агента по расписанию

16.10.2019, 00:38. Просмотров 320. Ответов 18

Доброго времени суток!
Помогите плиз в такой ситуации. Есть агент, который сохраняет все вложения из всех писем в ящике. Периодически запускал его в ручную. Все работает. А тут настала необходимость выполнять его по расписанию. И вот теперь при его запуске в логе вижу такую ошибку: Agent (...) error message: Error creating product object
Как с этим бороться? Спасибо
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2019, 00:38
Ответы с готовыми решениями:

Ошибка при запуске агента по расписанию
Доброго времени суток. Столкнулся с такой проблемой. Есть агент, написанный на Java, который...

Запуск агента по расписанию: проблемы безопасности
Итак, речь идет о Lotus R5. Имеется агент, который по расписанию должен обновить пачку документов....

Минимальный интервал времени запуска агента по расписанию
Всю жизнь считал что минимальный интервал запуска для агента по расписанию это 5 минут. Оказывается...

Запуск агента по расписанию в точно указанное время
Здравствуйте, уважаемые коллеги. Существует агент, который, работая по расписанию, должен...

вызов Ls-агента с показом диалогового окна из Java-агента
есть Java-агент, надо в нем показать диалоговое окно (картинку в нем показать и поле для ввода),...

18
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
16.10.2019, 04:46 2
Здравствуйте.

А где агент запускается автоматически ? На сервере или на рабочей станции ?
У вас в агенте используют ся какие то UI-классы ? -

Если да используются и вы фоном агент запускаете - то это не будет работать т.к. Классы в фоновых агентах недоступны.

если ui-классво нету тогда естли возможность уточнить на какой строке агента возникает ошибка ? агент хоть одну строчку выполняет или вообще не запусается ?
0
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
16.10.2019, 09:17  [ТС] 3
Добрый день! Агент запускается на рабочей станции. Если бы я понимал еще что такое UI классы ) Агент пытается запуститься, но сразу пишет эту ошибку.
0
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
16.10.2019, 17:24 4
На чем написан агент ? На @собаках и формалух, на LotusScript или н Java ?

UI-классы это классы в LotusScript которые обеспечивают взаимодействие с пользовательским интерфейсом. Например, класс NotesUIWorkspace - не следует использовать в фоновом агенте или NotesUIDocument - обычно у этих классов, в названии есть буквы UI (от User Interface).
Особеность использование этих классв в фотовом агента в том что агент начинает выполнение но как только доходит до такого класса, то отсанавлиаается из-за невозможности создать объект.

Возможно, у вас агент все же запускается и даже начинает выполнение, но падает сразу на каком-то из первых ператоров в агенте.
Я бы посоведовал бы вам прямо в теле агента вставить несколько операторов

print "сообщение"

c помощью которых после в журнале (log.nsf) вы cможете понять до какого места дошло выполнение агента. Например в теле агента где программный код, прямо первой строчкой в коде можете добавить:

print "Запуск "

Потом, через пару строк, снова print "Точка 2 пройдена." ну и т.д.

В журнале потом когда агент остановится, вы по этим отладочным сообщениям сможете понять до какого места дошло. И посмотреть что там за код.

Есть так же вариант что агент не запускается из-за того что неправильно заданы какиет-то параметры запуска. Но я бы сначала проверил первй случай - с printa-ми.
0
16.10.2019, 17:24
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
17.10.2019, 10:58  [ТС] 5
Агент написан на LS.
Код
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim coll As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim eo As NotesEmbeddedObject
	Dim RTITEM As NOTESrICHtEXTiTEM
	Dim ws As New NotesUIWorkspace
	
	AttachmentCount = 0
	Set db = session.CurrentDatabase
	Set coll = db.UnprocessedDocuments
	
	varPaths = "D:\folder\"
	strOutputFolder = "D:\folder\"
	
	For a=1 To coll.count     
		
		Set doc = coll.GetNthDocument(a)     
		Set rtitem = doc.GetFirstItem("Body")     
		
		Forall o In rtitem.EmbeddedObjects
			oname = strOutputFolder + o.name
			Call o.ExtractFile( oname )
			AttachmentCount = AttachmentCount + 1
		End Forall
		
	Next
	
End Sub
Поставил несколько значений print. Затыкается как раз на строке с UI. (Dim ws As New NotesUIWorkspace)
0
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
17.10.2019, 12:10 6
Вам нужно сделать 2 - агента.

Первый будет использоваться для фонового запуска. И в нем не должно быть UI-классов.
и второй агент - который по сути будет делать тоже самое - но второй вы будете вызывать из меню сами (когда потребуется)
Во втором агнете вы можете использовать UI-классы.

В принипе чтобы оба агента использовали один алгоритм для работы с файлами вы можете освновной алгоритм - перенести в библиотеку. И эту библиотку подключать в обоих агентах. Тогда во втором агенте вам нужно просто добавить немного ui-класс для работы и все.

----

Ссудя по алгоритму вам ws - особо и не нужен в агенте так что можно просто его выбрасить. и все должно работать и без этой строки
0
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
17.10.2019, 13:08  [ТС] 7
Ага, работает, но теперь не может сохранить файл начиная с этого куска:
Код
.................
		Forall o In rtitem.EmbeddedObjects
			oname = strOutputFolder + o.name
			Call o.ExtractFile( oname )
			AttachmentCount = AttachmentCount + 1
		End Forall
.................
AMgr: Agent (Save attach' in 'mail\test.nsf') error message: Notes error: File cannot be created (D:\folder\table.xlsx)
0
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
17.10.2019, 20:19 8
Насколько я помню агент по умолчанию не имеет полных прав для выполнения системных операция в том числе с файловой системой. создание файлов и т.д.
т.е ему нужно отдельно разрешить выполнять системные операции в свойствах агента есть галочка разрешить (м скриншот )
0
Миниатюры
Ошибка агента по расписанию  
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
17.10.2019, 21:58  [ТС] 9
Эту галку я поставил первым делом. В чем то другом дело...
У тебя есть возможность у себя скрипт проверить?
0
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
18.10.2019, 06:57 10
Могу попробовать. черкну по результату.
0
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
18.10.2019, 12:15  [ТС] 11
Спасибо, буду ждать результата
0
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
18.10.2019, 19:31 12
Стал проверять обнаружил чт у меня после обновления до 10 клиент некорректно работают некоторые методы lotusScript.
В частности не возвращает результат rtitem.EmbeddedObjects. Поэтому на Windows не получилось проверить.
Сейчас не очень охота возиться с этим. Так с ходу не получилось проверить.

Клиент под linux у меня отработал все нормально. Но это не показатель т.к. в Linux там возможно что-то урезано в плане безопаснти

я проверял на эжтом куске

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim coll As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim eo As NotesEmbeddedObject
    
    Dim AttachmentCount As Integer
    AttachmentCount = 0
    Set db = session.CurrentDatabase
    Set coll = db.UnprocessedDocuments
    
    Print "Документов для обработки ", coll.count
    
    Dim a As Integer
    Dim oname As String
    For a=1 To coll.count
        Print "Документ ",a 
        Set doc = coll.GetNthDocument(a)     
        
        Dim rtitem As Variant
        Set rtitem = doc.GetFirstItem("Body")     
        Dim attachfile As Variant 'вложенный файл
        
        Dim n As Integer
        For n=Lbound(rtitem.embeddedobjects) To Ubound(rtitem.embeddedobjects) 'перебор объектов
            Set attachfile = rtitem.embeddedobjects(n)
            If Isobject(attachfile) Then
                If ( attachfile.type = 1454 ) Then 'attachment
                    Dim extractfile As String
                    Print "извлечь файл " & Cstr(attachfile.name)
                    Call attachfile.extractfile(  "c:\folder\" & Cstr(attachfile.name) )
                End If
            End If
        Next
    Next
    
End Sub
0
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
19.10.2019, 00:03  [ТС] 13
Уже под вечер запустил скрипт в ручном режиме зайдя в тот ящик из под админки и получил аналогичную ошибку: File cannot be created. Я правильно понимаю что скрипт ручного запуска должен запуститься только из клиента того ящика и только если его запускает хозяин ящика. Даже если разрешения на 3 точке стоит.
В понедельник проверю твой вариант.
0
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
21.10.2019, 09:27  [ТС] 14
Хм... получил аналогичную ошибку. Где то что то не дописал похоже (
0
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
21.10.2019, 17:28 15
Насколько я понял (из первого поста) агент раньше работал когда вы его вручную запускали. Если сечас не отрабатывает, то что поменялось ?
0
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
21.10.2019, 20:47  [ТС] 16
Не не. В ручную он как работал так и работает. Некорректно высказался. Я имел ввиду что если этот скрипт запустить из админского интерфейса он не отработает. А только с того клиента что установлен на сервере.
0
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
22.10.2019, 06:57 17
А как вы его на сервере по расписанию запускаете ? У вас клиент Lotus все время запущен на сервере ?
Попробуйте запутсить этот агент с любой другой рабочей станции Lotus - даже можно вручную и посмотреть сработает ли?
В принипе можно и на другой станции попробовать запустить по расписанию.

Точно убедиться что дело в агенте.
0
svtv89
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 35
22.10.2019, 09:23  [ТС] 18
Да. Клиент всегда запущен, но не на сервере Лотуса. На обычном сервере в чью папку он и должен сохранять.
Запустил с другой станции в ручную агента. Сохраняет на ту станцию откуда его запускаю.
0
Alex Ivanov
261 / 53 / 29
Регистрация: 02.02.2013
Сообщений: 218
22.10.2019, 20:44 19
А если просто попробоват агенит с одной единствренной строкчнкой для создания файла ? на диске т.е упросить агент до простого чтобы понят в како операторе проблмагне ?
0
22.10.2019, 20:44
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2019, 20:44

Ошибка агента.
Добрый день! Есть ошибка в написании агента, как её отловить? Агент работает по времени. После его...

Проблема запуска Агента из агента!
Доброго времени суток! Ситуация такова запускю агента из другого агента, при запуске в строке...

Переодическая ошибка при выполнении агента
Всем доброго дня. Есть несколько агентов, запукаемых по рассписанию 1 раз в день. Иногда,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.