Связь сервера и клиента Lotus

Тема в разделе "Lotus - Программирование", создана пользователем D400, 29 апр 2009.

  1. D400

    D400 Гость

    Всем доброго времени суток.
    С лотусом начал работать недавно, а потому возник такой вопрос:
    существует ли возможность отправки сообщений с сервера Domino (например из агента) определенному клиенту и получения от него ответа? Если да, то как ее можно реализовать средствами Java.

    На всякий случай, краткое описание прикладной задачи:

    Аген на сервере должен вывести на клиенте форму для запроса данных, после чего получить и обработать ответ пользователя. Желательно все сделать на Java. В крайнем случае Lotus Script.

    Спасибо всем, кто откликнется
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    мы говорим про http?
    вывести форму - не проблема (тока тонкости есть)
    получить ввод, с обработкой кодом (ежели не "собачьим" или JS), можно тока в агенте (вызовом его, прямым или через WebQueryOpen Доминошной формы) - тогда что java зовите, что LS
    есть сервлет мэнеджер, встроенный, но он слабенький
    можно подключить сторонний

    ежели речь про Нотус клиента - вывод формы программно исключён (без хаков), только документ Нотуса
    вызов кода возможен любой, напрямую java не вызвать, но можно через:
    аплеты (криво)
    LS2J (хэлп вам в помошь)
     
  3. Akupaka

    Akupaka А че я?.. О.о

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

    D400 Гость

    Нет речь исключительно о взаимодействии агента на сервере с агентом же или плагином на клиенте.

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

    Опрос сервера - самый крайний и неудобный вариант. Как я понимаю, в этом случае придется выделять некий буфер (например Notes document), к которому будут обращаться клиенты. При этом клиент должен будет сделать запись о том, кто он, и когда прочитал сообщение (чтобы гарантировать доставку последнего имено тому, кому надо). Но возникает следующий вопрос: а как клиент будет отсылать назад свой ответ? Через запись в тот же буфер, и серверу тоже нужно его периодически читать, или же существуют другие способы?
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Агент посылает письмо с нужной формой. На ней кнопка, которая шлет результат обратно. Обрабатываем его.
    Или я что-то не понял? :)
     
  6. D400

    D400 Гость

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Может в сторону $Alarms посмотреть?
    Типа создаёшь у человека Alarm документ, а у чела он, по идее, будет проверятся.

    А чтоб вот так в реальном времени - чёт не уверен.
    Если ещё при условии какой-то открытой базы, то реализуемо (типа таймер на PostOpen, который что-то там опрашивает), а что бы глобально во всём лотусе - :) .
     
  8. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    я не знаю ни одного сервера, который бы работал с клиентом как клиент :) тогда это сервер-сервер должен быть какой-то :)

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

    можно для каждого клиента сделать свой буфер... т.е. свой документ...

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

    объясни задачу более глобально, возможно тебе предложат подходящий вариант :)
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В реальном не будет работать. Плюс у пользователя агент может быть отрублен, тогда никакого алярмса не будет. :)
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    локальные шедульные агенты можно использовать
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Akupaka
    Которые по умолчанию отключены :)

    Кароч, делаем сторонюю тулзу, которая раз в n секунд опрашивает некую базу на предмет появления документов адресованых пользователю.
    Если находит - материт.
    Алармс - в печь.
     
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    давай подождем сначала, пока автор скажет че-то по задаче? )))
     
  13. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Akupaka, кстати, идея!
     
  14. D400

    D400 Гость

    Ага. Так вот по поводу задачи:

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

    Тут и начинаются проблемы:
    А. Как дать пользователю знать что серверный агент ждет его реакции? (Вопрос определения "нужного" пользователя тоже открыт, хотя и является второстепенным).
    Б. Как передать агенту ответ пользователя?

    Что я "нарыл" из возможных подходов:

    1. На каждом клиенте поднимается агент, опрашивающий сервер на предмет запроса. Обмен данными происходит через некую базу. Самый неэффективный и громоздкий способ, на мой взгляд.
    2. Попробовать задействовать средства самого Lotus. Например Lotus Administrator хранит у себя все открытые коннекты. Может отсылать любому из них "Broadcast message". Как он это делает? Если бы получить доступ к этим сообщениям, задачу А можно было бы считать решенной.
    3. Написать клиент-сервер на Java для реализации обмена сообщениями. Но тогда возникает вопрос В: как прикрутить java к лотусу? (влезть в его интерфейс, получать доступ его агентам, использовать его канал связи - все это пока кажется мне малореальным).

    Тем не менее, возможность отправки "Broadcast message" (п. 2) вселяет оптимизм и надежду, что хотя бы половину задачи можно будет решить изящно и средствами самого Domino. Быть может кто-то подскажет с какого конца к этим connection можно подступиться?
     
  15. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    1.Сёрверный агент не может ждать реакции пользователя, у него UI нету (и не может быть); UI - только на клиенте.
    2.Агента на сервере можно связать с клиентом ВНЕ-лотусовыми средствами (по ip к примеру). На время ожидания ответа клиента сервер (не агент) будет завешен (потенциально - навсегда)
     
  16. Akupaka

    Akupaka А че я?.. О.о

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

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

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

    это моя точка зрения :)
     
  17. D400

    D400 Гость

    Ну на самом деле изложенная здесь проблема - лишь часть большой общей задачи. Которая (задача) как раз и строится по схеме:
    Но существует необходимость получения ответа от пользователя как можно скорее. Пусть у него что-то мигает, звенит, бьет в колокола, лишь бы он побыстрее сделал то, что от него требуется. Тем более, что это действие, как правило будет сводиться к простому выбору из нескольких вариантов. Типа нажать одну из трех кнопок. Такая срочность вызвана тем, что предполагается одновременная работа большого числа (нескольких сотен) пользователей. И если дожидаться пока каждый из них проверит свою почту или зайдет в базу текущих дел, то весь процесс растянется на годы.

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

    А можно с этого момента подробнее? Как это сделать (где почитать) и, главное, что это даст? Сможет ли плагин на клиенте зарегистрировать Listener в серверном агенте? Как они вообще смогут узнать о существовании друг друга? При этом не хотелось бы полностью отвязываться от Лотуса, т.к. в нем есть и виртуальная машина, и среда выполнения java кода, да и серверные агенты тоже написаны на java.
     
  18. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Может смс-ку слать? :)
     
  19. K-Fire

    K-Fire Гость

    Гмм, а что это за мега-крупное такое предприятие, где одновременно и постоянно с докоборотом будет работать несколько сотен пользователей? Можно без имен :)
    Я честно говоря затрудняюсь себе представить такой бизнес-процесс, чтобы одновременно сотни людей должны были не отвлекаясь работать с информационной системой.

    Кстати говоря, именно поэтому, задача сама по себе кажется странной. Ну допустим пользователь создал документ, отослал его на обработку. И после этого он выключает клиент (или даже компьютер), уходит обедать, уезжает в командировку. И как при этом сервер должен от него получить какой-то ответ?

    PS. ИМХО самое простое и дешевое решение, если уж поставку задачи не изменить, это отсылать почтовые уведомления. Настройте клиенты, чтобы опрашивали почту раз в 5 минут и выдавался диалог. А пользователь уже пусть сам соображает что к чему.
     
  20. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    NotesMinder знакомая вещь? сделай такую же!
    единственный вопрос - как ее запускать.
    например, если удасться запустить из запущенного лотуса java-код, который будет сканировать раз в 60-120 сек базу с уведомлениями о задачах, то авторизация будет осуществляться еще при запуске notes, если так не удастся, то внешнее приложение, которое уже будет использовать Notes-объекты посредством COM/Java (по аналогии с COM, не знаю как правильно называется)/CORBA/WebServices, но при запуске необходимо произвести авторизацию.

    на сервере есть возможность запустить Java-код при запуске сервера с пом. RunJava Addin, можно ли аналогичным способом на клиенте запустить Java-код, я не знаю... lmike може знает :) он один из Java-лотусистов :)
     
Загрузка...
Похожие Темы - Связь сервера клиента
  1. serox
    Ответов:
    3
    Просмотров:
    1.708
  2. morkov
    Ответов:
    1
    Просмотров:
    1.570
  3. shadow288
    Ответов:
    3
    Просмотров:
    1.864
  4. nayke
    Ответов:
    60
    Просмотров:
    9.780
  5. Chron
    Ответов:
    14
    Просмотров:
    5.271

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