Здравствуйте! С помощью веб-сервиса осуществляется запуск БП. По логике БП, необходимо открытие карточки контакта. При запуске процесса через веб-сервис, карточка не открывается, но если запустить процесс из BPM, то все работает корректно. Помогите разобраться!

Нравится

22 комментария

Эмин,

Работа с визуальными элементами при запущенном с помощью веб-сервиса процессе будет возможна только в 7.х, доработка в планах.
На 5.х она спускаться не будет, ввиду больших трудозатрат на адаптацию.

"Maxim Gritsenko" написал:

Эмин,

Работа с визуальными элементами при запущенном с помощью веб-сервиса процессе будет возможна только в 7.х, доработка в планах.

На 5.х она спускаться не будет, ввиду больших трудозатрат на адаптацию.


Тогда подскажите, пожалуйста, как можно реализовать работу с визуальными элементами в BPM 5.4 по сигналу из другого приложения без использования веб-сервиса?
И еще вопрос. Возможен ли следующий алгоритм?
Процесс 1 создает запись о контакте в базе через EntitySchemaQuery при запуске по веб-сервис
Процесс 2 подписан на событие создание контакта с условием, и если условие совпадает, то открывается карточка созданного контакта.
Как нужно добавлять запись в БД, чтобы был запущен процесс по событию?

Эмин,

Риквест процессу2 приходит не от страницы, соотв. нет страницы и рендерить некуда, поэтому никак не получится вызвать визуальный элемент "извне".
Максимум, как можно известить пользователя - это установить ему задачу в расписание.

"Maxim Gritsenko" написал:
Максимум, как можно известить пользователя - это установить ему задачу в расписание.

Хорошо, а возможно прописаться на вызов функции, которая проверяет задачи в расписании и расширить ее функционал, или добавить вызов своей функции?

В процессе страницы MainPage, в PageLoadCOmpleteScriptTask собирается js скрипт по обновлению счетчиков уведомлений. Можете вклиниться в этот процесс и добавить, извещение пользователя по выполнению каких-либо условий.

"Maxim Gritsenko" написал:

В процессе страницы MainPage, в PageLoadCOmpleteScriptTask собирается js скрипт по обновлению счетчиков уведомлений. Можете вклиниться в этот процесс и добавить, извещение пользователя по выполнению каких-либо условий.


Огромное спасибо! Подскажите пожалуйста, как нужно добавить код, который будет затем вызван ajax'ом из javascript'a

Я условие создавал на c# - больше возможностей. А потом просто собирал строку с кодом и вставлял в переменную со скриптом.

"Maxim Gritsenko" написал:

Я условие создавал на c# - больше возможностей. А потом просто собирал строку с кодом и вставлял в переменную со скриптом.


Немного не то)
Опишу ситуацию подробнее. По веб-сервису запускается процесс, который сохраняет задачу и связывает ее с контактом и ответственным. Теперь для пользователя необходимо открыть карточку задачи. Мы выяснили, что визуализация процессов через веб-сервис не возможна.
И появилась следующая идея, дописаться в яваскрипт на MainPage, и каждые n сек вызывать метод, а уже данный метод будет запускать процесс, который найдет новую задачу для пользователя и откроет карточку этой задачи.
Возможно ли это?
Подскажите, пожалуйста, как правильно добавить такой метод, чтобы затем вызвать его из яваскрипта по ajax

В 5.х нет таймера, так что раз в n секунд не получится. PageLoadComplete мейнпейджа отрабатывает при его загрузке, то есть, при переходе между разделами. Вызвать процесс из карточки, который сумеет отобразить визуальный элемент можно так:

var manager = UserConnection.ProcessSchemaManager;
var processSchema = manager.GetInstanceByName("MyProcess");
var process = processSchema.CreateProcess(UserConnection);
process.Execute(Page.UserConnection);

Так что получится уведомлять активных пользователей, которые "ходят" по системе.

"Maxim Gritsenko" написал:

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

...

Так что получится уведомлять активных пользователей, которые "ходят" по системе.


Спасибо!
В javascript коде, который добавляется на PageLoadComplete есть функция checkRemindingExists() и функция setInterval (checkRemindingExists, " + remindingsCheckInterval + @");
Как я понимаю, данные функции осуществляют проверку напоминаний по интервалу. Мне по аналогии необходимо запустить БП из javascript. Как я могу это сделать?

Эмин,

