Поделитесь опытом работы с распределёнкой

Тема в разделе "Lotus - Программирование", создана пользователем Gor, 27 фев 2010.

  1. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Всем доброго времени суток.

    К сожалению имею достаточно скудный опыт разработки приложений в распределённых Лотусовых системах (много Лотусовых серверов, разбросанных территориально по стране, миру)), имеющих свои схемы репликации итд итп). Всё таки видимо больше это касается систем электронного документооборота.
    Наверняка при разработке таких приложений (нежели локальных в рамках одной организации без многофиллиальной сети) есть свои особенности написания, часто возникающие проблемы, задачи, которые вы решаете и которые просто НЕ могут возникнуть в локальных приложениях...
    Дабы не натыкаться всем на одни и теже грабли предлагаю здесь постить подобную инфу. Возможно, такая тема многим будет интересна, ну а если она уже поднималась ткните меня туда носом))

    Чтобы было понятней о чём я говорю, предлагаю подобный пример:

    Территориально распределённая Лотусовая сеть, много серверов. Используется система Документооборота на базе ЛН, корпоративная почта ЛН.
    Есть электронная заявка с этапами подписания, на каждом этапе должен подписать определённый сотрудник. Право на подписание документа должно передаватся
    только тогда, когда заявка находится у текущего подписанта, т.е. в момент утверждения прошлым подписантом, соответственно в момент утверждения формируется почтовое уведомление следующему подписанту.

    Подписанты:

    1этап - Вася (Москва)
    2этап - Коля (Ташкент)

    Репликация между Москвой и Ташкентом предположим каждые два часа, а почта уходит сразу же.

    Итак, как только Вася одобрил заявку, Коля получил почтовое уведомление о том что ему пришёл новый документ на одобрение, НО
    как только он пытается его открыть система ругается что прав на редактирование у него нет, т.к. Лотусовые базы ещё не среплицировались.

    Задача немного абстрактная, ноя думаю общий смысл ясен)

    Как вы решаете/либы подобную проблему???

    Ну а если тема не интересна или желания нет можно закрыть мой топик после ответа на вопрос =)
     
  2. Klido

    Klido Гость

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

    Добавлено: Gor
    http://codeby.net/forum/threads/33879.html

    :)
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В конце уведомления дописываю что-то вроде "Примечание: если документ не доступен, значит он ещё не реплицировался на Ваш сервер. Репликация производится раз в два часа".
    Пытались меня было наклонить, чтоб уведомления рассылались только после репликации, но удалось убедить руководство, что овчинка выделки не стоит.
     
  4. Klido

    Klido Гость

    тебе повезло :)

    овчика стоит выделки....
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Ежели не секрет — как? Но чтоб без сильных извратов.
     
  6. Klido

    Klido Гость

    nvy
    я ж написал - тупо агент по новым/измененным на каждом серваке - прошла репликация - послали уведомление тем, кто на этом серваке живет...
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Вводная: база нормативной документации, при утверждении документа должна идти рассылка заинтересованным лицам, например, группе "Руководители филиалов". В поле адреса — группа, члены группы раскиданы по разным серверам. Как быть?
     
  8. Кирилл Шваб

    Кирилл Шваб Well-Known Member

    Регистрация:
    30 июн 2006
    Сообщения:
    144
    Симпатии:
    4
    Gor,

    По-моему вариант когда сотрудник получает уведомление что ему надо что-то сделать, но фактически он этого не может сделать в корне неверный.

    Для пользователя все должно быть прозрачно - получил уведомление по почте, ознакомился, если от него что-то требуется - перешел по ссылке, сделал что надо. Т.е. он не должен знать о какой-то там репликации, что доступ у него будет только через какое-то время и т.д, это не его проблемы. ;-)

    Поэтому по-хорошему вам необходимо уведомлять сотрудника уже после того, как ему предоставлен доступ (как реализовать уже сказали выше).

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


    nvy,

    Можно развернуть группу до конкретных сотрудников и уведомлять каждого после того как данные будут на его сервере.
     
  9. Klido

    Klido Гость

    именно так
    в базе - документы настроек соответствя почтовый сервак-сервак приложений ну или что-то такое...
    агент раскручивает группу и проверяет кому посылать в зависимости от сервака
     
  10. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Сложность: надо держать отдельный справочник с именами "домашних" серверов для каждого пользователя. АК не годится, т.к. в филиале м.б. БОЛЕЕ ОДНОГО сервера, СЭД - на одном, почта - на другом
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    любая хорошая система должна иметь справочник пользователей, как-то справочник организации, в котором хранится информация о должности пользователя, структуре подразделений и т.п., посему добавить туда нужные поля не составит особого труда.
    но проблема и этим может не быть решена, т.к. пользователь может работать не напрямую с сервером, а посредством репликации.
    а еще веселая задача - пользователи, которые работают не с одним сервером.
    поэтому, эта задача решается только комплексно, для каждого сотрудника/группы отдельно. поэтому и уведомление предложенное nvy весьма небесполезно, но и не решать ее совсем, конечно, минус для системы.
     
  12. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    я такую ситуацию достаточно просто разрулил:
    Все уведомления у меня не рассылаются сразу, для этого создал отдельную базу куда складываются все эти уведомления, потом агент по изменениям хватает оттуда док, и отсылает его уже как нужно(или от лица сервера или от лица того кто нажал кнопку или....) - прямая работа с mail.box:
    этой фичей я убил сразу кодло зайцев:
    1) Когда неправильно настроена почта, или отдельный почтовый сервер упал пользователь спокойно продолжает работать на том где стоит СЭД не беспокоясь об уведомлениях впринцыпе
    2) Пока зта база не среплицируется на филиал, те не получат уведомления, так как агент там не имеет доков по которым нужно делать уведомления
    3) Уникальность сообщения, агент зная кому и от кого слать может игнорить сообщения, когда к примеру тот кто нажал единственный кто и принять должен(нету у него доверенные или ио) - тем самым не слав себе
    4) Если есть другое сообщение отменяющее предыдущее по факту выполнения/ошибочного дества/просроченности то умный агент и "отозвать может" и сам из почты удалить
    5) Индивидуально настраиваемые форматы сообщения для каждого - агент знает от кого, кому, какой ключ сообщения и т.д. тем самым на лету создавая сообщение хоть для мобильника
    ......
    всё остальное секрета :rolleyes:
     
  13. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Но первоначальная проблема

    не решается. Т.к. среплицированность БД с уведомлениями вовсе не означает, что отреплицирована БД с документом.
     
  14. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    по документу уведомления можно проверить факт прихода документа..
    на крайняк можно запустить репликацию базы документов..
     
  15. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    TIA
    еще как решается
    эта база в списке конекшена идет последней и есть еще фора, пока агент запустится по модифайтингу
     
  16. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Согласен, но не так.

    Вот, проявляются важные детали :KillMe:
    А форы у агента нет, он запросто запустится параллельно с репликацией.
     
  17. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    агент запускается по факту нового документа, минимальный таймаут это 1 минута, расскажи как это сделать быстрее :)
     
  18. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    :) Допустим, при репликации первым пришёл новый документ и начался таймаут. Репликация пусть длится 15 мин. Агент, допустим, работает 1 мин и интервал его запуска даже 5 мин. Внимание вопрос, сколько раз за 15 мин. запустится агент? ;) Видите ли, репликация не является атомарной операцией и пока передаются документы, агенты вполне их могут обрабатывать.
     
  19. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    всё правильно, но вы забыли, что это последняя база и что агент обрабатывает запрос на документ, который УЖЕ отреплицировался а значит ссылка будет правильная на СУЩЕСТВУЮЩИЙ док
     
  20. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Бррр. Исходя из цитаты
    и контекста проблемы, я так понял, что Вы создаёте отдельный документ в БД с уведомлениями, а сам рабочий документ (у которого по задаче меняется доступ) реплицируется в своей БД. Агент обрабатывает документы в БД с уведомлениями и формирует уже почтовые уведомления в mail.box. Почтовые уведомления имеют ссылки на рабочие документы, через которые пользователь и открывает рабочий документ. Так?
     
Загрузка...

Поделиться этой страницей