Работа с профильным документом в почте

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
107
#1
Добрый день!

Стоит следующая задача, в самописную БД вносим данные об отсутствии сотрудника (отпуск, командировка).

Вот есть спецзаказ, чтобы после внесения этих данных в почте указанного сотрудника включался агент "Нет на работе" с заданными параметрами, те период отсутствия, причина и произвольный текст ( типа к кому обращаться и проч).

Итак есть агнет, который:
- вносит в профильный документ "OutOfOfficeProfile" в ПЯ пользователя нужные данные
- включает агент OutOfOffice

А вот результата нет. Те не формируются автоматические сообщения о том, что сотрудника нет на месте.

Хотя если зайти в ПЯ сотрудника под его именм и выбрать Сервис-Нет на работе, там будут те параметры, что пересены из первой БД
и в журнале агента видно что он отработал.

Куда бы покопать?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#2
покопать в логах, скорее всего агент OOO не отрабатывает по причине отсутствия прав на запуск агентов на сервере...
у пользователя, который его включает должно быть такое право...
 

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
107
#3
покопать в логах, скорее всего агент OOO не отрабатывает по причине отсутствия прав на запуск агентов на сервере...
у пользователя, который его включает должно быть такое право...
в типичной ситауции этот агент включает сам пользователь (владелец почтового ящика). В данном случае агент включаю я в скрипте своего агента
Код:
Set AgentOOO = DBMail.GetAgent("OutOfOffice" )
AgentOOO.IsEnabled =True
Call agentOOO.Save
,
запуск в агенте стоит от имени сервера. В дизайнере я вижу, что агент включился, подписан сервером, выполняется от имени сервера.
Прав (на первый взгляд достаточно). Агент отрабатывает, ошибка не выдается, но и результата нет.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#4
в таком случае, нужно ковырять сам агент...
или добавлять в него свои принты, или удаленный дебагер настраивать...
там один класс, в самом агенте, думаю особой сложности разобраться не составит...
посмотрите метод Run(), он использует два метода для проверок AgentOKToRun() и DocumentOK(), думаю, что, если ошибок исполнения нет, то есть логические ошибки, которые выявляются этими функциями... (это поверхностная оценка)
 

Constantin A Chervonenko

Well-Known Member
Lotus team
#5
Нынче, с стандартном ПЯ агент OutOfOffice включается с пом. AdminRequest-а. Это позволяет урезать юзеру права (иначе ему Designer нужен) и не заморачиваться с его правами на фоновые процессы
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#6
"нынче" это в какой версии-то? :)
имхо, вообще, дурновато реализована эта функция...
 

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
107
#8
Действительно, если пользователь сам запускает агент "нет на работе", это делается через AdminRequest.

В данном случае, я запускаю агент в БД пользователя своим скриптом. Кстати, удалось, наконец-то запустить агент, но выяснилось, что он работает по расписанию раз в 6 часов. Для нас это СЛИШКОМ большой период. Так пока еще до конца и не разобралась как это все работает.

Но поменять расписание работы агента можно только в дизайнере, а нам нежелательно менять шаблон почтовой БД.

Чтобы еще такого придумать, а? :blink:
 

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
107
#9
Чтобы еще такого придумать, а? :rolleyes:
А если я из своей БД с отпусками буду проходить по почтовым ящикам отсутствующих пользователей, как мне можно оптимизировать поиск новых документов (от выбранной точки времени) в этих БД, чтобы не перелопачивать все документы базы?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#10
сдуреешь :rolleyes: и вообще, это не совсем верно - лазять по ящикам пользователей...

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

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
107
#11
сдуреешь :rolleyes: и вообще, это не совсем верно - лазять по ящикам пользователей...

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

а правило, в вашем случае кто должен создавать? те все равно пройтись по ящикам пользователей и что-то там "поправить". Да и с правилами вечно какие-нибудь проблемы
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#12
пока не замечал проблем с правилами :rolleyes:
правило - обычный док, его легче запулить в почт.ящик единожды, чем рыться в них постоянно...
но, это лишь как вариант...
 

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
107
#13
пока не замечал проблем с правилами :)
правило - обычный док, его легче запулить в почт.ящик единожды, чем рыться в них постоянно...
но, это лишь как вариант...
А ты зайди в раздел Администрирования, увидишь, что на проблемы с правилами народ так или иначе натыкается.
Во-первых понятно, что я не буду перелопачивать ящики всех пользователей, а только тех, по которым есть документ отсутствия, и обрабатывать только новые письма тоже получилось.
Лучшего мне тоже пока никто не предложил. Если бы стандартный агент не работал с периодом в 6 часов, я бы просто его включала и выключала, так было бы лучше.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#14
чесно говоря, я не вижу проблемы, чтобы изменить время срабатывания ООО :)
на сколько мне известно, ИБМ не запрещает этого делать...
а шаблончик тоже не очень-то часто обновляется...
поэтому, правильное документирование изменений - залог успеха Вашей ИТ-структуры ;)
 

Constantin A Chervonenko

Well-Known Member
Lotus team
#15
.. как мне можно оптимизировать поиск новых документов (от выбранной точки времени) в этих БД, чтобы не перелопачивать все документы базы?
См. Второй параметр метода db.Search
 

Кирилл Шваб

Well-Known Member
30.06.2006
145
4
#16
Да уж, Out Of Office в Лотусе реализован действительно странно.

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

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

Включить/выключить такой агент тоже не составит труда, потому для меня загадка зачем они так реализовали функционал OOO. Если кто раскроет сию великую тайну, то буду очень рад. :)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#17
видать, по логике ИБМа, если человек не отвечает целый день, то не понятно, есть ли он на работе вообще или все-таки нет :)
а вообще, видать, таким образом решили умерить нагрузку на почтовый сервер...
ну, а включить/выключить то тут как бы понятно, если бы у всех этот агент был бы включен и запускался бы, чтобы проверять наличие флага в настройках, то почтовый сервер почти только и занимался бы проверкой настроек почтовых баз :)
 

Кирилл Шваб

Well-Known Member
30.06.2006
145
4
#18
Не думаю что даже в большой компании, это сразу сильно загрузит сервер. В конце концов обмениваться письмами - одна из основных задач Лотусового сервера. ;-)

А ежели и загрузит, то извольте купить сервер помощнее/построить кластер раз уж вы пользуетесь программным продуктом, который того требует. :)

Кстати, кто как в итоге решал эту задачу (Out Of Office)? Мы просто время срабатывания агента подправили, чтобы он почаще срабатывал (уж очень не хотелось велосипед заново изобретать). Но все равно остается немного ограничений (вроде если человек на 1 день уезжает).
 

Constantin A Chervonenko

Well-Known Member
Lotus team
#19
пока не замечал проблем с правилами :)
правило - обычный док, ..
"Фигушки! Я плотоядная!!"(с)

Обычный док никому кроме юзера не нужен. Роутер-же юзает откомпилированные формулы, записанные в profile.
"Синхронизация" текста правил и откомпилированных формул делается юзером через UI, т.е. периодически отваливается.
Отсюда и проблемы