Базы данных - Cache - статьи

Caché как клиент Веб-служб


Клиент Веб-служб в Caché представляет собой класс, наследуемый от системного класса %SOAP.WebClient и содержащий набор методов, отмеченных ключевым словом WebMethod. Каждый такой метод соответствует определенному методу Веб-сервиса на удаленной машине.

Для создания SOAP-клиента в Caché встроен специальный мастер. Мастер доступен из меню Caché Studio Инструменты->Расширения->1 SOAP Client Wizard. На первом шаге мастера указывается URL-адрес WSDL-документа соответствующего выбранному Веб-сервису. На основании WSDL-документа мастер создает класс с необходимыми Веб-методами, а также автоматически устанавливает значения параметров, определяющих имя удаленного Веб-сервиса, его расположение и пространство имен. Также может быть автоматически сгенерирован дополнительный класс (классы), если, например, при вызове метода Веб-сервиса необходимо передавать параметры определенного формата (например, строку определенного вида или значения из некоторого набора).

Ниже приведен пример класса, созданного мастером на основании WSDL-документа для Веб-сервиса, предоставляющего только одну операцию Sum, которая выполняет сложение двух целых чисел. Class.ArithmeticSOAP Extends %SOAP.WebClient
{/// URL-адрес для доступа к Веб-сервису.
Parameter LOCATION = "HTTP://MASHA:1972/csp/www/Web.cls";/// Пространство имен Веб-сервиса
Parameter NAMESPACE = "HTTP://tempuri.org"; /// Имя сервиса
Parameter SERVICENAME = ""; /// Метод, обращение к которому вызывает выполнение /// соответствующего метода Веб-сервиса
Method Sum(val1 As %Integer, val2 As %Integer)As %Integer
[ Final, ProcedureBlock = 1, SoapBindingStyle = document,
SoapBodyUse = literal, WebMethod ]
{
Quit ..WebMethod("Sum").
                       Invoke(##this,
"http://tempuri.org/Web.Arithmetic.Sum",.val1,.val2)
}
}

Вы можете создавать экземпляры созданного класса и вызывать методы класса-клиента. Например: WWW>Set client = ##class(Arithmetic.ArithmeticSoap).%New()WWW>Write client
1@Arithmetic.ArithmeticSOAP 
WWW>Set result = client.Sum(1,-3)WWW>Write result -2



Содержание раздела