5.x
бизнес-процесс
веб-сервис
Технические вопросы

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

Показать все комментарии
1C 7.7
веб-сервис
Технические вопросы
5.x

Коллеги!

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

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

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

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

Нравится

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

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

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

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

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

Показать все комментарии
web service
web-service
бизнес-процесс
веб сервис
веб-сервис
веб-сервисы
Технические вопросы
5.x

Добрый день, коллеги!
Есть 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) в течении дня сайт будет свободен, можно провести необходимые работы.
Спасибо.

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

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

Готово.

Показать все комментарии
WS
безопасность
веб-сервис
Установка и Администрирование
Разработка

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

Хотелось бы узнать, насколько безопасно развертывание веб-сервиса 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 Вы можете опираться на прикрепленные документы. Данные руководства являются наиболее упрощенными примерами настройки.

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