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 novo projeto).
Visão Geral
- 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 permissão de segurança.
Introdução
Neste tutorial 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).
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 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.
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