Нашел такую штуку:

Из клиентского кода можно отправить сообщение в процесс страницы:

window.Terrasoft.AjaxMethods.ThrowClientEvent(processUId, message);

В процессе можно создать событийный подпроцесс, в нем начальное сообщение и задание-сценарий, в котором вызов бизнес процесса:

var manager = UserConnection.ProcessSchemaManager;
var processSchema = manager.GetInstanceByName("MyProcess");
var process = processSchema.CreateProcess(UserConnection);
process.Execute(Page.UserConnection);

На PageLoadComplete в ScriptManager передавать вызов своей функции с интервалом вызова:

По идее, это то, что вам нужно. Но, мне кажется, открывать окна юзерам - не лучшая практика.

Спасибо огромное! Все работает!
P.S. Не все обращают внимание на колокольчик, а если там уже были какие-то цифры, то иногда не очевидно поступила новая задача или нет. А окно привлечет внимание.

Вам решать =)

"Maxim Gritsenko" написал:

Добрый день, Максим!
Подскажите пожалуйста где в BPMOnline 7.X осуществляется обновление счетчика уведомлений. Насколько я понял, страница MainPage теперь не осуществляет данный функционал (там закомментирован js-код для счетчика)

Также вы писали, что в 7.X планируется открытие страницы через веб-сервис. Реализован ли данный функционал в 7.1. Если да, то как его можно прмиенить. Т.к. при открытие карточки в БП, который запускается по веб-сервису, БП отрабатывает, но страница не открывается.

Здравствуйте, Эмин.

В 7.x расчет счетчика уведомлений действительно изменился. Стало немного запутанней, но работает быстрее.
Теперь это представление в БД (VwRemindingsCount), которое хранит данные по уведомлениям. Из модуля панельки (LeftPanelTopMenuModule) отправляется запрос сервису напоминаний (RemindingService), который запускает процесс (GetRemindingCounters) выполняющий выборку из представления раз в минуту и передающий ответным запросом модулю панельки, который подписан на сообщения от этого процесса и получив сообщение обновляет счетчик.

По открытию страницы через веб-сервис ориентировок нет, это не приоритетная задача и в спринтах разработчиков я ее пока вообще не вижу.

"Maxim Gritsenko" написал:

Здравствуйте, Эмин.

В 7.x расчет счетчика уведомлений действительно изменился. Стало немного запутанней, но работает быстрее.

Теперь это представление в БД (VwRemindingsCount), которое хранит данные по уведомлениям. Из модуля панельки (LeftPanelTopMenuModule) отправляется запрос сервису напоминаний (RemindingService), который запускает процесс (GetRemindingCounters) выполняющий выборку из представления раз в минуту и передающий ответным запросом модулю панельки, который подписан на сообщения от этого процесса и получив сообщение обновляет счетчик.


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

Из процесса открыть в новой вкладке/окне не выйдет. Можно попробовать открыть страницу, которая при загрузке открывает страницу активности в новой вкладке. Правда, пахнет костылем.
Или можно переопределить модуль панельки, чтобы он при получении сообщения кроме изменения счетчика еще и открывал страницу активности в новой вкладке. Но это тоже костыль, потому что при накатке обновлений они не доедут на переопределенный модуль.

"Maxim Gritsenko" написал:

Из процесса открыть в новой вкладке/окне не выйдет. Можно попробовать открыть страницу, которая при загрузке открывает страницу активности в новой вкладке. Правда, пахнет костылем.

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


Я так понимаю, что при переопределении модуля необходимо полностью перенести код из базового LeftPanelTopMenuModule в новый. Все перенес, но не могу добавить Images(где хранятся картинки этих иконок?)
Возможно ли уменьшить время запуска счетчика активностей?

Перенести код и использовать свои локализированные строки/изображения. Изображения хранятся в файлах ресурсов, так что, скорее всего, придется нарезать собственные.

"Maxim Gritsenko" написал:

Перенести код и использовать свои локализированные строки/изображения. Изображения хранятся в файлах ресурсов, так что, скорее всего, придется нарезать собственные.


Спасибо за помощь, Максим!

Подскажите, КАК запустить процесс по веб-сервису.

Акмаль, вот ссылка на статью в SDK:
http://www.terrasoft.ru/bpmonlinesdk/WorkWithBpmByWebServices.html

Показать все комментарии

Коллеги!

Очень срочно! Очень важно!

