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

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

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

 
   
     
       
     

   
 

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

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

Спасибо.

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

Нравится

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

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

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

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

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

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

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

  <appSettings>
    ...
    <add key="AllowedLocations" value="...;ServiceModel/UsrService.svc"/>
   ...
  </appSettings>
 
  ...
 
  <location path="ServiceModel/UsrService.svc">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
   ...

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

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();
    }
}

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

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";
        }
    }
}

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

...
 	<service behaviorConfiguration="BaseServiceBehavior" name="SimpleCustomService.UsrService">
        	<endpoint name="UsrServiceEndPoint"
           		binding="webHttpBinding"
           		behaviorConfiguration="RestServiceBehavior"
           		bindingNamespace="http://Terrasoft.WebApp.ServiceModel"
           		contract="SimpleCustomService.UsrIService" />
	        <endpoint address="soap" binding="basicHttpBinding" contract="SimpleCustomService.UsrIService"/>
	        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    	</service>
...

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо.

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

Нравится

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

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

Добрый день!

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

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

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

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

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

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

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

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

Спасибо.

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

Нравится

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

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

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

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

ttps://my_site/0/ServiceModel/my_web_service.svc?wsdl

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

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

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

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

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

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

http://localhost:8080/WebApp/0/ServiceModel/PaymentsRegisterService.svc?wsdl
http://localhost:8080/0/ServiceModel/PaymentsRegisterService.svc?wsdl

Такая ошибка:

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

Артем, спасибо большое за ответ.
Так... а что же делать? Есть- ли возможность разработки 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

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; }
        }
    }
}

и схему исходного кода c реализацие сервиса:
SPMSUBPService

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();
        }
    }
}

В папке 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

<services>
    ...
    <service behaviorConfiguration="BaseServiceBehavior" name="SPMSUBPService.SPMSUBPService">
        <endpoint name="SPMSUBPServiceEndPoint"
            binding="webHttpBinding"
            behaviorConfiguration="RestServiceBehavior"
            bindingNamespace="http://Terrasoft.WebApp.ServiceModel"
            contract="SPMSUBPService.IService" />
        <endpoint address="soap" binding="basicHttpBinding" contract="SPMSUBPService.IService"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
    ...
</services>

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

...
<location path="ServiceModel/SPMSUBPService.svc">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
</location>
...

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

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

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

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

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

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:
--
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/0/ServiceModel/UsrSPMSUBPService.svc?wsdl/$metadata">here</a>.</h2>
</body></html>
 
--
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.

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

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

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

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"
 
	Сбой запроса с сообщением об ошибке
 
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/0/ServiceModel/UsrSPMSUBPService.svc?wsdl/$metadata">here</a>.</h2>
</body></html>

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

--

UsrSPMSUBPService Служба

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

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

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

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

C#

class Test
{
    static void Main()
    {
        ServiceClient client = new ServiceClient();
 
        // Используйте переменную "client", чтобы вызвать операции из службы.
 
        // Всегда закройте клиент.
        client.Close();
    }
}

Visual Basic

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

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

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

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

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

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

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

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

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

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

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

Сегодня мы хотим продемонстрировать вам две новые функциональные возможности, которые сделают процесс работы в 1C Connector более удобным.

Для пользователя: новые детали [Постобработка] и [Процесс в интеграции]

На страницу настройки интеграции добавлены детали [Постобработка] и [Процесс в интеграции], что позволяет автоматически запускать бизнес-процессы, указанные на детали [Процесс в интеграции], сразу после завершения интеграции. При этом, если выбран признак [Постобработка], возможно запустить бизнес-процессы выборочно (например, только те, для которых установлен признак [Выполнить]).

Основная информация

Для разработчика: новый параметр IntegrationId

Если в бизнес-процесс добавлен параметр IntegrationId, который представляет собой уникальный номер, то разработчик может получить доступ к выбранной записи интеграции намного быстрее. Данную возможность можно использовать, например, для чтения информации о настройках выбранной интеграции, а также для внесения в нее изменений.

Дизайнер БП

Ценность вашей обратной связи

Большинство новых функций появляется именно на основе ваших писем и обращений. Поэтому мы очень ценим вашу обратную связь, всегда открыты для новых задач и с удовольствием будем совершенствоваться!

Нравится

Поделиться

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

Добрый день, уважаемые коллеги!

Сегодня мы рассказываем вам про несколько изменений в продукте 1C Connector, которые сделают работу пользователя с системой более удобной.

Добавление «Сессии интеграции»

1C Connector позволяет настраивать запуск интеграции по расписанию, поэтому возможен запуск нескольких интеграций.
Ранее, если пользователь начинал одну интеграцию несколько раз, то все запуски записывались в журнал без возможности отслеживания хронологии или их фильтрации, а также дальнейшего анализа.
Так как возникла необходимость использования информации из журнала интеграции, теперь каждый запуск выполняется в контексте новой «Сессии интеграции».
Очередной запуск интеграции порождает новую сессию, которая включает набор записей, удобных для фильтрации как по дате начала, так и по номеру записи. Нумерация записей лога теперь уникальна в рамках одной сессии интеграции.

