Configuración de protocólo SOAP/XML

Configuración de protocólo SOAP/XML

Introducción

SOAP XML es un protocolo de comunicación que se usa para intercambiar información estructurada entre aplicaciones a través de redes, principalmente servicios web

Con esta capacidad, Vor-Tex no solo permite producir y gestionar APIs REST sino también integraciones basadas en APIs con protocolo SOAP/XML, lo que agrega flexibilidad, versatilidad, ampliando las distintas soluciones.

Exponer métodos SOAP permite reducir fricciones en la actualización y modernización de sistemas, cuando es necesario mantener esta forma de servicios web para reducir el impacto en los componentes de una organización.

En este documento, se explica como crear y configurar métodos SOAP/xml.


Crear método SOAP/XML

Agregar método

La selección de SOAP/XML en la plataforma de Vor-Tex, al igual que con REST y Websockets, se realiza a nivel de los métodos y no al nivel de las APIs. Es por eso, que una vez creada o seleccionada la API, se debe agregar un método y seleccionar la vista o pipeline que ejecutará dicho método, como se muestra a continuación. 

Pantalla 1 - Seleccionar método.

Pantalla 2 - Seleccionar vista para el método. 

Configurar método

Una vez creado el método y seleccionada la vista que ejecutará, se deben completar las especificaciones del método. 

Es en esta instancia en la que se debe seleccionar el protocolo SOAP

Pantalla 3 - Selección de protocolo SOAP. 

Los métodos SOAP/xml solo admiten POST como tipo de solicitud. Al seleccionar el protocolo SOAP, aparecerán campos específicos que deben ser configurados:

  • Versión: por ahora disponible 1.1
  • Method (operación): es el nombre del método o operación.
  • Prefijo: es el prefijo que puede completarse de manera opcional
  • Namespace del método: es el espacio de nombres o namespace.


Vista 4 - Campos específicos para el protocolo SOAP. 

Definir WSDL

WSDL (Web Services Description Language) es un XML que describe el servicio web y puede usarse para realizar verificaciones en las solicitudes al método.

El WSDL se define para cada método y puede contener una especificación en XSD (XML Schema Definition o Definición de Esquema XML) donde se definen validaciones sobre el contenido XML de la solicitud.

Supongamos que tenemos este body de solicitud que debe enviarse al método.


<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

                 xmlns:fix="http://www.fixprotocol.org/FIXML-5-0">

  <soapenv:Header/>

  <soapenv:Body>

     <fix:Employees>

        <fix:Name Type="public">John</fix:Name>

        <fix:Lastname Type="public">Doe</fix:Lastname>

        <fix:BirhtDate Type="private">1986-01-31</fix:BirhtDate>

     </fix:Employees>

  </soapenv:Body>

</soapenv:Envelope>



Y esta es la repsuesta esperada en caso exitoso


<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

                 xmlns:fix="http://www.fixprotocol.org/FIXML-5-0">

  <soapenv:Header/>

  <soapenv:Body>

     <fix:EmployeesResponse>

        <fix:response>CREATED</fix:response>

     </fix:EmployeesResponse>

  </soapenv:Body>

</soapenv:Envelope>


Además, definimos ciertas reglas de validación del contenido del cuerpo de la solicitud.

Campo

Tipo

Restricciones

Obligatorio

Valor fijo en atributo Type

Name

string

Máx 120 caracteres

✅ Sí

public

Lastname

string

Máx 120 caracteres

✅ Sí

public

BirthDate

date

Formato YYYY-MM-DD

❌ No

private


