Создание Web-сервиса в BPMOnline 7

Написал свой Web-сервис, который выполняет хранимую процедуру в БД.
Вопрос: как зарегистрировать сервис в системе, какие строчки необходимо прописать в конфигурационных файлах

Нравится

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

Добавление сервиса:
В системе существует возможность написать свой WCF сервис.
1. Создаем схему "Исходный код".
2. Пример кода который содержит схема:

namespace Terrasoft.Configuration.CommandLineService
{
	using System.CodeDom.Compiler;
	using System.ServiceModel;
	using System.ServiceModel.Web;
	using System.ServiceModel.Activation;
	using System.Web;
	using Terrasoft.Common;
	using Terrasoft.Core;
	using Terrasoft.Core.DB;
	using Terrasoft.Core.Entities;
	using Terrasoft.Core.Store;
	using System;
	using System.Data;
	using System.Collections.Generic;
	using System.Linq;
	using Newtonsoft.Json.Linq;
 
        [ServiceContract]
	[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
	public class TestService
	{
 
		[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;
		}
         }
}

сервис содержит один тестовый метод который принимает строку и возвращает строку.
Публикуем схему
3. Вызов сервиса на стороне клиента

var request = Terrasoft.AjaxProvider.request({
				url: "../rest/TestService/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
			});

Примеров в системе очень много.
ReportService, ColumnService

Александр, большое спасибо, с Web-сервисом все получилось

У меня сработал но передать данные не получилось. После добавления

BodyStyle = WebMessageBodyStyle.Wrapped

в

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat =WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]

и правильном задании параметра jsonData (в формате jSon):

jsonData:  {
      data: ‘some data’
}

Напишите как у Вас метод принимает параметры?

Это рабочий вариант, и работает как описано выше

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode =
 AspNetCompatibilityRequirementsMode.Required)]
public class ITS_Servises
{
	[OperationContract]
	[WebInvoke(Method = "POST", BodyStyle =WebMessageBodyStyle.Wrapped,
	RequestFormat =WebMessageFormat.Json, ResponseFormat = 
        ebMessageFormat.Json)]
	public string SendDataTest (string name)
	{			
	     return name;
	}
 
}

Попробуйте

jsonData:  {
      data: {'name' :‘some data’}
}

"Бондаренко Александр Сергеевич" написал:

Попробуйте

jsonData:  {

      data: {'name' :‘some data’}

}


я знаю =) я просто к Вашему примеру написал=) потому что он чуток не коректный и заработает после указаных правок. И еще одно без атрибута "BodyStyle =WebMessageBodyStyle.Wrapped" не запрыгнет туда брейкпоинт

Вы изменили метод добавив атрибут, конечно он не будет работать, сервис будет по другому параметры принимать =)
На breakpoin это никак не может влиять.

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