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 mobile ou web criado, caso haja dúvidas 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 permissão de segurança.

Introdução

Neste tutorial veremos como ativar o serviço de 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).


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 (3 da Figura 1.2). Por fim, salve tudo.


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).


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 da Figura 1.4).


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.


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/


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).


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://SOAPService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="SOAPServiceService" targetNamespace="http://SOAPService">
	<wsdl:types>
		<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://SOAPService" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://SOAPService">
			<xs:element name="Disponibilizando" type="tns:Disponibilizando"/>
			<xs:element name="DisponibilizandoResponse" type="tns:DisponibilizandoResponse"/>
			<xs:complexType name="Disponibilizando">
				<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="DisponibilizandoResponse">
				<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="DisponibilizandoResponse">
		<wsdl:part element="tns:DisponibilizandoResponse" name="parameters"> </wsdl:part>
	</wsdl:message>
	<wsdl:message name="Disponibilizando">
		<wsdl:part element="tns:Disponibilizando" name="parameters"> </wsdl:part>
	</wsdl:message>
	<wsdl:message name="Exception">
		<wsdl:part element="tns:Exception" name="Exception"> </wsdl:part>
	</wsdl:message>
	<wsdl:portType name="SOAPService">
		<wsdl:operation name="Disponibilizando">
			<wsdl:input message="tns:Disponibilizando" name="Disponibilizando"> </wsdl:input>
			<wsdl:output message="tns:DisponibilizandoResponse" name="DisponibilizandoResponse"> </wsdl:output>
			<wsdl:fault message="tns:Exception" name="Exception"> </wsdl:fault>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="SOAPServiceServiceSoapBinding" type="tns:SOAPService">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="Disponibilizando">
			<soap:operation soapAction="" style="document"/>
			<wsdl:input name="Disponibilizando">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="DisponibilizandoResponse">
				<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="SOAPServiceService">
		<wsdl:port binding="tns:SOAPServiceServiceSoapBinding" name="SOAPServicePort">
			<soap:address location="https://app-30-147-11440.ide.cronapp.io/services/SOAPService"/>
		</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
{
   "DisponibilizandoResponse":{
      "_returnSpecified":true,
      "_return":"25"
   }
}

Nesta página

Índice


Outras informações:

Web Services