Доброе утро, коллеги.
Есть вопрос.
Сделал тестовый вэб-сервис , по примеру из https://community.terrasoft.ru/forum/topic/9811 , но у меня что-то не сработал.
В логах результат:
all-combined.js:462:345
.log() all-combined.js:462
.error() all-combined.js:462
.logResponseError() all-combined.js:722
.validateResponse() all-combined.js:723
.request/a.callback() all-combined.js:721
.callback() all-combined.js:1
.onComplete() all-combined.js:1
.onStateChange() all-combined.js:1
Ext.Function.bind/() all-combined.js:1
Код регистрационного сервиса:
{
using System;
using System.Collections.Generic;
using System.Security;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Web;
using Newtonsoft.Json;
using Terrasoft.Common;
using Terrasoft.Web.Common;
using Terrasoft.Configuration.RegistrationHelper;
using Terrasoft.Core;
using Terrasoft.Core.Configuration;
using Terrasoft.Core.DB;
using Terrasoft.Core.Scheduler;
using System.CodeDom.Compiler;
using System.ServiceModel;
using System.ServiceModel.Web;
using Terrasoft.Core.Entities;
using Terrasoft.Core.Store;
using System.Data;
using System.Collections.Generic;
#region Class: RegistrationService
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class RegistrationService{
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public string TestServiceMethod(string data) {
var userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];
string key = string.Format("ExportFilterKey_{0}", Guid.NewGuid());
userConnection.SessionData[key] = data;
return key;
}
}
#endregion
}
код запроса к нему, на клиенте:
Terrasoft.AjaxProvider.request({
url: Terrasoft.workspaceBaseUrl + "/rest/RegistrationService/TestServiceMethod",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'POST',
jsonData: 'test data',
callback: function(request, success, response) {
if (success) {
console.log(response.responseText);
}
},
scope: this
});
Нравится
Мой промах, забыл опубликовать. Сделал публикацию и получил теперь:
POST [url]/0/rest/RegistrationService/TestServiceMethod 400 (Bad Request)
Здравствуйте, Евгений!
Такая ситуация связана с тем, что по умолчанию веб-сервис требует авторизции. Можно реализовать ее в клиеннтском приложении или создать сервис, доступный без авторизации. Информацию о том, как это сделать добавляю во вложение.
Также обратите внимание, что в большинстве случаев для обмена данными с системой удобнее использовать не веб сервис, а протокол Odata.
Средства интеграции bpm'online достаточно подробно описаны в документации по разработке, раздел "Примеры решения типовых задач" - "Рекомендуемые средства интеграции".