Здравствуйте, коллеги!

В ходе мероприятия в Сколково на презентации дизайнера процессов коснулись темы вызова внешних веб-сервисов из процесса с использованием нового элемента в дизайнере процессов.

К сожалению, не нашел подробного описания возможностей этого элемента в технической документации.

Прошу помочь с реализацией следующей функции.

Имеется веб-сервис, имеющий корректное wsdl-определение. Сервис получает от процесса GET-команду (с параметром type ['jpeg', 'pdf', 'xml']) и в зависимости от параметра возвращает:
1) jpeg - изображение
2) pdf - файл документа
2) xml - со значениями полей в строках и изображениями в кодировке base64

по получении ответа процесс должен:
1) сохранить jpeg-файл в карточку контакта (например, фото контакта)
2) сохранить pdf-файл вложением в карточку контакта (например, цифровая копия подписанного договора обслуживания)
3) разобрать полученный xml-файл, создать новую карточку контакта и сохранить значения в соответствующие поля, включая закодированное base64 изображение (например, паспортные данные контакта с изображением подписи, фото и скана паспорта)

Буду благодарен за примеры кода.

Нравится

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

Добрый день!
Пока такого элемента, который бы вызывал внешние сервисы нет.
Для решения подобной задачи нужно писать в ScriptTask’е на .Net обработчик http запросов и в пространство имен (Usings) подключать нужные классы.
Примеры кода можно загуглить.

Спасибо, Олег!

Я посмотрел в дизайнере процессов установленного у нас экземпляра bpm'online 7.8. Там действительно нет того элемента, что я имел ввиду. Жаль, что я не помню его названия. Но в бета-версии, которую нам демонстрировали на мероприятии в Сколково в этом году в рамках сессии для администраторов, был такой элемент, который позволял вызывать внешние web-сервисы, при условии, что они оформлены в соответствии со стандартами по протоколу SOAP.

Очень прошу перепроверить с теми, кто делал ту презентацию. Юлия Старун там была, насколько я помню.

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

Добрый день !!!

если такой элемент процесса появится в дизайнере процессов, тогда BPMOnline станет самой крутой системой по сравнению с другими. Она и сейчас самая крутая система. Но с данным инструментом просто будет решать многие задачи.

Здравствуйте! Я зашел в дизайнер процессов из конфигурации системы. Элемент, который я имел ввиду называется "Выполнить действие процесса". В его настройках нужно указать Пользовательское действие "Вызвать веб-сервис" или "Вызвать Web-сервис".

Если выбрать первый вариант - "Вызвать веб-сервис", то во вкладке Параметров нужно указать следующие параметры:
- RequestBodyInternal
- RequestParameters
- URL сервиса
- Вернуть запрос и ответ действия
- Запрос
- Метод сервиса
- Ответ
- Параметры запроса
- Результат запроса
- Сервис
- Статус выполнения вызова

Если выбрать второй вариант - "Вызвать Web-сервис", то во вкладке Параметров нужно указать следующие параметры:
- URL web-сервиса
- Метод
- Название
- Параметры метода

Мой SOAP сервис вызывается (из локальной сети) по адресу:
http://[ip_address]/soap?format=pdf
http://[ip_address]/soap?format=jpg
http://[ip_address]/soap?format=xml

Его описание доступно по
http://[ip_address]/soap?wsdl

Текст WSDL во вложении (нужно изменить расширение с txt на xml).

Пример XML-ответа - во вложении (нужно изменить расширение с txt на xml).
Пример PDF-ответа - во вложении.
Пример JPG-ответа - во вложении.

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

Кто подскажет, как использовать этот элемент? Если можно - с практическими примерами.

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

Показать все комментарии
NET Framework 4.5
soap
WCF
Web-сервис
wsdl
аутентификация
Технические вопросы
7.x

Коллеги, приветствую.

Пытаюсь аутентифицировать внешние запросы к WCF Web- сервису. Для этого передаю логин и пароль в заголовке SOAP.

using (UsrService client = new UsrService())
{
        client.Credentials = new System.Net.NetworkCredential("Пользователь 1", "Пользователь 1");
        client.SayHello();
}

И Web- сервис и его клиент работают на платформе .NET Framework 4.5.

Запрос не проходит аутентификацию и, насколько я понимаю, происходит редирект на форму логина.

