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é-

requisitos

requisito

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 mobile ou web -mobile criado. Caso , caso haja dúvidas em relação a 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 (Criar novo projeto).

Visão Geral

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

Introdução

Neste tutorial Aqui veremos como ativar o serviço de SOAP nos blocos de programação, dessa forma disponibilizando o bloco para que possa ser utilizado em outra aplicação. No fim desse tutorial, será possível utilizar o bloco criado em outra aplicação Cronapp e exibir o resultado retornado pelo bloco.

Image Removed

Figura 1 - Bloco(servidor) utilizado no exemplo

Passos

Ativando SOAP no bloco de programação

Para ativar esse serviço em um bloco será necessário, primeiramente, criar um bloco do tipo servidor, só é possível ativar essa funcionalidade 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, 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 gerar o Endereço SOAP (2).

Image Removed

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

Ativando permissão de acesso

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. 

Nessa etapa, devemos marcar a opção "Disponibilizar como SOAP" para que nosso bloco possa ser disponibilizado como um web services.  O campo "Endereço SOAP" exibe o local em que  o web service do bloco estará disponível ao ser gerado. Após habilitar a opção clique em "Salvar" e posteriormente salve o bloco para confirmar as alterações.

Image RemovedFigura 2.2 - Acessando as permissões de segurança

Agora é necessário adicionar uma permissão para acessar a lista dos serviços SOAP disponíveis e para acessar a URL necessária para consumir o web service em outra aplicação, essa URL é chamada de WSDL. Para isso vá em projeto e selecione a opção "Permissão de segurança".

Image Removed

Figura 2.3 - Permissões de segurança

Nesse passo vamos adicionar a lista dos serviços soap como público para que possamos acessar a lista e obter o WSDL referente ao nosso bloco. Na aba Permissionáveis clique no editar referente a opção Public para abrir a janela contendo a lista das URL's que não possuem restrição de acesso, após isso vá até a aba visões clique no botão "Novo" para adicionar a lista de services como público.

Image RemovedFigura 2.4 - Permissões de segurança

Aqui, no passo 1 vamos digitar /services/** que é a url que contém a lista dos web services soap disponíveis na aplicação. Abaixo é possível escolher o tipo de permissão que gostaríamos de dar ao usuário que acessa essa página, em nosso caso não vamos alterar nada, entretanto caso não queira alguma dessas permissões basta desmarca-la e em seguida clicar em "Salvar" correspondente a página atual e as páginas anteriores. Para confirmar se o bloco foi disponibilizado como SOAP, rode o projeto e acesse o link https://<url da aplicação>/services/ para abrir a lista dos serviços SOAP disponíveis em sua aplicação(figura 2.5).

Image Removed

Figura 2.5 - Bloco gerado disponível na lista de serviços 

Image Removed

Figura 2.6 - Xml do bloco(servidor)

Opções de segurança

Image Removed

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

Acesse novamente as configurações do bloco (figura 2) e acesse os "..." referentes ao campo segurança. Em seguida, no passo 1, acesse os "..." referentes ao campo permitir inserir, essa propriedade define qual o tipo de permissão é usado para acessar o web service e após isso, no passo 2, selecione o tipo de permissão que se adéqua ao seu projeto. Autenticado permite que só usuários logados possam interagir com o serviço, administradores permite com que apenas usuários com perfil de administrador possam interagir com o serviço, todos permite com que qualquer usuário(inclusive os que não efetuaram o login) possa interagir com o serviço e nenhum faz com que nada consiga interagir com o serviço. Após isso, clique em "Ok" para confirmar o tipo de permissão(passo 2), depois clique em "Ok" para salvar a alteração das permissões da ação(passo 1), clique em "Salvar" para confirmar as configurações atuais e por fim salve o bloco.

Image Removed

Figura 3.2 - Bloco consumido em outra aplicação cronapp via SOAP

Aqui é possível verificar o bloco gerado nesse exemplo, disponível em outra aplicação cronapp por meio do serviço SOAP(Figura 3.2). Vale ressaltar que a categoria recebe o nome do bloco criado no projeto anterior e o bloco leva o nome da função desse mesmo bloco gerado no projeto anterior. Para aprender mais sobre o consumo de web services soap dentro do cronapp, clique aqui.

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