Не получается организовать вызов веб-сервиса аутентификации BPMonline из 1С 7.7.

Поделитесь, пожалуйста, примером такого вызова.

Заранее спасибо!

Нравится

1 комментарий

Здравствуйте.

Посмотрите, пожалуйста, эту тему:

http://www.community.terrasoft.ru/forum/topic/9613

В ней рассматривается обращение к OData сервису из 1С.

Показать все комментарии

Добрый день, коллеги!
Есть BPMOnline On-Demand с простым бизнес процессом который вставляет новый Лид.
Этот бизнес процесс вызывается поверх http с web-портала.
В общем виде, получается пара запросов:

// 1. Авторизация
HttpWebRequest.Create("https://....bpmonline.com/ServiceModel/AuthService.svc/Login?...");
...
// 2. Вызов бизнес процесса
HttpWebRequest.Create("https://....bpmonline.com/1/ServiceModel/ProcessEngineService.svc/ImportExternalLeadProcess/Execute?...");

Столкнулся с проблемой плохой производительности такого решения.
Запрос на авторизацию [1] выполняется стабильно за ~0.5c, а вот вызов БП [2] в первый раз после длительного перерыва (несколько часов) может выполняться 20-30с. При этом все последующие запросы отрабатывают все за те же стабильные ~0.5c.

С чем может быть связана такая деградация производительности?
Возможно есть настройка решающая проблему или есть путь обойти ее?

Нравится

7 комментариев

В IIS по умолчанию для пула приложений идет таймаут простоя (idleTimeout) 20 минут
Через 20 минут IIS завершит выполнение рабочего процесса (если к нему нету других обращений), и при следующем обращении IIS будет повторно создавать рабочий процесс.
Возможно, вам подойдет увеличить таймаут простоя до большего значения (настройка Пула приложений->Advanced settings->Idle timeout (minutes))

Здравствуйте.

При длительном отсутствии обращений к серверу ( 20 минут), сервер переходит в «спящий» режим (Idle). В этом режиме сбрасываются все кэши сервера, а также очищается память от выполненных запросов. При первом запросе сервер переходит в режим Normal (это занимает некоторое время).
2) При первом обращении к разделу или первое открытие карточки, после перехода сервера из режима Idle в режим Normal, приложение обращается к базе данных за необходимыми ресурсами и создает экземпляры классов для страницы, которые в результате сохраняются в кэш (это занимает приблизительно 7 сек. на сервере). При повторном обращении к уже закэшированной странице, она откроется за нормальное время (порядка 2,5-3 секунд), так как большинство необходимых данных берутся из кэша.

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

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

Сообщите название Вашего сайта с приложением (можно в личку) - мы увеличим для Вас таймаут.

Добрый день!
Спасибо большое за разъяснение. Я что-то подобное предполагал.
Увеличьте пожалуйста таймаут до 24 часов для extrimassistance.bpmonline.com

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

Дмитрий, здравствуйте.
Завтра (29.01.2013) в течении дня сайт будет свободен, можно провести необходимые работы.
Спасибо.

Валерий, хорошой.

Сообщу Вам дополнительно после внесения изменений.

Готово.

Показать все комментарии

Добрый день, коллеги!

Хотелось бы узнать, насколько безопасно развертывание веб-сервиса Terrasoft наружу в интернет? Есть ли где в свободном доступе описание используемых механизмов защиты, проводился ли анализ защищенности, отнесение к тому или иному классу безопасности?

Спасибо

Нравится

4 комментария

Добрый день!
Оценка безопасности web-сервисов зависит исключительно от уровня безопасности, предоставляемого выбранным web-сервером (IIS, Apache), так как именно им обеспечивается шифрование передаваемых пакетов и т.д. В случае, если Вы хотите использовать шифрование данных - Вам необходимо настроить для web-сервисов SSL соединение по протоколу https.
Более подробно о настройке SSL соединения Вы можете прочитать в руководстве администратора, которое доступно по следующей ссылке:
http://training.terrasoft.ru/sites/default/files/document/TS_AG_3.3.2.pdf

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

"Карло Сергей" написал:Например, VPN использовать предпочтительнее.

а как можно ВПН использовать, настроить?

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

В частности, при настройке VPN-сервера на Windows XP и Windows 7 Вы можете опираться на прикрепленные документы. Данные руководства являются наиболее упрощенными примерами настройки.

Показать все комментарии