Журнал интеграции

Изменение механизма логирования «в файл»

Раньше все сообщения, появляющиеся в процессе интеграции, записывались в один файл, что исключало возможность анализа данных.
Теперь для удобства работы пользователя в системе для каждой сессии интеграции создается отдельная папка, в которую записывается любое диагностическое сообщение (лог) в отдельном файле в формате .txt. Каждый файл в дальнейшем может быть открыт, а его содержимое просмотрено. Информация в файле включает в себя дату записи, указание характера записи: ошибки или сообщения, а также сам текст сообщения.
Соответственно, теперь в настройках интеграции необходимо указывать путь не к файлу-логу, а к папке, в которую будут записываться все файлы вида «НАЗВАНИЕ_ИНТЕГРАЦИИ – НАЗВАНИЕ_СЕССИИ_ИНТЕГРАЦИИ.txt» в рамках одной сессии.

Логирование в папку

Полную статью читайте далее.

Если у вас появились какие-либо вопросы, я с удовольствием на них отвечу.

Нравится

Поделиться

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

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

Напоминаем вам, что в декабре можно пройти бесплатный учебный курс по развертыванию и настройке работы 1C Connector «От 1С к bpm’online». Он включает в себя два часовых вебинара.

Уже завтра с 14.00 до 15.00 (МСК) состоится первый вебинар «Подготовка к интеграции 1С и bpm’online»!

Второй вебинар «Работа с 1C Connector» состоится 21 декабря с 14.00 до 15.00 (МСК).

Будем рады видеть вас на наших вебинарах!

С уважением,
ООО «Программные Технологии»
Центр разработки и внедрения Террасофт Поволжье
Тел. +7 (846) 266-55-69
Email: galanin@samarasoft.com
samarasoft.com

Нравится

Поделиться

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

Добрый день, уважаемые коллеги!

Приглашаем вас и ваших коллег пройти учебный курс по развертыванию и настройке работы 1C Connector «От 1С к bpm’online».

В нем мы расскажем вам про особенности настройки, интеграции и работы с продуктом 1C Connector, который предназначен для интеграции bpm’online с 1С. 

В рамках данного курса состоится два вебинара.
Первый вебинар «Подготовка к интеграции 1С и bpm’online» состоится 16 декабря с 14.00 до 15.00 (МСК). На нем будут рассмотрены следующие вопросы:

1) Подготовка 1C к синхронизации:

  • добавление веб-сервисов в конфигурацию 1С,
  • публикация веб-сервиса 1С,
  • настройка параметров IIS для веб-сервиса.

2) Первичная установка коннектора на систему bpm’online sales:

  • установка пакета коннектора с помощью WorkSpaceConsole,
  • настройка раздела коннектора в bpm’online.

Второй вебинар «Работа с 1C Connector» состоится 21 декабря с 14.00 до 15.00 (МСК). На нем будут рассмотрены следующие вопросы:

  1. Добавление новой интеграции bpm’online и 1С в 1C Connector.
  2. Добавление каждого вида сущностей для объекта синхронизации в 1C Connector: поле, табличная часть, агрегируемая колонка, регистр.
  3. Добавление новых фильтров для объекта синхронизации в 1C Connector.
  4. Добавление новых планов обмена для объекта синхронизации в 1C Connector.
  5. Настройка бизнес-процесса по передаче объекта bpm’online в 1С с помощью референтного действия.

Нравится

Поделиться

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

Добрый день, уважаемые коллеги!

В продукт 1C Connector for bpm’online добавлена новая функциональность - фильтрация периодических регистров сведений по последней дате.

Фильтрация реализуется функцией 1С СрезПоследних(), которая позволяет сделать срез последних записей в периодических регистрах сведений.
В регистре присутствует системное поле «Период», в котором указывается конкретная дата.

Скриншот 1С

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

Срез Последних

Выбор данного пункта означает поиск в регистре значения или значений, которые указаны для последней даты.

Цены

С удовольствием отвечу на все интересующие вас вопросы!

Нравится

Поделиться

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

Добрый день, уважаемые коллеги!

Представляем вашему вниманию видео "Все о 1C Connector for bpm'online за 5 минут", в котором вы познакомитесь с интерфейсом нашего продукта, а также узнаете об основных возможностях решения.

Видео доступно на нашем сайте.

1C Connector for bpm'online - специализированное решение для выполнения задач интеграции bpm’online с 1С. Используя данный продукт, пользователь может самостоятельно гибко настраивать интеграцию без использования кода.

Желаем приятного просмотра!

С удовольствием отвечу на все возникающие вопросы!

Нравится

Поделиться

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

Добрый день!
Скажите, а возможна ли в 7.6. интеграция с двумя доменами LDAP, а не с одним?

Нравится

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