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

На википедии написано:
Bpm'online has been developed using Microsoft .Net architecture in combination with AJAX and HTML. Combined with RESTful APIs, it provides developers with a well-constructed SaaS architecture.

Есть ли где-нибудь задокументированный REST API? Всё, что я смог с большим трудом найти, это вот эта страница:
http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/RequestAuth...

Нравится

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

Здравствуйте!
Система поддерживает интеграцию через Odata.
Детальнее можно прочитать тут: http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/Integratio…
Это в той же ветке, что и ваша ссылка. Вот ссылка на корень ветки, посвященной интеграциям: http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/Integratio…

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

Не поверите :) Сейчас как раз в процессе перевода на новый движок. Планируем за 1,5-2 мес обновиться. Так что релиз 7.8 будет с новой Академией.

Кстати, если есть еще пожелания по Академии - тут их тоже можно писать.

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

Актальная документация доступна по ссылке https://academy.terrasoft.ru/documents/technic-sdk/7-12/integraciya-s-s…

Из этой документации абсолютно непонятно каким образом делать добавление заказа? какой использовать SchemaRoot? Какие поля передавать? Хотелось бы получить ответы на эти вопросы.

Это не «документация по добавлению заказа», а информация для разработчиков по разработке интеграции с другими системами. Названия таблиц и их полей можно увидеть в разделе «Конфигурация», открыв нужную схему. Заказы хранятся в таблице «Order».

Как делать вставку записи в таблицу, описано тут на примере контактов.

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

Работать с COM, web service из кода событий карточек можно? Если можно, напишите пожалуйста где пример посмотреть.

Нравится

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

Добрый день.

Можно...
С СOM все просто - просто создаете ActiveX компонент:

var myComObj = new ActiveX('Excel.Application');

По веб. сервисам - запросы можно отправлять(получать) через соответствующий COM:

var webAddress = 'http://bank.gov.ua/control/uk/index';
var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.6.0");
xmlHttpReq.open("GET", webAddress, false);         
xmlHttpReq.send();

http://www.community.terrasoft.ru/blogs/8935

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

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

Работать с Web-сервисами из сторонних приложений можно двумя способами, все зависит от цели использования и конкретного языка программирования:
1. Работа через COM-объекты Terrasoft
2. Работа с Web-сервисами напрямую

Работа через COM-объекты

Первый вариант наименее трудоемкий и более удобный, но требует, чтобы на клиентской машине были зарегистрированы библиотеки Terrasoft (для использования COM-объектов). При этом вся работа с Web-сервисами будет выполняться COM-объектами Terrasoft, предоставляя доступ к данным и объектам через объектную модель платформы Terrasoft: IDataset, ISelectQuery и т.д.

Для подключения программно нужно выполнить следующий код (пример на Jscript, но это можно реализовать на любом языке, который работает с COM-объектами):

 

         // Создание экземпляров COM-объектов Connector и Configuration
         WSConnector = new ActiveXObject('TSDskObjectLibrary.DskConnector');      // Для версий 3.4.0+ объект создается ActiveXObject('TSObjectLibrary.Connector')
         var WSConfiguration = new ActiveXObject('TSObjectLibrary.Configuration');  
         WSConfiguration.DBExecutorTypeCode = 'WebServices';

         // Кэшироование созданного соединения
         Connector.Attributes('WSConnector') = WSConnector;

         // Установка строки соедения и название конфигурации настроенной на сервере
         WSConfiguration.SetConnectionString(
                   '"URL=http://192.168.227.128/TSWebServicesServerLibrary.dll/soap/IServer"' +
                   ',"ConfigurationName=Dev332"');

         // Открытие конфигурации
         var IsConnected = WSConnector.OpenConfiguration(
                   WSConfiguration,
                   1,           // Тип аутентификации: 0 - Windows Authentication, 1 - Server
                   'ddd',       // Имя пользователя
                   '');         // Пароль

 

