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.

Pré-requisitos

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 ou web-mobile criado. Caso haja dúvidas em relação a como criar esse tipo de projeto acesse o link (Criar novo projeto).

Visão Geral

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 Ao fim desse tutorial, será possível utilizar o bloco criado em outra aplicação Cronapp e exibir o resultado retornado pelo bloco.do tutorial testaremos em outro projeto Cronapp, onde passaremos 2 valores e ele retornará o resultado da soma. (Figura 1)


Image Modified

Figura 1 - Bloco(servidor) utilizado no exemploCálculo realizado via serviço SOAP

Passos

Ativando SOAP no bloco

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 gerar que o campo Endereço SOAP (2) possa ser usado.


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

Ativando permissão de acesso

Assim como um WebService REST,


Além disso, ative 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. 

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)

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 Modified

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

das configurações do bloco de programação servidor

Permissão de acesso ao serviço

As permissões de segurança afetam diretamente o serviço SOAP, por isso, precisamos liberar o caminho que será gerado para o serviço. Acesse a funcionalidade Permissão de Segurança, no menu Projeto e clique no botão Nova Permissão (item 1 da Figura 3.1).

Image Added

Figura 3.1 - Acesso a funcionalidade Permissão de segurança do Cronapp


Na janela de permissão, altere os campos: Tipo, selecione permitAllCaminho insira "/services/**" (sem aspas), liberando todos os serviços SOAP gerados por esse sistema, e por fim, no  campo Método selecione ALL. (Figura 3.2)

Salve e rode novamente o sistema, caso esteja em execução.


Image Added

Figura 3.2 - Liberando acesso a tudo dentro de services

Obtendo o WSDL

Rode o projeto e execute-o, abra o navegador e adicione após o endereço gerado "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 /services/**", ficando assim: https://<url da aplicação>/services/ para abrir a lista dos serviços SOAP disponíveis em sua aplicação(figura 2.5).. O sistema irá exibir todos os serviços SOAP do sistema.

Image Modified

Figura 24.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

1 - Lista de serviços SOAP 


Clique no link do serviço Calculo para ser encaminhado para o endpoint do WSDL: https://app-19-33-45754.ide.cronapp.io/services/Calculo?wsdl (exemplo do tutorial).

Bloco de código
languagexml
firstline1
titleXML do serviço SOAP
collapsetrue
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://Calculo" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="CalculoService" targetNamespace="http://Calculo">
    <wsdl:types>
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://Calculo" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://Calculo">
            <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="Calculo">
        <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="CalculoServiceSoapBinding" type="tns:Calculo">
        <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="CalculoService">
        <wsdl:port binding="tns:CalculoServiceSoapBinding" name="CalculoPort">
            <soap:address location="https://app-19-33-45754.ide.cronapp.io/services/Calculo" />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>


Testando o Serviço 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.