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é-
requisitosrequisito
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:
- 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;
- Saber criar um bloco de programação, caso haja dúvidas acesse o link bloco de programação;
- Saber utilizar as permissões de segurança da IDE, caso haja dúvidas acesse o link (Criar novo projeto) permissão de segurança.
Introdução
Aqui Neste tutorial veremos como ativar o serviço de SOAP e gerar o arquivo WSDL, permitindo que outras aplicação aplicações utilizem esse serviço. Ao fim do tutorial criaremos um segundo projeto que requisitará a soma de 2 valores e receberá o resultado para alimentar o campo Resultado, (Figura 1)
Image Removed
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, 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 que o campo Endereço SOAP (2) possa ser usado.
Image Removed
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)
Image Removed
Figura 2.3 - Permissões de segurança das configurações do bloco de programação servidorNo 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 Executar, Permitir 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 n1 e n2 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 Permissões de segurança afetam diretamente o serviço SOAP, por isso, precisamos é preciso liberar o caminho que será gerado para o serviço. Acesse a funcionalidade Permissão de SegurançaEntão, no menu Projeto e do sistema da IDE, acesse Projeto > Permissão de Segurança e clique no botão Nova Permissão (item 1 editar (seta da Figura 3.1).
Image Removed
Figura 3.1 - Acesso a funcionalidade Permissão de segurança do Cronapp
Na janela de permissão, altere os campos: Tipo, selecionepermitAll
; Caminho insira "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/**
ALL
. (Figura 3.2)
(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
Salve e rode novamente o sistema, caso esteja em execução.
Image Removed
Figura 3.2 - Liberando acesso a tudo dentro de services
Obtendo o WSDL
Rode o projeto e execute-o, abra o navegador e Ao abrir o navegador, 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.
Image Removed
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 | ||
---|---|---|
| ||
É imprescindível a utilização da barra final ( |
Image Added
Figura 3Figura 4.1 - Lista de serviços SOAP SOAP
Clique Ao clicar no link do serviço Calculo
para ser encaminhado do bloco (no caso do tutorial, o SOAPService), será encaminhado para o endpoint do WSDL : https://app-19-33-45754.ide.cronapp.io/services/Calculo?wsdl (exemplo do tutorial).(destaque da Figura 3.2).
Image Added
Figura 3.2 - Endpoint do WSDL do bloco criado
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://CalculoBloco" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="CalculoServiceBlocoService" targetNamespacetargetnamespace="http://CalculoBloco"> <wsdl:types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://CalculoBloco" attributeFormDefaultattributeformdefault="unqualified" elementFormDefaultelementformdefault="unqualified" targetNamespacetargetnamespace="http://CalculoBloco"> <xs:element name="Soma" type="tns:Soma" /> <xs:element name="SomaResponse" type="tns:SomaResponse" /> <xs:complexTypecomplextype name="Soma"> <xs:sequence> <xs:element minOccursminoccurs="0" name="arg0" type="xs:string" /> <xs:element minOccursminoccurs="0" name="arg1" type="xs:string" /> </xs:sequence> </xs:complexType> complextype> <xs:complexTypecomplextype name="SomaResponse"> <xs:sequence> <xs:element minOccursminoccurs="0" name="return" type="xs:string" /> </xs:sequence> </xs:complexType> complextype> <xs:element name="Exception" type="tns:Exception" /> <xs:complexTypecomplextype name="Exception"> <xs:sequence> <xs:element minOccursminoccurs="0" name="message" type="xs:string" /> </xs:sequence> </xs:complexType> 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:portTypeporttype name="CalculoBloco"> <wsdl:operation name="Soma"> <wsdl:input message="tns:Soma" name="Soma"></wsdl:input>> </wsdl:input> <wsdl:output message="tns:SomaResponse" name="SomaResponse"></wsdl:output>> </wsdl:output> <wsdl:fault message="tns:Exception" name="Exception"></wsdl:fault>> </wsdl:operation>fault> </wsdl:portType>operation> </wsdl:porttype> <wsdl:binding name="CalculoServiceSoapBindingBlocoServiceSoapBinding" type="tns:CalculoBloco"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="Soma"> <soap:operation soapActionsoapaction="" 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="CalculoServiceBlocoService"> <wsdl:port binding="tns:CalculoServiceSoapBindingBlocoServiceSoapBinding" name="CalculoPortBlocoPort"> <soap:address location="https://app-1928-33228-4575449170.ide.cronapp.io/services/CalculoBloco" /> </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.
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "somaResponseSomaResponse":{ "_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).
Image Removed
Figura 5.1 - Bloco que faz a requisição ao projeto que provê o serviço