После успешного подключения можем обращаться к любым объектам, получать данные и т.д. Например получение данных о контрагентах:

 

         // Получение сервиса ds_Account из коннектора к веб-сервисам
         var AccountDataset = WSConnector.Services.GetSingleItemByUSI('ds_Account');
         
         // Подготовка датасета: закрытие и очистка фильтров
         AccountDataset.Close();
         EnableDatasetFilters(AccountDataset, false);
         
         // Наложение фильтра по ID текущей записи
         ApplyDatasetFilter(AccountDataset, 'ID', dlData.Dataset('ID'), true);
         
         // Открытие датасета
         AccountDataset.Open();
         
         // Считывание данных
         if (AccountDataset.IsEOF) {
                   var Value = '(нет данных)';
                   edtWSName.Value = Value;
                   edtWSOfficialName.Value = Value;
                   edtWSCode.Value = Value;
         } else {
                   edtWSName.Value = AccountDataset.ValAsStr('Name');
                   edtWSOfficialName.Value = AccountDataset.ValAsStr('OfficialAccountName');
                   edtWSCode.Value = AccountDataset.ValAsStr('Code');  
         }
         
         // Закрытие датасета
         AccountDataset.Close();

 

Во вложении полный пример работы с Web-сервисами на Jscript, используя COM-объекты.

Работа с Web-сервисами напрямую

Этот тип работы сложнее, т.к. все запросы к Web-сервисам нужно посылать самостоятельно, а также самому обрабатывать ответ от сервера. При этом не используются COM-объекты Terrasoft, соответственно не нужно устанавливать и регистрировать библиотеки Terrasoft на каждом клиентском компьютере, откуда будут запрашиваться веб-сервисы.

Запросы Web-сервисам можно отправлять исходя из их интерфейса (WSDL) – описания всех методов с параметрами.

Для упрощенной разработки программ для работы с Web-сервисами в некоторых IDE, например Visual Studio, предусмотрен импорт WSDL (Add WebService Reference), при этом сама IDE генерирует оберточные классы для работы с Web-сервисами. Вызывая методы такого класса вы будете упрощенно вызывать соответствующие методы веб-сервиса.

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

Пример на C# :

// Создание клиента Web-сервиса
        ws.IServer sc = new ws.ServerClient(); // ws.IServer – оберточный класс для работы с Web-сервисами Terrasoft
        ws.OpenConfigurationRequest rqOpenConfiguration = new ws.OpenConfigurationRequest(); // Запросы для открытия конфигурации
        ws.OpenConfigurationResponse rsOpenConfiguration = new ws.OpenConfigurationResponse();

// Открытие конфигурации
rqOpenConfiguration.ACompressionLevel = 0; //Without compression (zip)            
         rqOpenConfiguration.AConfigurationName = Configuration;
         rqOpenConfiguration.ADBExecutorTypeCode = "MSSQL";
         rqOpenConfiguration.AUserName = UserName;
         rqOpenConfiguration.AUserPassword = Password;
         rsOpenConfiguration = sc.OpenConfiguration(rqOpenConfiguration);

 

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

Во вложении полный пример работы с Web-сервисами на C#.

Отдельное спасибо Александру Кравчуку за предоставленные примеры.

Приятной разработки:)

Нравится

Поделиться

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

Александр, здравствуйте.

Подскажите:
1) Доступна ли настройка веб сервиса на версии Terrasoft CRM 3.3.2.X ?
2) Приходилось ли применять какой то из способов на практике?

Здравствуйте, Анна!

1. Возможность настройки веб-сервиса на версии Terrasoft CRM 3.3.2 доступна.
2. Приведенные примеры взяты с реальных практических решений.

Простите, а нельзя ли прислать на почту neveryes@bk.ru полный пример работы с Web-сервисами на C#.

Потому что вложения как такового нет((

и на почту qart2003@gmail.com 

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

Вложения можно скачать тут и тут. Обратите внимание, это всё о Terrasoft 3.Х.

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