Page tree
Skip to end of metadata
Go to start of metadata

O SOAP (Simple Object Access Protocol) é um protocolo utilizado em trocas de informação entre sistemas, ou seja, um formato padronizado para o envio de estruturas entre diferentes serviços. Esse padrão permite a comunicação entre plataformas totalmente diferentes, como por exemplo, C++, Java e Ruby sem muito trabalho. No Cronapp, é possível utilizar esse serviço de forma low-code nos blocos de programação, fazendo com que o bloco criado possa ser utilizado em outra aplicação de forma simples, além de agilizar ainda mais o desenvolvimento dos projetos.

Pré-requisitos

Antes de começar é necessário ter certeza de que se possui um ambiente preparado para a realização do exemplo. Abaixo estão os principais requisitos necessários.

Requisitos:

  1. Projeto do tipo web ou web-mobile criado. Caso haja dúvidas em relação a como criar esse tipo de projeto acesse o link (Criar novo projeto).

Visão Geral

Aqui veremos como ativar o serviço de SOAP e gerar o arquivo WSDL, permitindo que outras aplicações utilizem esse serviço. Ao fim do tutorial criaremos um segundo projeto que requisitará o serviço SOAP disponibilizado pelo primeiro projeto, alimentando o campo Resultado (Figura 1).


Figura 1 - Cálculo realizado via serviço SOAP

Passos

Configuração do Bloco de programação

Para ativar esse serviço em um bloco será necessário criar um bloco do tipo servidor, essa funcionalidade só está disponíveis em blocos de programação do tipo servidor. Caso haja alguma dúvida em relação a como criar um bloco de programação, clique aqui

Nesse exemplo, utilizaremos um bloco de programação para retornar a adição de 2 números via SOAP. Após desenvolver o bloco de programação (função "Soma" da figura 2.1), abra a janela de propriedades do Bloco de programação e ative a opção Disponibilizar como SOAP (item 1 da Figura 2.1) para que o campo Endereço SOAP (item 2) possa ser usado.


Figura 2.1 - Opção de configurar bloco(servidor)


Além disso, ative as permissões do bloco de programação no campo Segurança, selecionando a opção todos nos campos Permitir Executar, Permitir Obter e Permitir Inserir. (Figura 2.2)

Figura 2.3 - Permissões de segurança das configurações do bloco de programação servidor

Permissão de acesso ao serviço

As permissões de segurança afetam diretamente o serviço SOAP, por isso, precisamos liberar o caminho que será gerado para o serviço. Acesse a funcionalidade Permissão de Segurança, no menu Projeto e clique no botão Nova Permissão (item 1 da Figura 3.1).

Figura 3.1 - Acesso a funcionalidade Permissão de segurança do Cronapp


Na janela de permissão, altere os campos: Tipo, selecione permitAllCaminho insira "/services/**" (sem aspas), liberando todos os serviços SOAP gerados por esse sistema, e por fim, no  campo Método selecione ALL. (Figura 3.2)

Salve e rode novamente o sistema, caso esteja em execução.


Figura 3.2 - Liberando acesso a tudo dentro de services

Obtendo o WSDL

Rode o projeto e execute-o, abra o navegador e adicione após o endereço gerado "/services/**", ficando assim: https://<url da aplicação>/services/. A página irá exibir todos os serviços SOAP do sistema.

Figura 4.1 - Lista de serviços SOAP 


Clique no link do serviço Calculo para ser encaminhado para o endpoint do WSDL: https://app-19-33-45754.ide.cronapp.io/services/Calculo?wsdl (exemplo do tutorial).

Exemplo de XML gerado pelo serviço SOAP
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://Calculo" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="CalculoService" targetNamespace="http://Calculo">
    <wsdl:types>
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://Calculo" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://Calculo">
            <xs:element name="Soma" type="tns:Soma" />
            <xs:element name="SomaResponse" type="tns:SomaResponse" />
            <xs:complexType name="Soma">
                <xs:sequence>
                    <xs:element minOccurs="0" name="arg0" type="xs:string" />
                    <xs:element minOccurs="0" name="arg1" type="xs:string" />
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="SomaResponse">
                <xs:sequence>
                    <xs:element minOccurs="0" name="return" type="xs:string" />
                </xs:sequence>
            </xs:complexType>
            <xs:element name="Exception" type="tns:Exception" />
            <xs:complexType name="Exception">
                <xs:sequence>
                    <xs:element minOccurs="0" name="message" type="xs:string" />
                </xs:sequence>
            </xs:complexType>
        </xs:schema>
    </wsdl:types>
    <wsdl:message name="Exception">
        <wsdl:part element="tns:Exception" name="Exception"></wsdl:part>
    </wsdl:message>
    <wsdl:message name="Soma">
        <wsdl:part element="tns:Soma" name="parameters"></wsdl:part>
    </wsdl:message>
    <wsdl:message name="SomaResponse">
        <wsdl:part element="tns:SomaResponse" name="parameters"></wsdl:part>
    </wsdl:message>
    <wsdl:portType name="Calculo">
        <wsdl:operation name="Soma">
            <wsdl:input message="tns:Soma" name="Soma"></wsdl:input>
            <wsdl:output message="tns:SomaResponse" name="SomaResponse"></wsdl:output>
            <wsdl:fault message="tns:Exception" name="Exception"></wsdl:fault>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="CalculoServiceSoapBinding" type="tns:Calculo">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="Soma">
            <soap:operation soapAction="" style="document" />
            <wsdl:input name="Soma">
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output name="SomaResponse">
                <soap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="Exception">
                <soap:fault name="Exception" use="literal" />
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="CalculoService">
        <wsdl:port binding="tns:CalculoServiceSoapBinding" name="CalculoPort">
            <soap:address location="https://app-19-33-45754.ide.cronapp.io/services/Calculo" />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

Consumir o serviço SOAP

Após o a requisição do cliente consumidor, o provedor do serviço retornará sua resposta em formato JSON, como podemos ver abaixo. Por isso, será necessário obter o campo "_return" do objeto.

JSON de retorno do serviço SOAP
{
   "somaResponse":{
      "_returnSpecified":true,
      "_return":"25"
   }
}

Teste do serviço SOAP em outro projeto

Usaremos o próprio Cronapp para testar o serviço, Criamos um novo projeto e importamos o serviço SOAP que geramos nos passos anteriores. Para mais detalhes de como importar e configurar um serviço SOAP de terceiros, acesse o tutorial Consumindo Web Service SOAP.

Para esse teste, usamos o bloco de programação soma, gerado automaticamente pelo Cronapp após importar o serviço SOAP. O bloco soma recebe 2 parâmetros obtidos dos campos de entrada de texto "Primeiro número" e "Segundo número" (Figura 1) que estão em uma página do Projeto de teste.

O bloco soma faz uma requisição ao projeto que provê o serviço e retorna o resultado em formato JSON, como explicado no tópico anterior, por isso estamos usando o bloco Obter campo do Json. Ao final, campo entrada de texto Resultado (Figura 1) será alimentado com o retorno do serviço (Figura 1). 

Figura 5.1 - Bloco que faz a requisição ao projeto que provê o serviço


Nessa página

  • No labels