Nuestro WSLD con el XSD embebido será el siguiente

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions name="EmployeesService"

            targetNamespace="http://www.fixprotocol.org/FIXML-5-0"

            xmlns:tns="http://www.fixprotocol.org/FIXML-5-0"

            xmlns:xs="http://www.w3.org/2001/XMLSchema"

            xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

   <!-- ================== -->

   <!-- Tipos (XSD embebido) -->

   <!-- ================== -->

   <wsdl:types>

       <xs:schema targetNamespace="http://www.fixprotocol.org/FIXML-5-0"

                  xmlns="http://www.fixprotocol.org/FIXML-5-0"

                  elementFormDefault="qualified">

           <xs:element name="Employees">

               <xs:complexType>

                   <xs:sequence>

                       <xs:element name="Name">

                           <xs:complexType>

                               <xs:simpleContent>

                                   <xs:extension base="nameType">

                                       <xs:attribute name="Type" use="required" fixed="public"/>

                                   </xs:extension>

                               </xs:simpleContent>

                           </xs:complexType>

                       </xs:element>


                       <xs:element name="Lastname">

                           <xs:complexType>

                               <xs:simpleContent>

                                   <xs:extension base="lastnameType">

                                       <xs:attribute name="Type" use="required" fixed="public"/>

                                   </xs:extension>

                               </xs:simpleContent>

                           </xs:complexType>

                      </xs:element>

                       <xs:element name="BirhtDate" minOccurs="0">

                           <xs:complexType>

                               <xs:simpleContent>

                                   <xs:extension base="birthdateType">

                                       <xs:attribute name="Type" use="required" fixed="private"/>

                                   </xs:extension>

                               </xs:simpleContent>

                           </xs:complexType>

                       </xs:element>

                   </xs:sequence>

               </xs:complexType>

           </xs:element>

           <xs:simpleType name="nameType">

               <xs:restriction base="xs:string">

                   <xs:maxLength value="120"/>

               </xs:restriction>

           </xs:simpleType>


           <xs:simpleType name="lastnameType">

               <xs:restriction base="xs:string">

                   <xs:maxLength value="120"/>

               </xs:restriction>

           </xs:simpleType>


           <xs:simpleType name="birthdateType">

               <xs:restriction base="xs:date"/>

           </xs:simpleType>


           <!-- Definición para la respuesta -->

           <xs:element name="EmployeesResponse">

               <xs:complexType>

                   <xs:sequence>

                       <xs:element name="response" type="xs:string"/>

                   </xs:sequence>

               </xs:complexType>

           </xs:element>


       </xs:schema>

   </wsdl:types>


   <!-- ================== -->

   <!-- Mensajes -->

   <!-- ================== -->

   <wsdl:message name="EmployeesRequest">

       <wsdl:part name="parameters" element="tns:Employees"/>

   </wsdl:message>


   <wsdl:message name="EmployeesResponseMessage">

       <wsdl:part name="parameters" element="tns:EmployeesResponse"/>

   </wsdl:message>


   <!-- ================== -->

   <!-- Operación -->

   <!-- ================== -->

   <wsdl:portType name="EmployeesPortType">

       <wsdl:operation name="CreateEmployee">

           <wsdl:input message="tns:EmployeesRequest"/>

           <wsdl:output message="tns:EmployeesResponseMessage"/>

       </wsdl:operation>

   </wsdl:portType>


   <!-- ================== -->

   <!-- Binding -->

   <!-- ================== -->

   <wsdl:binding name="EmployeesBinding" type="tns:EmployeesPortType">

       <soap:binding style="document"

                     transport="http://schemas.xmlsoap.org/soap/http"/>

       <wsdl:operation name="CreateEmployee">

           <soap:operation soapAction="http://www.fixprotocol.org/FIXML-5-0/CreateEmployee"/>

           <wsdl:input>

               <soap:body use="literal"/>

           </wsdl:input>

           <wsdl:output>

               <soap:body use="literal"/>

           </wsdl:output>

       </wsdl:operation>

   </wsdl:binding>


   <!-- ================== -->

   <!-- Servicio -->

   <!-- ================== -->

   <wsdl:service name="EmployeesService">

       <wsdl:port name="EmployeesPort" binding="tns:EmployeesBinding">

           <soap:address location="http://localhost:8080/employees"/>

       </wsdl:port>

   </wsdl:service>

</wsdl:definitions>


Conclusión

De esta forma Vor-Tex permite exponer métodos de tipo SOAP/xml bajo los estándares definidos para ese tipo de métodos, facilitando la integración entre sistemas. 

    • Related Articles

    • Configuración general de la cuenta

      Resumen Puedes configurar información general de la cuenta en la sección Configuraciones. Información de la cuenta En esta sección puedes configurar información contextual para el equipo de Vor-Tex: El nombre de la organización. La dirección del ...
    • Orígenes de datos desde servicios web SOAP/xml

      Resumen El conector a servicios web SOAP/xml ofrece todas las capacidades necesarias para conectarse a este tipo de orígenes. Esta opción permite recolectar datos desde servicios web  SOAP/xml o configurar acciones de escritura, para luego crear ...
    • Orígenes de datos desde Bases de datos

      Resumen El conector a Bases de datos ofrece todas las capacidades necesarias para conectarse a este tipo de orígenes. Esta opción permite recolectar datos desde diferentes tipos de bases de datos o configurar acciones de escritura, para luego crear ...
    • Orígenes de datos desde servicios web REST/json

      Resumen El conector a servicios web REST/JSON ofrece todas las capacidades necesarias para conectarse a este tipo de orígenes. Esta opción permite recolectar datos desde servicios web REST/JSON o configurar acciones de escritura, para luego crear ...
    • Qué es una vista de datos

      Resumen La plataforma no requiere de un proceso ETL off-line para extraer los datos desde los orígenes, sino que asociadas a la vista se encuentran un conjunto de reglas que el motor de datos interpreta para consultar la fuente a demanda o ...