Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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.

Neste tutorial veremos como ativar o serviço de SOAP e gerar o arquivo WSDL, permitindo que outras aplicações utilizem esse serviço.

Pré-

...

requisito

Antes de começar é necessário ter certeza de que se possui um ambiente preparado para a realização do exemplo

...

:

  1. Projeto do tipo

...

  1. mobile ou web

...

  1. criado

...

  1. , caso haja dúvidas

...

  1. de como criar esse tipo de projeto acesse o link criar projeto;
  2. Saber criar um bloco de programação, caso haja dúvidas acesse o link bloco de programação;
  3. Saber utilizar as permissões de segurança da IDE, caso haja dúvidas acesse o link

...

...

Introdução

...

Neste tutorial veremos como ativar o serviço de SOAP

...

Passos

Ativando SOAP no bloco de programação

Para ativar esse serviço num bloco será necessário, primeiramente, criar um bloco do tipo servidor. Caso haja alguma dúvida em relação a como criar um bloco do tipo servidor clique aqui. Nesse exemplo, utilizaremos um bloco para exibir uma notificação contendo a palavra "Olá".

Image Removed

Figura 1 - Bloco(servidor) utilizado no exemplo

Image Removed

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

  • Após criar o bloco servidor, clique no ícone mostrado na figura 1.2 para abrir as configurações do bloco.

Image RemovedFigura 1.3 - Configurações do bloco(servidor)

  • Em seguida, marque a opção "Disponibilizar como SOAP" para ativar o serviço no bloco e depois clique em "Salvar".
  • Ao rodar o projeto, já é possível acessar o bloco disponível no serviço, para isso acesse o link https://<url da aplicação>/services/ para abrir a lista de serviços soap disponíveis (figura 1.4).

Image Removed

Figura 1.4 - Lista de serviços SOAP disponíveis

Opções de segurança

Assim como um WebService REST, as permissões de segurança afetam diretamente o serviço. Um WebService  SOAP é trafegado via POST, logo a permissão "Permite Inserir" é a que deve ser usada para ele. 

  • Acesse novamente as configurações do bloco (figura 1.2).

Image Removed

Figura 2 - Configurações de segurança do bloco(servidor)

  • Clique nos "..." indicados na figura 2 para abrir as configurações de segurança.

Image RemovedFigura 2.1 - Configurações de segurança do bloco(servidor)

  • No passo 1, selecione os "..." da opção "Permitir Inserir". Isso abrirá a janela em que definiremos o tipo de permissão utilizada no evento inserir do serviço.
  • No passo 2, selecione a permissão desejada para o seu bloco e após isso clique em "Ok". Novamente, clique em "Ok" e por fim clique no botão "Salvar" para confirmar as alterações.

Image RemovedFigura 2.2 - Bloco consumido em outra aplicação cronapp via SOAP

...

e gerar o arquivo WSDL, permitindo que outras aplicações utilizem esse serviço. No primeiro projeto, iremos criar um bloco de programação que estará habilitado para disponibilizar o serviço SOAP.

Configurando bloco servidor

A funcionalidade de SOAP está disponível somente em bloco de programação do tipo servidor, então crie um bloco servidor e informe tanto um nome para o arquivo quanto para a função (Figura 1.1).


Image Added

Figura 1.1 - Criando nova função

Propriedades do bloco

Após criar a função, clique na engrenagem Configurações dos tipos de regras (seta da Figura 1.2) para abrir a janela de Propriedades do bloco de programação (1 da Figura 1.2). Nessa janela, habilite a opção Disponibilizar como SOAP para disponibilizar o campo Endereço SOAP (2 da Figura 1.2). Além disso, abra a janela do campo de Segurança (destaque 3 da Figura 1.2) e selecione a opção Todos para os campos Permitir ExecutarPermitir Obter e Permitir Editar. Por fim, salve tudo.


Image Added

Figura 1.2 - Habilitando SOAP no bloco

Criando função

Ao voltar para área de edição do bloco, clique sobre a engrenagem do bloco Função (destaque da Figura 1.3) para abrir o popup de adição de parâmetros (1 da Figura 1.3), arrasta dois blocos até entradas (seta da Figura 1.3) e renomeie o campo nome de entrada de um para n1 (sigla para identificar o número 1) e o outro para n2 (sigla para identificar o número 2). Os parâmetros adicionados ficarão disponíveis no menu lateral Variáveis (2 da Figura 1.3).


Image Added

Figura 1.3 - Adicionando parâmetros de entrada à função


Arraste o bloco operações aritméticas, que se encontra na categoria Matemática (1 da Figura 1.4), e o insira no retorno da função (2 da Figura 1.4). Deixa a operação como soma e insira as variáveis n1n2 nos espaços vazios do bloco (destaque 2 da Figura 1.4).


Image Added

Figura 1.4 - Adicionando bloco ao retorno da função


Por fim, salve o bloco.

Permissão de acesso ao serviço

As Permissões de segurança afetam diretamente o serviço SOAP, por isso, é preciso liberar o caminho que será gerado para o serviço. Então, no menu do sistema da IDE, acesse ProjetoPermissão de Segurança e clique no botão editar (seta da Figura 2) do permissionável Public. Nisso, será aberta a janela de edição do permissionável, então clique na aba Visões (1 da Figura 2) e no campo de pesquisa, insira o caminho /services/** (2 da Figura 2) e clique no botão de editar (seta da Figura 2) dessa visão e desmarque a opção permitir DELETE (destaque da Figura 2). Por fim, salve todas as janelas abertas e execute o projeto.


Image Added

Figura 2 - Configurando acesso na permissão de segurança

Obtendo o WSDL

Ao abrir o navegador, adicione após o endereço /services/** para abrir a janela de Service List que exibe todos os serviços SOAP do sistema. O endereço ficará assim: <Domínio>/services/

Nota
titleImportante

É imprescindível a utilização da barra final ( / ) após a palavra services, do contrário o link WSDL irá redirecionar para um erro. Isso acontece por causa de um erro presente na biblioteca CFX, que é de terceiros, por tanto, o Cronapp, não possui controle sobre ela.


Image Added

Figura 3.1 - Lista de serviços SOAP


Ao clicar no link do serviço do bloco (no caso do tutorial, o SOAPService), será encaminhado para o endpoint do WSDL (destaque da Figura 3.2).


Image Added

Figura 3.2 - Endpoint do WSDL do bloco criado


Bloco de código
languagexml
firstline1
titleExemplo de XML gerado pelo serviço SOAP
linenumberstrue
collapsetrue
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://Bloco" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="BlocoService" targetnamespace="http://Bloco"> 
  <wsdl:types> 
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://Bloco" attributeformdefault="unqualified" elementformdefault="unqualified" targetnamespace="http://Bloco"> 
      <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="Bloco"> 
    <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="BlocoServiceSoapBinding" type="tns:Bloco"> 
    <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="BlocoService"> 
    <wsdl:port binding="tns:BlocoServiceSoapBinding" name="BlocoPort"> 
      <soap:address location="https://app-28-228-49170.ide.cronapp.io/services/Bloco" /> 
    </wsdl:port> 
  </wsdl:service> 
</wsdl:definitions>

Consumir o serviço SOAP

Após 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.

Bloco de código
languagejava
firstline1
titleJSON de retorno do serviço SOAP
linenumberstrue
{
   "SomaResponse":{
      "_returnSpecified":true,
      "_return":"25"
   }
}

Nesta página

Índice


Outras informações:

Web Services