http://localhost:8080/NuiLogin.aspx?ReturnUrl=%2f0%2fServiceModel%2fSimpleCustomService.svc

Что я вижу в своем консольном клиенте:

С чем это может быть связано?

Был бы весьма признателен за информацию.

Спасибо.

--
С уважением, Алексей Быков.

Нравится

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

Если в клиенте я добавляю:

[code]
client.AllowAutoRedirect = true;
[/code]

То в консоли вижу следующее:

[xml]
Необработанное исключение: System.InvalidOperationException: Клиент обнаружил ти
п содержимого ответа "text/html; charset=utf-8", но ожидается тип "text/xml".
Сбой запроса с сообщением об ошибке:
--

bpm'online bank customer journey

.login-label-logo
{
background: url("terrasoft.axd?s=nui-binary-syssetting&r
=Logoimage");
background-repeat: no-repeat;
width: 223px;
height: 100px;
margin-bottom: 28px;
background-position: left bottom;
}

window.workspaceList = {'1': { value: 'Default', displayValue: 'Default' }};
window.supportInfo = [];
window.supportInfoCaption = '';
window.importantLinks = [];
window.importantLinksCaption = '';
window.productVersion = '7.7.0.2872';
window.loginTimeout = '30000';
window.workspaceCount = 1;
var Terrasoft = Terrasoft || {};
window.isNtlmLoginVisible = false;

var Terrasoft = Terrasoft || {};
Terrasoft.loaderBaseUrl = 'http://localhost:8080/';
Terrasoft.workspaceBaseUrl = 'http://localhost:8080/';

var FileAPI = {
staticPath: '../Resources/ui/FileAPI/',
flashUrl: '../Resources/ui/FileAPI/FileAPI.flash.swf',
flashImageUrl: '../Resources/ui/FileAPI/FileAPI.flash.image.swf' };

var Terrasoft = Terrasoft || {};Terrasoft.enablePerformanceManager = false;

requirejs.config({
paths: {
'core':'http://localhost:8080//core/ef58ab72c648daaa7af074e2526dffc3/Terrasoft/a
md/core',
'bootstrap':'http://localhost:8080//core/022b4acc49ebfbfb33b54d4f95393d2a/Terras
oft/amd/bootstrap',
'performancecountermanager':'http://localhost:8080//core/3bf271e2ad15f056eac25ab
fea30226a/Terrasoft/amd/performancecountermanager',
'loadbootstrap':'http://localhost:8080//core/b0ebbf0e263a02a3db86bf39761aba1c/Te
rrasoft/amd/bootstrap.login',
'jQuery':'http://localhost:8080//core/8d24859b5ac713ab6f05091492b6c631/jQuery/jQ
uery',
'jQuery-easing':'http://localhost:8080//core/a6f75e0c043a2a087837e5c113cc6f7a/jQ
ueryEasing/jQuery-easing',
'jsrender':'http://localhost:8080//core/77f59dfac75bba6c861fe26d75691086/jsrende
r/jsrender',
'ej-common-all':'http://localhost:8080//core/e8b46aebd6473a2f85386c0d072a2b93/Sy
ncfusion/min/ej-common-all',
'ej-diagram':'http://localhost:8080//core/89f5be5f51b070471058224a6550b99a/Syncf
usion/min/ej-diagram',
'process-schema-diagram':'http://localhost:8080//core/650e4ae64a84c1fd11caab7904
39c8ef/Terrasoft/designers/process-schema-designer/process-schema-diagram',
'process-schema-diagram-5x':'http://localhost:8080//core/b0b08b3ec18e7494d488622
07309479f/Terrasoft/designers/process-schema-designer/process-schema-diagram-5x'
,
'ckeditor-base':'http://localhost:8080//core/04628941838af9176121c9cd4332b49d/CK
Editor/ckeditor',
'html2canvas':'http://localhost:8080//core/524ae0cfb507a786266d32d9a16ccc42/html
2canvas/html2canvas'
},
shim: {'jQuery-easing': {'deps': ['jQuery']}, 'ej-common-all': {'deps': ['jQuery
-easing']}, 'ej-diagram': {'deps': ['ej-common-all', 'jsrender']}, 'process-sche
ma-diagram': {'deps': ['ej-diagram']}, 'process-schema-diagram-5x': {'deps': ['p
rocess-schema-diagram']}}});
require(['loadbootstrap'],function() {});

var Terrasoft = Terrasoft || {};
Terrasoft.isDebug = false;
Terrasoft.DataValueTypeRange = {INTEGER: {maxValue:2147483647,minValue:-21474836
48},FLOAT: {maxValue:79228162514264337593543950335,minValue:-7922816251426433759
3543950335},DATE_TIME: {maxValue:"0001-01-01T00:00:00.000",minValue:"0001-01-01T
00:00:00.000"}};
Terrasoft.storesConfig = [];
Terrasoft.storesConfig.push({levelName: 'ClientPageSession', type: 'Terrasoft.Me
moryStore', isCache: true});Terrasoft.storesConfig.push({levelName: 'Domain', ty
pe: 'Terrasoft.LocalStore', isCache: true});
if(Terrasoft.StoreManager){
Terrasoft.StoreManager.registerStores(Terrasoft.storesConfig);
}

--.
в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClien
tMessage message, WebResponse response, Stream responseStream, Boolean asyncCall
)
в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodNa
me, Object[] parameters)
в UsrService.SayHello() в c:\VS2015\Projects\WCFSharedDLL\WCFSharedDLL\TestPr
oxyClass.cs:строка 44
в ConsoleApplicationForTesting.Program.Main(String[] args) в c:\VS2015\Projec
ts\ConsoleApplicationForTesting\ConsoleApplicationForTesting\Program.cs:строка 1
6
Для продолжения нажмите любую клавишу . .
[/xml]

Т.е. исходный код страницы авторизации.

Решил таким образом. На уровне транспортного протокола передал учетные данные:

[code]
public const string authServiceUri =
"http://localhost:8080/ServiceModel/AuthService.svc/Login";
public static CookieContainer AuthCookie =
new CookieContainer();

public static bool TryLogin(string userName, string userPassword)
{
var authRequest = HttpWebRequest.Create(authServiceUri)
as HttpWebRequest;

authRequest.Method = "POST";
authRequest.ContentType = "application/json";
authRequest.CookieContainer = AuthCookie;

using (var requesrStream = authRequest.GetRequestStream())
{
using(var writer = new StreamWriter(requesrStream))
{
writer.Write(@"{
""UserName"":""" + userName + @""",
""UserPassword"":""" + userPassword + @"""
}");
}
}

using(var response = (HttpWebResponse)authRequest.GetResponse())
{
if (AuthCookie.Count > 0)
{
return true;
}
}
return false;
}
[/code]

Установил CookieContainer:

[code]
client.CookieContainer = AuthCookie;
[/code]

Стало возможным выполнять запросы к Web- сервису:

[code]
static void Main(string[] args)
{
using (UsrService client = new UsrService())
{
if(TryLogin("Пользователь 1", "Пользователь 1"))
{
client.CookieContainer = AuthCookie;
Console.WriteLine(client.SayHello());
}
}
}
[/code]

Хотя и осталось непонятным, почему не удалось аутентифицировать внешние запросы через передачу учетных данных в SOAP заголовке...

Здравствуйте.
Как вариант, в заголовок запроса можно было попробовать указать content-type "text/xml".

Здравствуйте, Александр. Хорошо, спасибо - попробую и отпишусь, что вышло.

Показать все комментарии
WCF
Web- сервис
wsdl
xml-rpc
авторизация
интеграция
Технические вопросы
7.x

Коллеги, приветствую.

Собственно вопрос - как разрешить удаленный вызов процедур Web- сервиса? Есть простой WCF Web- сервис, на его основе получен WSDL, из которого сгенерированы прокси- классы. Эти прокси- классы использует простой консольный клиент, например, просто вернуть строку с сервера - вылетает окно:

Судя по ссылке, запрос не проходит авторизацию, хотя в Terrasoft.WebApp\Web.config указано, что:

 
   
     
       
     

   
 

Как отключить авторизацию для RPC?

Был бы весьма признателен за информацию.

Спасибо.

--
С уважением, Алексей Быков.

Нравится

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

Переехали решать задачу в рамках технической поддержки:smile:

Здравствуйте, Алексей! Спасибо! :smile:

Вот некоторые подробности.

1. В \Terrasoft.WebApp\ServiceModel добавил UsrService.svc:

[code]
<%@ ServiceHost Language="C#" Debug="true" Service="Terrasoft.WebApp.ServiceModel.UsrService" CodeBehind="UsrService.svc.cs" %>
[/code]

2. В \Terrasoft.WebApp\Web.config добавил:
[code]

...

...

...

...
[/code]

Контракт Web- сервиса в конфигурации (UsrIService.svc):

[code]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace SimpleCustomService
{
[ServiceContract]
public interface UsrIService
{
[OperationContract]
string SPMClientInfo();
}
}
[/code]

Реализация Web- сервиса в конфигурации (UsrService.svc):

[code]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace SimpleCustomService
{
public class UsrService : UsrIService
{
public string SPMClientInfo()
{
return "test string";
}
}
}
[/code]

В \Terrasoft.WebApp\ServiceModel\http\services.config добавил:

[code]
...

...
[/code]

Нашел вот статью, попробую сделать как там описано. Аутентификация внешних запросов к веб-сервисам bpm'online

Отличная статья, как я теперь могу вызвать метод Web- сервиса, используя AuthCookie? Должен- ли я менять код Web- сервиса, чтобы аутентифицировать внешние запросы?

Здравствуйте.
Обратите внимание на ресурс: http://stackoverflow.com/questions/16028014/how-can-i-pass-a-username-p…

Здравствуйте, Александр! Спасибо большое за ответ, попробую сделать так.

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

URL тот же самый, что и в консоли:

[code]
http://localhost:8080/NuiLogin.aspx?ReturnUrl=%2f0%2fServiceModel%2fSim…
[/code]

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

Даже если сделать так?

Показать все комментарии
soap
Web- сервисы
wsdl
интеграция
Технические вопросы
7.x

Коллеги, приветствую.

Существует- ли возможность интеграции bpm'online с внешним приложением по протоколу SOAP?
Например, в bpm'online я создаю некий Web- сервис, который читает из базы данных, далее по его WSDL создаю автономного клиента (консоль) и по RPC вызываю методы Web- сервиса bpm'online.. Такое возможно?

Был бы весьма признателен за информацию.

Спасибо.

--
С уважением Алексей Быков.

Нравится

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

Возможно, для этих целей подойдет WCF Web- сервис? Разместить его в IIS, получить WSDL... дальше сгенерировать клиентские артефакты... и все.. или я не прав?

Добрый день!

Посмотрите пост https://community.terrasoft.ru/node/16393#comment-62259

Отлично, спасибо!

Показать все комментарии
WCF
Web- сервис
wsdl
интеграция
Технические вопросы
7.x

Коллеги, приветствую.

Есть некоторый конфигурационный Web- сервис, размещенный в пакете Custom.

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

Как получить доступ к WSDL моего сервиса?

Был бы весьма признателен за информацию.

Спасибо.

--
С уважением, Алексей Быков.

Нравится

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

Или же SOAP Web- сервисы и клиенты полностью разрабатываются в MS Visual Studio, а затем код Web- сервиса переносится (копируется) в конфигурационный?

Добрый день.
WSDL можно получить, например, так:
https://my_site/0/ServiceModel/my_web_service.svc?wsdl

Здравствуйте, Артем! Спасибо. Про параметр wsdl я знаю.. Не могли бы Вы проконсультировать
относительно пути до Web- сервиса -

[code]
ttps://my_site/0/ServiceModel/my_web_service.svc?wsdl
[/code]

my_site - ? (в принципе, понятно...)
ServiceModel - ?

Требуется- ли какая- либо дополнительная настройка?

Ой, сорри, немного ошибся. Это не совсем конфигурационные web-сервисы.

Путь складывается так:
https://имя_сайта/0/rest/имя_сервиса
(это можно увидеть в модуле ServiceHelper)

Далее, что касается wsdl. По конфигурационным сервисам не получится получить wsdl. С ними нужно работать как с REST - простимы Post/Get запросами

При таких запросах:

[code]
http://localhost:8080/WebApp/0/ServiceModel/PaymentsRegisterService.svc…
http://localhost:8080/0/ServiceModel/PaymentsRegisterService.svc?wsdl
[/code]

Такая ошибка:
[code]
Date: 14.04.2016 16:07:28
Date (UTC): 14.04.2016 12:07:28

Exception Message: The service '/WebApp/0/ServiceModel/PaymentsRegisterService.svc' does not exist.
Exception Type: System.ServiceModel.EndpointNotFoundException
Exception Source: System.ServiceModel.Activation

Exception Stack Trace:
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()

SessionID: k1zrorhl53nfgmtswhcohchx
Request URL: /WebApp/0/ServiceModel/PaymentsRegisterService.svc?wsdl
Request Path: /WebApp/0/ServiceModel/PaymentsRegisterService.svc
Request Type: GET
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
User Host Address: ::1
User: Пользователь 1
Is Authenticated: True
Authentication Type: Forms
Is Secure Connection: False

Application Version: 7.7.0.2872
Application Path: C:\terrasoft\BankCustomerJourney770_Demo\
Application Virtual Path: /
Application Trust Level: Full
Machine Name: ALEKSEYBYKOV-PC
Is Local: True

Process ID: 17564
Process Name: iisexpress.exe
Process Account Name: AlekseyBykov-PC\Aleksey-Bykov
Thread Account Name: AlekseyBykov-PC\Aleksey-Bykov
OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1
Net Framework Version: 4.0.30319.42000
DBExecutor Type: MSSqlExecutor
[/code]

Артем, спасибо большое за ответ.
Так... а что же делать? Есть- ли возможность разработки SOAP Web- сервисов? Если я хочу (нужно) из внешнего приложения обращаться к Web- сервису bpmonline, генерируя по его WSDL прокси- классы?..

К вопросу об интеграции..

https://www.terrasoft.ru/products/bpmonline/integration

Web-сервисы
Интеграция приложений bpm’online с другими системами посредством web-сервисов позволяет существенно упростить процесс и значительно сократить время синхронизации данных.

Поддержка открытых стандартов (SOAP, WSDL) и широкая сфера применения web-сервисов позволяет связывать в единую информационную среду бизнес-приложения и системы, созданные на базе различных технологий.

Платформа bpm’online позволяет запрашивать данные из сторонних систем для передачи в bpm’online , равно как и вызывать собственные web-сервисы для получения данных из bpm’online.

Вполне вероятно, что мне подойдет WCF Web- сервис. DLL можно разместить в IIS и получить WSDL.

Добрый день!
Собственно то, о чем я говорил в самом первом ответе :), но для этого нужно дополнительные настройки (только если у Вас on-site)

В конфигурации создаем схему исходного кода c контрактом сервиса:
SPMSUBPServiceContract
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace SPMSUBPService
{
[ServiceContract]
public interface IService
{
[OperationContract]
SPMClientInfoResponse SPMClientInfo(string Login);
}

[DataContract]
public class SPMClientInfoResponse
{
bool success = true;
string errorText = "";

[DataMember]
public bool Success
{
get { return success; }
set { success = value; }
}

[DataMember]
public string ErrorText
{
get { return errorText; }
set { errorText = value; }
}
}
}
[/csharp]
и схему исходного кода c реализацие сервиса:
SPMSUBPService
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace SPMSUBPService
{
public class SPMSUBPService : IService
{
public SPMClientInfoResponse SPMClientInfo(string Login)
{
return new SPMClientInfoResponse();
}
}
}
[/csharp]
В папке Terrasoft.WebApp\ServiceModel создаем файл SPMSUBPService.svc с текстом:
SPMSUBPService.svc
<%@ ServiceHost Language="C#" Debug="true" Service="SPMSUBPService.SPMSUBPService" Factory="System.ServiceModel.Activation.ServiceHostFactory" %>
Добавляем в файл Terrasoft.WebApp\ServiceModel\http\services.config описание нашего сервиса:
services.config
[xml]

...

...

[/xml]
Модифицируем Terrasoft.WebApp\Web.config
Web.config
[xml]
...

...
[/xml]
Готово!
Сервис доступен по адресу: /0/ServiceModel/SPMSUBPService.svc
WSDL тоже есть: /0/ServiceModel/SPMSUBPService.svc?singleWsdl

Артем, спасибо большое за ответ, попробую сделать.

Отлично, все получилось. Спасибо!

При попытке создания прокси WCF стали появляться ошибки.

1. Если в проект консольного приложения MS Visual Studio добавить ссылку на wsdl Web- сервиса (Add service reference):

[code]
An error occured while attempting to find services at h t t p://localhost:8080/0/ServiceModel/UsrSPMSUBPService.svc?wsdl

Details

Was an error downloading ' h t t p://localhost:8080/0/ServiceModel/UsrSPMSUBPService.svc?wsdl/$metadata'.
The request failed with the error message:
--
Object moved
Object moved to here.

--
Metadata contains a reference that cannot be resolved: 'h t t p://localhost:8080/0/ServiceModel/UsrSPMSUBPService.svc?wsdl'.
The remote server returned an unexpected response: (302) Found.
Too many automatic redirections were attempted.
If the service is defined in the current solution, try building the solution and adding the service reference again.

[/code]
2. Если для генерации прокси- классов использовать ServiceModel Metadata Utility Tool (Svcutil.exe), то следующая команда:

[code]
svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config h t t p://localhost:8080/0/ServiceModel/UsrSPMSUBPService.svc?wsdl
[/code]

Завершается с такой ошибкой:

[code]
WS-Metadata Exchange Error
URI: h t t p://localhost:8080/0/ServiceModel/UsrSPMSUBPService?wsdl

Метаданные содержат неразрешимую ссылку "h t t p://localhost:8080/0/ServiceModel/UsrSPMSUBPService?wsdl"

Удаленный сервер вернул неожиданный ответ: (302) Found.

Слишком много попыток автоматического перенаправления.

HTTP Get Error
URI: h t t p://localhost:8080/0/ServiceModel/UsrSPMSUBPService?wsdl

Возникла ошибка при загрузке "h t t p://localhost:8080/0/ServiceModel/UsrSPMSUBPService?wsdl"

Сбой запроса с сообщением об ошибке

Object moved
Object moved to here.

[/code]

Сам сервис и WSDL доступны:

--

UsrSPMSUBPService Служба

Служба создана.

Чтобы протестировать эту службу, необходимо создать клиент и воспользоваться им для вызова службы. Это можно сделать, запустив программу svcutil.exe из командной строки со следующим синтаксисом:

svcutil.exe http://localhost:8080/0/ServiceModel/UsrSPMSUBPService.svc?wsdl
Доступ к описанию службы также можно получить как к одному файлу:

http://localhost:8080/0/ServiceModel/UsrSPMSUBPService.svc?singleWsdl
Это ведет к созданию файла конфигурации и файла кода, содержащего класс клиента. Добавьте эти два файла в клиентское приложение и используйте сгенерированный класс клиента для вызова службы. Например:

C#

[csharp]
class Test
{
static void Main()
{
ServiceClient client = new ServiceClient();

// Используйте переменную "client", чтобы вызвать операции из службы.

// Всегда закройте клиент.
client.Close();
}
}

[/csharp]
Visual Basic

[csharp]
Class Test
Shared Sub Main()
Dim client As ServiceClient = New ServiceClient()
' Используйте переменную "client", чтобы вызвать операции из службы.

' Всегда закройте клиент.
client.Close()
End Sub
End Class
[/csharp]

Почему не удается сгенерировать прокси- классы?

C ?FlatWsdl я удаляю все ссылки xsd:import, но это не помогает.

Артем, не могли бы Вы подсказать, как теперь сгенерировать прокси- классы для клиента?

Получилось примерно таким образом.

Есть утилита wsdl.exe

[code]
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\wsdl.exe
[/code]

С ее помощью можно сгенерировать прокси- классы из сохраненного локально WSDL- файла. Далее скомпилировать эти классы в сборку и включить ссылку на сборку в проект консольного клиента, ну а дальше вызывать методы Web- сервиса из клиента, используя прокси- классы.

На этом тему можно считать закрытой.

Показать все комментарии
dll
wsdl
Технические вопросы
5.x

У меня собственно два вопроса:
1. Как в BPM подгрузить wsdl.
2. Как и где нужно грузить свою dll, что бы в нутри любого процесса можно было сделать using MyDll и спокойно обратиться к ней.

Нравится

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

Вот здесь хорошо написано что надо делать:
http://www.community.terrasoft.ru/forum/topic/9211

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